Вопрос или проблема
У меня есть модель сегментации, обученная на 1000 изображениях, которая может предсказывать 4 класса (собака, кошка, мышь, слон). Я хотел бы расширить модель, добавив 5-й класс (лошадь).
Лошади присутствуют на 1000 изображениях, использованных для первой модели, но не имеют меток. Идеально было бы не возвращаться к этим 1000 изображениям и не добавлять метки лошадь
. Какой эффективный способ расширить модель и постепенно добавлять новые классы, не переатрибутируя все ранее использованные изображения для нового класса или не маркируя новые изображения для всех 5 классов?
Скажем, у вас теперь есть новые данные с 5 метками. В теории нет ничего плохого в том, чтобы добавить эти данные и переобучить модель.
Но будьте осторожны с артефактами обучения. Если у вас есть лошади с метками и некоторые без, ваша модель может запутаться и выучить странные причины, почему она должна маркировать одних лошадей, а других нет.
Я также не думаю, что переатрибуция старых данных будет такой проблемой. Вы можете:
- Маркировать новые данные с лошадями
- Обучить новую модель только на этих данных, а не на старых
- Применить эту модель к старым данным и посмотреть, к каким результатам она приведет. Вы можете повторно использовать прогнозы в качестве меток.
- Повторять процесс несколько раз, пока вы не переатрибутируете большую часть ваших данных.
Ответ или решение
Расширение модели машинного обучения (ML) новыми классами — это задача, с которой часто сталкиваются специалисты в области искусственного интеллекта. В вашем случае, вы хотите добавить новый класс (лошадь) к уже обученной модели сегментации, которая в настоящее время способна различать четыре класса (собака, кошка, мышь и слон), не прибегая к повторной разметке всех 1000 существующих изображений. Ниже представлены несколько методов для достижения вашей цели.
1. Использование полуреализованного обучения
Полуреализованное обучение позволяет использовать как размеченные, так и неразмеченные данные для улучшения обучения модели. В вашем случае вы можете:
- Обучить новую модель на размеченных данных (только на новых изображениях, где присутствуют лошади).
- С применением этой модели применить предсказания к старым изображениям. Вы можете оценить, какие изображения были ошибочно размечены как другие классы, и использовать предсказания для автоматической разметки.
- Комбинировать размеченные и результирующие данные для повторного обучения модели, что может увеличить ее точность.
2. Трансферное обучение
Трансферное обучение позволяет использовать уже обученные модели для решения новых задач. Это может быть реализовано следующим образом:
- Возьмите вашу существующую модель и добавьте новый класс. Используйте слои модели, которые вы уже обучили, и добавьте новый выходной слой для нового класса (лошади).
- Обучите новую модель на размеченных данных с классом "лошадь", при этом замораживая уже обученные слои, чтобы избежать «засорения» модели старыми данными.
- Постепенно разблокируйте слои по мере необходимости, чтобы модель могла адаптироваться к новым данным.
3. Использование аугментации данных
Аугментация данных позволяет вам расширить набор обучающих данных искусственным образом, что может быть полезно, если у вас ограниченное количество размеченных изображений для нового класса:
- Создавайте новые изображения с классом "лошадь" путем применения методов аугментации (вращение, изменение яркости, обрезка и пр.).
- Объедините созданные изображения с уже размеченными данными, чтобы создать более разнообразный обучающий набор.
4. Обучение с учетом класса
Вы можете создать модель, которая будет учитывать наличие нового класса только для новых данных, избегая при этом смешивания данных из старых классов. Это позволяет избежать путаницы между имеющимися и новыми классами:
- Обучите модель с фокусом на новых данных и соответствующим образом настройте параметры обучения, чтобы учесть разницу в объеме размеченных данных.
5. Итеративный процесс разметки
Если смешивание данных невозможно избежать, вы можете использовать итеративный процесс разметки:
- Обучите новую модель на размеченных изображениях с классом "лошадь".
- Примените модель к старым изображениям, чтобы получить предварительные метки для лошадей.
- Проверьте и отредактируйте полученные метки вручную для повышения точности.
- Обучите модель на обновленных данных, чтобы она постепенно стала лучше в распознавании нового класса.
Заключение
Вышеописанные методы помогут вам эффективно расширить вашу модель машинного обучения с минимальными затратами времени и ресурсов. Ключевым моментом здесь является умение использовать существующую информацию и создавать дополнительные метки, избегая повторной разметки уже имеющихся данных. Это не только значительно экономит время, но и улучшает качество вашей модели, позволяя ей лучше адаптироваться к новым условиям.