Size: a a a

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

2021 August 15
gonzo-обзоры ML статей
Творчество модели
источник
gonzo-обзоры ML статей
Сравнение с конкурентами
источник
gonzo-обзоры ML статей
Решение для масштабирования градиентов
источник
2021 August 18
gonzo-обзоры ML статей
Всем привет! Миша Бурцев проводит опрос, как кому видятся пути к Human Level AI. Если у кого есть мысли по теме, заполните, пожалуйста, анкету по ссылке: https://form.jotform.com/211134165349350

Миша обещает сделать краткий отчёт по результатам.
источник
2021 September 08
gonzo-обзоры ML статей
Давно от нас не было новостей, но по секрету скажу, что мы готовим обзор очень прикольной темы, подробности скоро!

А пока пара новостей про другие события от Grigory Sapunov:

1. Недавно сходил на подкаст к Марку Девельману, поговорили про AI, а больше даже про смысл жизни :)
https://www.uhnwidata.com/den-of-rich/grigory-sapunov

2. 10 сентября выступаю на DataFest Yerevan 2021 в 10:00 (Yerevan time, UTC+4). Расскажу про трансформеры в 2021 году, что интересного произошло и какие тренды.
https://datafest.am/#/agenda

Буду рад поболтать живьём со всеми, кто вдруг в это время будет в Ереване!
источник
2021 September 26
gonzo-обзоры ML статей
[OpenAI CLIP] Learning Transferable Visual Models From Natural Language Supervision
Alec Radford, Jong Wook Kim, Chris Hallacy, Aditya Ramesh, Gabriel Goh, Sandhini Agarwal, Girish Sastry, Amanda Askell, Pamela Mishkin, Jack Clark, Gretchen Krueger, Ilya Sutskever
Статья: https://arxiv.org/abs/2103.00020
Пост в блоге: https://openai.com/blog/clip/
Код (официальный, но неполный): https://github.com/openai/CLIP
Код (неофициальный, но с обучением): https://github.com/mlfoundations/open_clip
Мультиязычный CLIP: https://github.com/FreddeFrallan/Multilingual-CLIP
Русский CLIP от Сбера: https://github.com/sberbank-ai/ru-clip

В предыдущем посте про DALL·E мы упомянули, что частью системы является CLIP, использующийся для ранжирования пар <картинка, текст>. Собственно, надо и про CLIP рассказать.

Глобальная идея CLIP в том, что традиционный подход к обучению в компьютерном зрении заключался в обучении по заранее заданным категориям (предопределённые классы), в то время как в природе есть гораздо более богатый (и потенциально более “дешёвый”, потому что классическая разметка по классам довольно дорога) тип данных — обычные тексты, которые и можно использовать в качестве supervised сигнала. Это идейно похоже на подход из области NLP принятый в трансформере T5, когда все задачи оформляются как seq2seq и для всех задач, включая классификацию, выходы являются текстовыми (а не категориальными в случае той же классификации). Дополнительным бонусом такого подхода является то, что мы не только выучиваем хорошее представление для задачи, но и ещё связываем представление текстов с представлением картинок, то есть получаем какое-то общее мультимодальное пространство.

CLIP расшифровывается как Contrastive Language-Image Pre-Training и технически его идея достаточно проста — возьмём огромный датасет пар <картинка, текстовое описание>, намайненный из интернета (таковых набралось 400М пар) и на этом датасете обучим контрастивную модель, которая для соответствующих друг другу элементов пары даст высокий скор, а для всех остальных — низкий. В этом смысле — классика contrastive learning (про который мы много писали ранее), только теперь он мультимодальный, тексты + картинки.

Про датасет на самом деле довольно мутная и почти неописанная часть. И он, конечно, не выложен. Вроде как искали пары <картинки, текст> по различным запросам (500К слов, которые встретились по крайней мере 100 раз в англоязычной википедии + информативные биграммы) и получая примерно 20К пар на каждый запрос. Датасет вышел аналогичный по числу слов датасету WebText, на котором обучалась GPT-2. Этот датасет назвали WIT (WebImageText). Я пока не уловил, что именно всё-таки в этих текстах, не сами запросы же? Какие-то прикартиночные тексты, или что-то ещё?

На таком датасете можно было бы обучить полноценный seq2seq в режиме похожем на image captioning, то есть генерить по картинке текст. Но авторы показали, что, например, если генерить по картинке описывающий её bag of words, то с точки зрения compute effieiency это получается в три раза эффективнее. А если потом предсказание заменить на контрастивное обучение, то эффективность ещё в четыре раза выше. Так пришли к контрастивному CLIP.

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

В качестве картиночного энкодера попробовали 8 моделей: 5 свёрточных и 3 трансформера. В качестве свёрточных энкодеров взят базовый ResNet-50 с несколькими модификациями, более тяжёлый вариант ResNet-101, и EfficientNet-подобные RN50x4, RN50x16, RN50x64; а в качестве трансформеров используются ViT (https://t.me/gonzo_ML/434): ViT-B/32, ViT-B/16 и ViT-L/14. Для ViT-L/14 в дальнейшем сделали версию дообученную одну эпоху на разрешении 336 пикселей (все предыдущие были 224), её называют ViT-L/14@336px и дальше собственно её и подразумевают под версией в CLIP, так как её перформанс лучший.
источник
gonzo-обзоры ML статей
В качестве базового текстового энкодера взят обычный трансформер на 63М параметров с 12 слоями, 8 головами и эмбеддингами в 512 (для пар с более тяжёлыми картиночными энкодерами параметры побольше). Что важно, attention span этого трансформера всего 76 токенов, то есть он работает с сильно более короткими по сравнению с бертом текстами. При этом, что нехарактерно для энкодеров, “на будущее” используется masked attention, чтобы можно было инициализировать предобученной моделью или добавить дополнительный objective, если вдруг захочется.

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

Самый толстый ViT обучался 12 дней на 256 V100, а RN50x64 — 18 дней на 592 V100.

Изначально были выложены версии CLIP с ViT-B/32 + RN50 (ResNet-50), затем в режиме постепенных выкладываний выложили RN101 и RN50x4, а в июле 2021 также выложили RN50x16 и ViT-B/16. Ну то есть более тяжёлой RN50x64 и самой нормальной ViT-L/14 и тем более ViT-L/14@336px нету (https://github.com/openai/CLIP/blob/main/clip/clip.py#L29).
OpenAI style.

Такое предобучение даёт неожиданно хорошие в плане zero-shot learning результаты и иногда сопоставимо с полностью supervised результатами. И собственно анализ этого и занимает большую часть работы.

При всей своей идейной и технической простоте модель получилась реально очень универсальная и с потенциально огромным количеством применений. Welcome to the age of Foundation Models (https://arxiv.org/abs/2108.07258).

Во-первых, модель можно использовать для классификации по заранее неопределённому числу классов. Заготоваливаете текстовые описания классов, а потом считаете близость эмбеддингов картинок к эмбеддингам этих классов и выбираете ближайший из всех. Или ещё лучше делаете промпт вида “A photo of a {label}” по нужным вам классам, и это даёт более высокое качество классификации. Или даже на “A photo of a {label}, a type of pet.” если релевантно, тогда ещё лучше. В общем здесь тоже как и в GPT-3 можно заниматься prompt engineering. Привет, Software 3.0. Или делаете разные промпты и ансамблируете, так тоже лучше.

Если сравнить с supervised бейзлайном на ResNet-50, то CLIP бьёт его на большом числе датасетов, а на STL10 вроде как даже получили новый SoTA без обучающих примеров. CLIP значительно превосходит бейзлайн на двух датасетах с разпознаванием действий. Авторы спекулируют, что supervision из тектовых описаний лучше работает для концепций с глаголами по сравнению с сигналом из объект-центричных датасетов типа ImageNet.

Можно также делать few-shot learning (обучаем логрегрессию на фичах CLIP), но тут неожиданно оказывается, что zero-shot performance CLIP соответствует 4-shot при таком подходе, то есть 1- и 2-shot learning дают худший результат, чем вообще без такого дообучения.

Качество zero-shot learning скейлится с увеличением сложности модели (речь про картиночную часть), и видимо есть куда продолжать.

Отдельно от zero-shot изучали качество фич с помощью linear probing (обучаем линейный классификатор на фичах). В целом по 27 датасетам, на которых сравнивались, фичи ViT бьют фичи резнетов, а также фичи EfficientNet (+NoisyStudent), SimCLRv2, BYOL, MoCo, BiT-M и не только. Хорошие фичи, короче :)

Среди датасетов в основном различные классификации, от общих (типа ImageNet или CIFAR) до специальных (марки машин, виды растений, объекты на спутниковых снимках) или даже не очень классификаций (номера домов в SVNH, подсчёт объектов в CLEVR).

Подробно изучают устойчивость к distribution shift, показывают, что хотя до идеала далеко, модель всё равно ощутимо лучше многих перечисленных выше. Причём если начинать файнтюнить, то преимущество теряется. Возможно, это связано с тем, что при обучении на конкретном датасете модель всё-таки ловит какие-то spurious штуки, связанные с этим датасетом. CLIP эту проблему обходит.
источник
gonzo-обзоры ML статей
Сравнивают поведение модели в режиме zero-shot и few-shot learning с поведением человека и показывают, что они существенно разные.

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

У модели есть куча ограничений, например, она не очень хороша на fine-grained классификации (типа марок машин) или на специальных задачах типа определения расстояния до машины. Или там MNIST она распознаёт хуже, чем даже какая-нибудь SVM заточенная на этот датасет. Да и промпты подбирать надо уметь.

В общем с одной стороны у модели очень интересное поведение (многие аспекты которого ещё только предстоит раскрыть), с другой стороны есть ещё к чему стремиться и куда развивать.

Из примеров видно, что появляется zero-shot альтернатива построению кастомных картиночных классификаторов. Для каких-то задач теперь получается можно создавать классификаторы с помощью prompt engineering, возможно, вообще минуя этап сбора датасета. В конечном счёте, наверное, всё равно придётся, но для быстрого старта и проверки гипотез хорошая опция. Да и более сложные модели со временем тоже появятся.

Очевидно также модель можно использовать для мультимодального информационного поиска.

Менее очевидно, но многообещающе модель можно использовать для различных артистических целей (CLIPDraw и вот это вот всё, про что у Лёши есть много интересного материала), например, в режие похожем на DeepDream. И наверняка есть ещё уйма применений, про которые ещё никто не догадался. Будет как с бертом, ждём расцвета сотен новых цветов и продуктов!
источник
gonzo-обзоры ML статей
источник
gonzo-обзоры ML статей
источник
gonzo-обзоры ML статей
источник
gonzo-обзоры ML статей
источник
gonzo-обзоры ML статей
источник
gonzo-обзоры ML статей
источник
gonzo-обзоры ML статей
источник
gonzo-обзоры ML статей
источник
gonzo-обзоры ML статей
источник
gonzo-обзоры ML статей
источник
gonzo-обзоры ML статей
источник
2021 October 01
gonzo-обзоры ML статей
[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 раза больше, и он уже обходит фильтрованный.  Что при дорогой процедуре очистки может иметь большой смысл.
источник