Billion-scale semi-supervised learning for image classification
Miras AmirПрочитал статью https://arxiv.org/abs/1905.00546, где чуваки из Facebook AI рассказывают про различные техники semi-supervised learning.
Терминология
Чтобы не путаться в терминологии, вводятся определия:
- Transfer learning: обучаем модель на большом корпусе (например, ImageNet). Дальше эту обученную сетку как-то (например, файнтюним последний слой или всю сетку) используем для решения другой задачи (например, детекции).
- Semi-supervised learning: у нас есть целевая supervised задача (например, классификация ImageNet) и большой неразмеченный корпус. Мы как то должны использовать этот большой корпус, чтобы улучшить качество нашей целовой задачи.
Miras Amir
- Distillation: сжатия большой модели (teacher) в меньшую (student). Для этого student модель обучается воспроизводить результаты работы teacher модели.
- Self-training: предсказания модели на неразмеченных данных используем для обучение той же модели. Это по сути то, что я (может мы) называем псевдолэйблингом.
Пайплайн
Они решает задачу классификации датасета (D) ImageNet, где N=1.2 million изображений и 1000 классов. Рассматриваем неразмеченный корпус U с размером M >> N. Тогда пайплайн обучения предлагаемого semi-supervised learning:
- Обучаем teacher модель на D
- Предсказываем U этой модели и выбираем для каждого класса релевантные объекты и создаем D'.
- Обучаем новую student модель на D'.
- Файнтюним student на D, чтобы избавиться от шума.
Про выбор релевантных объектов: мы получаем вероятности после применения softmax (пишут, что с ним лучше, чем использовать сырые предсказания). Дальше оставляем для каждого сэмпла P (примерно 10) наиболее вероятных классов. Дальше для каждого класса выбираем top-K (примерно 16000) объектов по вероятностям. Таким образом мы получим сбалансированный датасет D'.
P > 1 для того чтобы собрать сэмплы для редких классов.
Подробности обучения:
1. В качество U используем YFCC-100M c 90 million сэмплами из Flickr.
2. Модели: различные версии ResNet и ResNeXt.
3. LR для файнтюнинга на D в 400 меньше чем LR для предобучения для на U, используется warmup.
4. Количество итераций для предобучения равно 1 billion.
5. Teacher по умолчанию: ResNext-101-32x48.
Результаты:
По Table 2 видно, что
1. файнтюнить важно;
2. чем меньше модели, тем выше улучшение, но с ростом модели улучшение насыщается.