Как увеличить количество данных для обучения при малом количестве размеченных объектов
Что проверяют
Понимаете ли вы, что «увеличить данные» можно по-разному: размножить имеющиеся, использовать неразмеченные, взять знания предобученной модели или размечать умнее. Следом обычно спрашивают, как проверить, что новые данные помогли, а не испортили модель.
Как отвечать
Начните с того, что сначала выжимают максимум из предобученных моделей, а потом наращивают данные:
- transfer learning: берут модель, обученную на большом корпусе (ResNet, ViT, энкодеры семейства BERT), и дообучают голову или последние слои. Часто это даёт больше любой аугментации; для текста рядом стоят zero-shot и few-shot через LLM;
- аугментация: для изображений кропы, отражения, цветовые искажения, mixup и cutmix (
torchvision.transforms.v2, Albumentations); для текста обратный перевод и перефразирование; для таблиц осторожно, SMOTE полезен только при дисбалансе классов; - semi-supervised: pseudo-labeling, когда модель размечает неразмеченные объекты с высокой уверенностью, и consistency regularization вроде FixMatch;
- self-supervised: предобучение на своих неразмеченных данных (контрастные методы, masked modeling), затем дообучение на малой разметке;
- weak supervision: правила и эвристики как слабые разметчики, их голоса объединяет модель меток, так устроен Snorkel;
- активное обучение: модель выбирает объекты, в которых сильнее всего сомневается, и на разметку уходят именно они;
- синтетика: генеративные модели или симуляция, когда реальные данные собрать трудно.
Обязательно скажите про оценку: тест собирают только из реальных размеченных объектов и не аугментируют, иначе метрика завышается.
Где спотыкаются
Делают аугментацию или SMOTE до разбиения на train и test. Копии одного объекта попадают в обе части, и метрика показывает качество, которого на проде не будет.
Применяют преобразования, меняющие смысл: поворот цифры 6 на 180 градусов, замену слова, переворачивающую тональность отзыва. Метка перестаёт соответствовать объекту.
Запускают pseudo-labeling без порога уверенности и без контроля на отложенной выборке. Модель закрепляет собственные ошибки, и с каждой итерацией шум в разметке растёт.