Prepare your data
Датасеты — то, на чем держится весь DL. Многие компании сохраняют их в тайне и не выкладывают в открытый доступ. Подбор архитектур, лоссов и оптимизаторов не имеет смысла без хороших данных для обучения. Качество датасета складывается из нескольких основных критериев:
- объёма и разнообразия;
- баланса классов;
- соответствия целевому домену;
- чистоты разметки.
Разберем каждый пункт по отдельности.
Объём и разнообразие
Чем больше реальных примеров модель увидит во время обучения, тем выше ее обобщающая способность: она с большей вероятностью адекватно отработает на новых данных. С ростом количества уникальных примеров снижается риск переобучения — адаптации под обучающую выборку.
Но! Большой набор данных не всегда приводит к большей точности из-за потенциального шума, выбросов и нерелевантной информации.
Стоит учитывать: объём складывается из разнообразия. Например, при кадрах из одного и того же видео с разницей в 0.1 сек модель получит мало новой информации, только дублирующее изображение.
Больше — не значит лучше, но количество разнообразных данных важно.
Баланс классов
При существенном дисбалансе в датасете (1к примеров одного класса и 100к примеров другого) модель будет переобучаться под класс с большим количеством примеров (то есть под второй) в случае, когда классы одинаково сложны. Это можно исправить семплированием, заданием веса в функции потерь каждому классу, увеличением количества аугментаций для первого класса, либо использованием Focal Loss (о нем мы писали в нашей статье). Но мы ничего не сможем сделать, если захотим обучить модель на классификацию при наличии в датасете всего 2 кошек и 98 собак (тут придется добирать примеры в первый класс).
Важно соблюдать баланс и наполненность классов.
Домен
Для более понятного объяснения давайте обратимся к примеру.
Допустим, мы обучили сетку на детекцию людей в офисе (см. Рисунок 1), но для обучения использовали датасет для детекции пешеходов (см. Рисунок 2). Как можно заметить, ракурс фотографий и освещение значительно отличаются, следовательно, модель будет работать на целевом домене хуже, чем на обучающем.
Нужно стремиться к тому, чтобы обучающий датасет (source domain) был максимально приближен к данным, на которых будет использоваться модель (target domain).
Чистота разметки
Чем чище датасет, тем быстрее и лучше обучится модель. Наличие выбросов уводит траекторию градиентного спуска с оптимальной, что замедляет процесс обучения и ухудшает сходимость. К тому же валидация на шумных данных не отражает действительных метрик.
На рисунке 3 представлен пример плохой разметки детекции транспорта. Мы видим неточные боксы, неразмеченные автомобили — все это будет вводить негативный шум в обучающий процесс.
Как понять, что датасет содержит грязные лейблы? Можно вручную просмотреть все изображения и разметку к ним, выбросить или переразметить плохие семплы (или воспользоваться label smoothing, если не уверены в чистоте датасета). Но когда размер датасета переваливает за несколько тысяч, мануальный перебор становится слишком трудоемким. Рассмотрим подход, позволяющий выявить плохие примеры в разметке.
Hard negative mining — подход, предназначенный для поиска сложных примеров в данных. Он поможет выявить:
- семплы, на которых модель сильно ошибается;
- плохую разметку.
Давайте посмотрим на график лосса во время обучения:
Итак, мы замечаем “выбросы”. Для некоторых задач, выбросы — норма (обучение GAN, LLM), но в большинстве случаев это может свидетельствовать о том, что модель плохо справилась с предсказанием на данном примере, либо ей попался семпл с битой разметкой.
Что нужно сделать, если график лосса выглядит подобным образом, и в нем периодически встречаются пики?
- Обучить легкую бейзлайн-модель до вменяемых метрик на имеющемся датасете.
- Прогнать весь датасет (и трейн, и тест) через модель в режиме инференса, посчитать лосс отдельно для каждого изображения.
- Отрисовать лосс на графике, визуально оценить лучшее пороговое значение для отделения выбросов от остальных предиктов (см. Рисунок 5).
- Просмотреть ground-truth метки и изображения, лосс которых будет выше заданного значения.
- Если замечена ошибка разметки — переразметить, либо выбросить такой семпл.
Итоги
Ничто не бустанет ваши метрики так, как правильная подготовка датасета. Если нет уверенности в его чистоте — подбирать гиперпараметры рано. Уделив внимание каждому описанному пункту, можно смело приступать к обучению, выбирать SOTA модель и прикручивать хайповый лосс и оптимизатор.