Telegram: @ninachely


Self-supervision (SSL)

Введение

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

Будем говорить о том, какие задачи можно решать с помощью трансформеров.

Обычно нейронка состоит из:

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

Соответственно: если мы такую задачу решим и backbone у нас будет уже обученный, то дальше мы сможем его дотюнить уже до нашей задачи, либо обучив свою голову под эту задачу, либо целиком зафайньюнить всё — и голову и тело. Мы хотим обучить веса, а архитектура у нас фиксированная. Это также называют pre-training.

Когда на одном из семинаров по зрению мы брали сетку, которая предобучена на ImageNet и потом ее тюнили под наши данные, то это как раз и были pre-training и fine-tuning под нашу задачу.

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

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

Теперь нам тоже нужно будет придумывать какие-то задачи, которые выглядят достаточно адекватно, чтобы на них учиться и модель придумывала из данных что-то новое.

BERT

Идея

BERT = Bidirectional Encoder Representations from Transformers

Давайте попробуем проанализировать это название: