Предыдущая глава

Что такое self-supervised learning (обучение) (SSL), чем оно полезно и какие существуют подходы к его реализации?

Self-supervised обучение - это процедура предварительного обучения, которая позволяет нейронным сетям использовать большие объемы неразмеченных данных в supervised стиле. В этой главе мы сравним self-supervised обучение с трансферным, схожим методом для предварительного обучения моделей, и рассмотрим практические приложения SSL. Также обсудим основные категории self-supervised обучения.

Self-Supervised Learning и трансферное обучение

Self-supervised обучение можно считать разновидностью трансферного обучения - техники, где модель, предобученная на одной задаче, может быть переиспользована как основа для обучения на другой. Например, мы хотим обучить классификатор изображений для распознавания видов птиц. В трансферном обучении мы бы сначала обучили сверточную нейронную сеть на большом размеченном датасете, таком как ImageNet, который включает множество разных категорий, включая животных. После предварительного обучения мы берем предобученную модель и дообучаем ее на маленьком датасете, содержащем птиц, в распознавании которых мы заинтересованы. (Очень часто приходится полностью заменять выходной слой в соответствии с нашими классами, но иногда модель можно использовать как есть).

Рисунок 1.1 демонстрирует процесс трансферного обучения.

Рис 1.1: Предварительное обучение трансферным обучением
Рис 1.1: Предварительное обучение трансферным обучением

Self-supervised обучение, как альтернатива трансферному, обучается на неразмеченных датасетах вместо размеченных. Мы берем неразмеченный датасет без меток классов и затем пытаемся сгенерировать эти метки, используя структуру датасета. Далее эти метки используются для постановки модели прогнозной задачи, как показано на Рисунке 1.2. Такие задачи на искусственных метках называются pretext задачами.

Рисунок 1.2: Предварительное обучение методом self-supervised learning
Рисунок 1.2: Предварительное обучение методом self-supervised learning

Основное различие между трансферным и self-supervised обучением в том, как мы получаем метки классов на 1 шаге, как показано на Рисунках 1.1 и 1.2. В трансферном обучении мы предполагаем, что метки уже предоставлены используемым датасетом. Как правило, их создают люди - разметчики данных. В self-supervised обучении метки получаются автоматически, прямо из тренировочных данных.

В качестве задачи self-supervised обучения может быть предсказание пропущенного слова в контексте обработки естественного языка. Например, дана последовательность "тянуть кота за хвост", мы можем замаскировать слово хвост, скормить нейронной сети последовательность "тянуть кота за [MASK]" и попросить ее угадать пропущенное слово в "[MASK]". Похожим образом в контексте компьютерного зрения мы можем удалить кусочки изображений (еще их называют патчами), и попросить нейросеть заполнить пропуски. Это лишь два примера задач self-supervised learning, но конечно же, существует огромное множество других методов и подходов для данного типа обучения.

Таким образом, можно думать о self-supervised обучении на pretext задачах как о representation learning. Мы можем использовать предобученную модель, чтобы дообучить (файнтюнить) на целевой (также известной как downstream) задаче.

Использование неразмеченных данных

Для хорошей обобщаемости большие нейронные сети требуют огромного количества размеченных данных. Однако во многих сферах у нас попросту нет большого количества таких датасетов. Но при помощи self-supervised обучения мы можем использовать неразмеченные данные. Это делает SSL особенно полезным при работе с большими нейронными сетями и с ограниченным количеством размеченных данных.

Архитектуры, основанные на трансформерах, которые составляют основу для LLM и визуальных трансформеров, также требуют использования self-supervised learning для успешного обучения.

Для небольших нейронных сетей, таких как многослойный перцептрон с двумя или тремя слоями, self-supervised обучение не приносит особой пользы.

Self-supervised обучение похожим образом не очень полезно в традиционных методах машинного обучения с непараметрическими моделями, такими как случайные леса или градиентный бустинг. Методы, основанные на деревьях, не имеют фиксированной структуры параметров (в отличие от моделей с весовыми матрицами). Из-за этого они не могут участвовать в трансферном обучении и несовместимы с self-supervised обучением.

Self-Prediction и контрастный Self-Supervised Learning

Self-supervised обучение можно поделить на две основные категории: self-prediction и контрастный self-supervised learning. В self-prediction, проиллюстрированном на Рисунке 1.3, мы меняем или скрываем части входных данных например, применяя зашумляющую маску, которая искажает некоторые пиксели в изображении. Затем мы учим модель восстанавливать исходный вид.

Рисунок 1.3: Self-prediction после применения зашумляющей маски
Рисунок 1.3: Self-prediction после применения зашумляющей маски

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

Рисунок 1.4: Маскированный автоэнкодер, восстанавливающий изображение с пропусками
Рисунок 1.4: Маскированный автоэнкодер, восстанавливающий изображение с пропусками

Self-prediction методы, использующие пропущенные (замаскированные) части входных данных, также активно используются и в области обработки естественного языка. Многие генеративные LLM, такие как GPT, обучаются на pretext задаче предсказания следующего слова. Для этого мы скармливаем нейронной сети фрагменты текста, и она должна угадать следующее слово в последовательности.

В контрастном self-supervised обучении нейросеть учится создавать пространство эмбеддингов где похожие входные объекты оказываются близко друг к другу, а непохожие - далеко. Другими словами, задача - обучить нейронную сеть генерировать эмбеддинги так, чтобы минимизировать расстояние между схожими тренировочными примерами и максимизировать расстояние между непохожими.

Давайте рассмотрим контрастное обучение на конкретном примере. Допустим, у нас есть датасет со случайными изображениями животных. Сначала мы берем случайное изображение котенка (модель не знает метку класса, поскольку мы считаем, что датасет является неразмеченным). Затем мы искажаем, портим или зашумляем изображение, добавляя слой случайного шума или обрезав какие-то части, как показано на рисунке 1.5.

Рисунок 1.5: Пары изображений, встретившихся в процессе контрастного обучения
Рисунок 1.5: Пары изображений, встретившихся в процессе контрастного обучения

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

Для пары котенок-слон мы бы хотели получить непохожие эмбеддинги. Так мы неявно заставляем модель улавливать ключевые характеристики изображения, при этом делая ее устойчивой к небольшим различиям и шумам. В качестве примера, простейшей формой контрастной функции потерь может быть L_2- норма (Евклидово расстояние) между эмбеддингами сгенерированными моделью M(\cdot). Можно сказать, что мы обновляем веса модели так, чтобы уменьшить расстояние ||M(\text{к})-M(\text{cat}')||_2и увеличить расстояние ||M(\text{cat})-M(\text{elephant})||_2.

Рисунок 1.6 показывает общую концепцию контрастного обучения для сценария с зашумленным изображением. Модель проиллюстрирована дважды - такая установка называется сиамской сетью. Модель используется в двух сценариях: в первом она генерирует эмбеддинги для исходного изображения, а во втором - для его зашумленной версии.

Рисунок 1.6: Контрастное обучение
Рисунок 1.6: Контрастное обучение

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

Комментарии (0)