Если вы новичок в машинном обучении и чувствуете себя подавленным таким количеством парадигм машинного обучения, которые упоминает ваш коллега; или вы путаетесь между полууправляемым, контролируемым и самостоятельным обучением при чтении статей/блогов; это очень естественно! Чтобы избавиться от этой ситуации, нужно всего лишь бегло прочитать следующие несколько строк, так что давайте начнем. В этой статье мы расскажем только о полуконтролируемом обучении и о том, чем оно отличается от обычно используемых обучающих установок.

Машинное обучение. Обобщенный термин, который относится к набору алгоритмов, которые могут изучать некоторые закономерности на основе заданных данных и настроек. В зависимости от типа данных и настроек, которые мы используем, он принимает различные формы:

Обучение с учителем: мы это уже знаем; когда в данных присутствуют как функции, так и метки, и мы хотим изучить шаблоны из данных, чтобы применить их к невидимым данным; это называется контролируемое обучение. Пример:

  • регрессионная проблема прогнозирования цен на жилье на основе площади, количества комнат, количества окон, местности и т. д.; где нам дают несколько примеров с этими функциями и соответствующими ценами, и мы хотим предсказать новые точки данных, контролируемое обучение.
  • Проблема классификации, когда у нас есть некоторые изображения и их метки; и мы хотим научиться классификатору прогнозировать невидимые изображения, это еще один пример.

Неконтролируемое обучение: теперь, если у нас нет меток для точек данных, мы все равно можем делать некоторые выводы только на основе данных; эти алгоритмы попадают в неконтролируемое обучение. Пример:

  • У нас есть 10 миллионов изображений, и мы хотим знать, что это за изображения. Содержат ли они людей, животных, мемы или одежду? Мы также хотим организовать их так, чтобы все изображения людей располагались в одном месте, животные — в другом и так далее. Конечно, мы не можем сделать это вручную, это заняло бы много времени. Здесь мы можем выполнить кластеризацию и сэкономить время, это будет называться неконтролируемым обучением.
  • Другим примером может быть Анализ главных компонентов для уменьшения размерности.

Полу-суперобучение: как следует из названия, это только наполовину контролируемое, так что да, другая половина не контролируется. Очень часто в промышленности мы оказываемся в ситуации, когда у нас есть набор данных. У нас есть миллиард точек данных, но только несколько миллионов из них помечены. Или мы можем позволить себе маркировать только несколько миллионов из-за нехватки времени и денег. Какое решение мы имеем здесь?

Что ж, один из вариантов — изучить в контролируемой настройке несколько миллионов точек, которые помечены. Иногда это срабатывало, и на этом история заканчивалась. Но если это не сработает, или мы боремся за повышение точности нашей модели классификации на следующие 1-2%, чтобы она увидела свет в производственной среде, нам повезет с полууправляемым обучением.

Другой вариант — использовать неразмеченные данные и посмотреть, послужит ли это нашей цели. Стоит попробовать, но в основном это будет не так эффективно.

Полууправляемая установка предоставляет нам прекрасную возможность использовать как размеченные, так и неразмеченные данные в общей настройке. Если нам не нужны какие-либо технические детали, не стесняйтесь игнорировать остальное. Единственный вывод — у нас есть механизм, который может использовать как размеченные, так и неразмеченные данные и в большинстве случаев работает лучше, чем контролируемая установка.

Краткая техническая информация:

Функция потерь и выборка данных спроектированы таким образом, чтобы данные из обоих пулов использовались во время обучения. Пример классификации изображений, которая должна четко обозначить разницу:

Контролируемая установка:

  • Выборка данных: пакет изображений и соответствующие метки.
  • Потеря = контролируемая_потеря = перекрестная_энтропия (модель (пакет_изображений), метки)

Полуконтролируемая установка:

  • Выборка данных: пакет_изображений_1 из контролируемого пула; еще один batch_of_images_2 из неконтролируемого пула
  • Потери = альфа * контролируемые_потери + (1-альфа) * ​​неконтролируемые_потери
  • supervisord_loss = cross_entropy (модель (batch_of_images_1), метки)
  • для каждого изображения в неразмеченном пакете мы генерируем его увеличение (поворот, обрезку, настройку контраста и т. д.)
  • unsupervised_loss = KL_divergence (модель (batch_of_images_2), модель (augmentations_of_batch_of_images_2))

Так в чем же дело? Каково влияние на обучение?

Как мы видим, единственное отличие состоит в том, что полууправляемое обучение имеет дополнительный член (unsupervised_loss) в функции потерь. В этом термине используются сигналы из неконтролируемого пула, чтобы наложить дополнительные ограничения на модель, чтобы генерировать одинаковые прогнозы для изображения и его увеличения (хорошая модель должна быть инвариантной к таким изменениям изображения). Обратите внимание, что это отличается от добавления дополненных изображений в обучающий набор в обычной контролируемой настройке. Речь идет о получении сигналов от огромных и иначе неиспользуемых — неразмеченных данных. Чтобы завершить этот пример, эта настройка является экземпляром последовательного обучения в полуконтролируемом обучении.

В таких статьях, как UDA, Mix-Match и т. д., было убедительно доказано, что при очень меньшем количестве размеченных данных и достаточном количестве неразмеченных данных полууправляемая установка превосходит обучение с учителем на большем размеченном наборе данных. Полуконтролируемая установка работает для большинства задач, будь то компьютерное зрение или НЛП.

Надеюсь, это рассеет некоторые из наших сомнений, так что давайте попробуем решить нашу следующую проблему с полууправляемым обучением, чтобы добавить еще одну стрелу в наш колчан.