Billion-scale semi-supervised learning for image classification

Billion-scale semi-supervised learning for image classification

Miras Amir

Прочитал статью https://arxiv.org/abs/1905.00546, где чуваки из Facebook AI рассказывают про различные техники semi-supervised learning.


Терминология

Чтобы не путаться в терминологии, вводятся определия:

  1. Transfer learning: обучаем модель на большом корпусе (например, ImageNet). Дальше эту обученную сетку как-то (например, файнтюним последний слой или всю сетку) используем для решения другой задачи (например, детекции).
  2. Semi-supervised learning: у нас есть целевая supervised задача (например, классификация ImageNet) и большой неразмеченный корпус. Мы как то должны использовать этот большой корпус, чтобы улучшить качество нашей целовой задачи. 

Miras Amir

  1. Distillation: сжатия большой модели (teacher) в меньшую (student). Для этого student модель обучается воспроизводить результаты работы teacher модели.
  2. Self-training: предсказания модели на неразмеченных данных используем для обучение той же модели. Это по сути то, что я (может мы) называем псевдолэйблингом.


Пайплайн

Они решает задачу классификации датасета (D) ImageNet, где N=1.2 million изображений и 1000 классов. Рассматриваем неразмеченный корпус U с размером M >> N. Тогда пайплайн обучения предлагаемого semi-supervised learning:

  1. Обучаем teacher модель на D
  2. Предсказываем U этой модели и выбираем для каждого класса релевантные объекты и создаем D'.
  3. Обучаем новую student модель на D'.
  4. Файнтюним 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. чем меньше модели, тем выше улучшение, но с ростом модели улучшение насыщается.


Report Page