gonzo-обзоры ML статей
24.4K subscribers
3.03K photos
3 videos
3 files
1.49K links
Авторы:
Гриша Сапунов, ранее руководитель разработки Яндекс-Новостей, ныне CTO Intento. Области интересов: AI/ML/DL, биоинформатика.
Лёша Тихонов, ранее аналитик в Яндексе, автор Автопоэта, Нейронной Обороны... Области интересов: discrete domain, NLP, RL.
Download Telegram
[Google ALIGN] Scaling Up Visual and Vision-Language Representation Learning With Noisy Text Supervision
Chao Jia, Yinfei Yang, Ye Xia, Yi-Ting Chen, Zarana Parekh, Hieu Pham, Quoc V. Le, Yunhsuan Sung, Zhen Li, Tom Duerig
Статья: https://arxiv.org/abs/2102.05918
Пост в блоге: https://ai.googleblog.com/2021/05/align-scaling-up-visual-and-vision.html
Модель: ?
Код: ?

TL;DR: Аналог CLIP от Гугла. Отличия в архитектуре, но, главное, в датасете — обучались на шумном нефильтрованном датасете размера 4.5x относительно датасета CLIP. Качество вроде как лучше.

ALIGN расшифровывается как A Large-scale ImaGe and Noisy-text embedding.

Заходит работа с примерно той же стороны, что и CLIP — хочется собрать большую претренированную модель, а для неё нужны данные. Авторы CLIP собрали для этого свой датасет на 400М пар <картинка, текст>. Детали процесса малопонятны, датасет не выложен, но зато недавно, в августе 2021, появился аналогичный открытый датасет LAION-400M (https://laion.ai/laion-400-open-dataset/). Разработчики ALIGN решили при составлении датасета отказаться от сложных процедур курирования, фильтрации и постпроцессинга, что позволило собрать датасет размером 1.8B пар. Шумный, но размер в итоге перевешивает этот недостаток. Тоже не выложен.

Авторы взяли методологию создания датасета от Conceptual Captions и получили английские alt-тексты для картинок. Большинство фильтраций и очисток оригинальной работы они убрали, оставив только какие-то базовые вещи: убрали порнографические картинки (я уже вижу, как кто-то обучает свою версию CLIP/ALIGN на порнхабе...), убрали картинки размером менее 200 пикселей по одному из измерений и отношению сторон больше 3; также выкинули картинки, для которых было более 1000 связанных альт-текстов, а также дубликаты и почти-дубликаты тестовых картинок. По текстам отфильтровали такие, которые были привязаны к более чем 10 картинкам, и тексты с редкими токенами (за пределами 100М наиболее частых униграмм и биграмм), а также слишком короткие (<3 униграмм) и длинные (>20 униграмм) — это отфильтровало треш вида “image tid 25&id mggqpuweqdpd&cache 0&lan code 0” или слишком общие тексты.

В модели также как и в CLIP два энкодера, картиночный и текстовый, и косинусная функция близости поверх. Также обучаются через contrastive loss. В качестве картиночного используется EfficientNet (L2) с глобальным пулингом, а в качестве текстового — BERT (Large) и его [CLS] токен. Картинки на входе разрешения 289x289, а тексты максимум 64 токена (даже меньше чем у CLIP с его 76).

Из прикольных мелочей, которые в последнее время часто попадаются — обучаемый параметр для температуры в софтмаксе, чтобы не возиться с гиперпараметром.

Предобучают на шумных парах текст-картинка, потом делают трансфер на задачи retrieval и классификацию.

Обучали на 1024 ядрах TPUv3, с 16 позитивными парами на каждом ядре. Негативные собираются со всех ядер, так что эффективный размер батча получается 16384.

ALIGN достиг SoTA на всех метриках в Flickr30K и MSCOCO. В zero-shot лучше CLIP, а с файнтюнингом бьёт существующие методы, включая методы с кросс-модальным вниманием типа ImageBERT, UNITER, ERNIE-ViL, VILLA и Oscar. Также достигли SoTA на всех метриках в Crisscrossed Captions (retrieval).

Zero-shot классификацию проверяли аналогично CLIP, на матчинге со строками вида “A photo of a {classname}”. Сравнимо с CLIP, где-то лучше, где-то хуже. Ансамблирование также улучшает результат (на 2.9%).

Фичи выучиваются нормальные, если поверх картиночных обучить линейный классификатор, то получается чуть лучше CLIP, а с файнтюнингом обходит BiT и ViT-H/14.

Из интересных инсайтов то, что если сравнивать фильтрованный датасет с нефильтрованным, то на фильтрованном аналогичного размера обучается, конечно, лучше, но достаточно взять нефильтрованный датасет в 4 раза больше, и он уже обходит фильтрованный. Что при дорогой процедуре очистки может иметь большой смысл.
👍1
Хорошие примеры на векторную арифметику в стиле word2vec: от вектора картинки с бабочкой отнять вектор слова “цветы” и “оранжевый”, и прибавить вектор для слова “роза”. Мультимодальное пространство работает.

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

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

Работа была принята на ICML 2021.
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.
[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, интересующиеся заглядывайте!
Получается очень красивый микс 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” (Хотя и было бы клёво его иметь (Но блин как же это дорого)).
👍1