Size: a a a

gonzo-обзоры ML статей

2021 October 01
gonzo-обзоры ML статей
Хорошие примеры на векторную арифметику в стиле word2vec: от вектора картинки с бабочкой отнять вектор слова “цветы” и “оранжевый”, и прибавить вектор для слова “роза”. Мультимодальное пространство работает.

Ещё обучили мультиязычную версию ALIGN на 100+ языков, также хороший перформанс в сравнении с аналогами.

В общем классная модель как минимум для фотоархивов, а с учётом универсальности идеи для кучи всего, что ещё не придумали.

Работа была принята на ICML 2021.
источник
gonzo-обзоры ML статей
источник
gonzo-обзоры ML статей
источник
gonzo-обзоры ML статей
источник
gonzo-обзоры ML статей
источник
gonzo-обзоры ML статей
источник
gonzo-обзоры ML статей
источник
gonzo-обзоры ML статей
The pre-trained image and text encoder can directly be used in classifying an image into a set of classes by retrieving the nearest class name in the aligned embedding space. This approach does not require any training data for the defined class space.
источник
2021 October 30
gonzo-обзоры ML статей
[Facebook DINO] Emerging Properties in Self-Supervised Vision Transformers
Mathilde Caron, Hugo Touvron, Ishan Misra, Hervé Jégou, Julien Mairal, Piotr Bojanowski, Armand Joulin
Статья: https://arxiv.org/abs/2104.14294
Пост в блоге: https://ai.facebook.com/blog/dino-paws-computer-vision-with-self-supervised-transformers-and-10x-more-efficient-training/
Код и модели: https://github.com/facebookresearch/dino

Ещё одна важная работа начала этого года — DINO от Facebook.

Авторы работы решили изучить, даёт ли что-нибудь интересное картиночным трансформерам (конкретно ViT, https://t.me/gonzo_ML/434) предобучение через self-supervised learning (SSL). И они обнаружили интересные вещи, не возникающие ни при обучении ViT в режиме supervised, ни в свёрточных сетях, а именно:

- фичи SSL ViT содержат планировку (layout) сцены, и в частности границы объектов; эту информацию можно извлечь из модулей внимания с последнего слоя.
- фичи SSL ViT прекрасно работают для классификации через k-NN без какого-либо файнтюнинга, линейных классификаторов поверх фич или аугментации данных.

Семантические фичи при этом возникают более менее стабильно при использовании SSL, а хорошая классификация через k-NN получается только при использовании в обучении определённых компонентов, как то momentum encoder и multi-crop augmentation.

По результатам этих наблюдений авторы собрали свой SSL подход под названием DINO (DIstillation with NO labels), который работает и с ResNet и с ViT, но с последним результаты интереснее.

Подход идейно во многом похож на BYOL (https://t.me/gonzo_ML/562) и вдохновлялся им, но есть и существенные различия. По названию также видно, что используется дистилляция (про которую мы очень много писали, начиная с https://t.me/gonzo_ML/117), и это прекрасно.

Итак, в чём суть подхода.

Как полагается в классической дистилляции, есть сеть-учитель и сеть-ученик. Обе сети имеют одинаковую архитектуру (в этом отличие от BYOL, где асимметрия была важна чтобы процесс обучения не коллапсировал), но разные параметры (шаринга нет, но учитель обновляется как экспоненциальное скользящее среднее, EMA, от ученика — это и называется momentum encoder).

Обе сети выдают вероятностные распределения по K измерениям (гиперпараметр), вероятность получается с помощью софтмакса. Ученик пытается подстроить своё распределение под распределение учителя через минимизацию кросс-энтропии.

Это была часть про дистилляцию. Теперь часть про SSL.

Для каждой картинки создаются искажённые разными трансформациями (набор такой же как в BYOL, дисторсия цвета + гауссовское размытие + соляризация) вьюшки. Используется multi-crop стратегия (отсюда https://arxiv.org/abs/2006.09882), для каждой картинки есть один крупный глобальный вид (view) разрешения 224*224, и несколько локальных видов более низкого разрешения 96*96. Все кропы прогоняются через ученика, но только глобальный вид прогоняется через учителя, что способствует появлению local-to-global соответствия. Для выхода учителя также применяется centering и sharpening, это позволяет избежать коллапса.

Что интересно в этой схеме, что априори учитель не задан, он получается из студента в процессе общего обучения (это похоже на кодистилляцию, но здесь дистилляция только в одну сторону, от учителя к ученику). Обновление учителя очень похоже на momentum encoder, который изначально появился в contrastive learning (CL, про который мы тоже много писали, например, https://t.me/gonzo_ML/342), но как утверждают авторы здесь его роль совершенно иная. В CL momentum encoder выступает для замены очереди, из которой набираются отрицательные примеры, в текущей же работе нет ни очереди, ни CL, и авторы считают, что роль его ближе к mean teacher (https://arxiv.org/abs/1703.01780), который даёт некую форму ансамблирования моделей (а ансамбли, как мы знаем, всегда хорошо). На эту тему в работе есть больше деталей и ссылок на Polyak-Ruppert averaging, интересующиеся заглядывайте!
источник
gonzo-обзоры ML статей
Получается очень красивый микс SSL и дистилляции: обучаем студента, генерим из него учителя через EMA, этот учитель по факту является ансамблем с качеством более высоким чем у исходной модели (студента), тем самым получаем целевую модель от которой можно дистиллировать (а как мы знаем, дистилляция сама по себе тоже порой даёт качество более высокое, чем у исходной модели). И очень похоже на вытягивание себя из болота за волосы, ну или за шнурки от ботинок, кому как больше нравится.

Сама сеть — это бэкбон (ViT или ResNet) и проектор (projector) в виде трёхслойного MLP, на выходе которого и есть размерность K. Предиктора (predictor) как в BYOL нету. В случае ViT также нет никакого батчнорма (а то к BYOL были претензии, что BN типа косвенным образом делает контрастивность https://t.me/gonzo_ML/563). После обучения используются фичи бэкбона, не проектора.

Всё предобучалось на ImageNet без меток, на двух машинах с 8 GPU (видимо, что-то типа DGX) в течение трёх дней.

Главные результаты. Во-первых, SoTA для SSL и качественные фичи и с линейным классификатором, и с k-NN, бьёт множество методов CL и в общем довольно сильно приближается к полноценному supervised. В случае ViT также неожиданно малое отставание качества k-NN от линейной пробы, все остальные методы имеют гораздо больший гэп. За счёт качественного k-NN можно строить быстрые классификаторы, а также собирать быстрый семантический поиск по базам картинок. Также моделька классно находит копии изображений, хотя на эту задачу она вообще не обучалась.

При сравнении разных архитектур интересно, что более сложный ViT (ViT-B против ViT-S) даёт выигрыш меньший, чем уменьшение размера патча (/8 против /16).

Анализ фич показывает, что SSL ViT содержит полезные семантические фичи и разные головы внимания (имеется в виду внимание для query [CLS] токена последнего слоя) “смотрят” на разные регионы. У supervised ViT такого нет. Модель классно отделяет объекты от фона, и всё это получено без какой-либо разметки.

При transfer learning на другие задачи фичи SSL ViT также переносятся лучше, чем фичи supervised ViT. Ну и кстати на самом же ImageNet предобучение тоже улучшает результат на 1-2%.

В работе есть интересный раздел про абляции. Учитель, получаемый через momentum, всегда лучше студента, в том числе и на ResNet. За этим что-то есть (см.обсуждение ансамблирования выше и глубже в самой работе).

Работа была принята на ICCV 2021.

В целом, кажется, текущий прогресс в self-supervised обучении очень сильно изменит ландшафт сервисов для разметки данных, потому что теперь уже это не видится основным способом получить модели более высокого качества. Качественные размеченные данные нужны, но явно уже не так, как казалось всего пару лет назад. Для многих задач теперь не нужно собирать “ещё один размеченный ImageNet” (Хотя и было бы клёво его иметь (Но блин как же это дорого)).
Telegram
gonzo-обзоры ML статей
Ошибка считается через MSE от нормализованных выхода предиктора онлайн сети и выхода проектора целевой сети. Лосс симметризуется путём прогона обоих представлений по обоим путям (v также прогоняется через целевую сеть, а v’ через онлайн сеть). Лосс минимизируется изменением параметров только онлайн сети. После обучения оставляют только энкодер онлайн сети.

Обучали на ImageNet с большим батчем (4096) на 512 TPU-v3, получалось примерно 8 часов для ResNet-50.

Результаты хорошие. При обучении линейного классификатора поверх получившихся репрезентаций на ImageNet метод побил SimCLR и MoCo v2 (SimCLRv2 появился параллельно BYOL и был лучше). При файнтюнинге на ImageNet тоже хорошо, и при переносе на другие датасеты неплохо работает. На другие задачи типа семантической сегментации, детектирования объектов и оценки глубины также переносится.

Отсутствие негативных примеров даёт некоторые преимущества. Например, традиционные методы используют в качестве негативных остальные сэмплы в батче и соответственно при маленьком…
источник
gonzo-обзоры ML статей
источник
gonzo-обзоры ML статей
источник
gonzo-обзоры ML статей
источник
gonzo-обзоры ML статей
источник
gonzo-обзоры ML статей
источник
gonzo-обзоры ML статей
источник
gonzo-обзоры ML статей
источник
gonzo-обзоры ML статей
источник
gonzo-обзоры ML статей
источник
gonzo-обзоры ML статей
источник