gonzo-обзоры ML статей
18.1K subscribers
1.92K photos
3 files
840 links
Авторы:
Гриша Сапунов, ранее руководитель разработки Яндекс-Новостей, ныне CTO Intento. Области интересов: AI/ML/DL, биоинформатика.
Лёша Тихонов, ранее аналитик в Яндексе, автор Автопоэта, Нейронной Обороны... Области интересов: discrete domain, NLP, RL.
Download Telegram
mT5: A massively multilingual pre-trained text-to-text transformer
Linting Xue, Noah Constant, Adam Roberts, Mihir Kale, Rami Al-Rfou, Aditya Siddhant, Aditya Barua, Colin Raffel
Статья: https://arxiv.org/abs/2010.11934
Код: https://github.com/google-research/multilingual-t5

Ещё одна свежая работа про большой масштаб. Гугл без лишней шумихи и ажиотажа выпустил многоязычный вариант своего T5 — mT5.

T5 (https://arxiv.org/abs/1910.10683) вообще почему-то малоупоминаемая работа, и мы сами грешны, почти про него не писали. Исправляемся.

Ещё год назад Гугл сделал огромную работу. Собрал огромный датасет “Colossal Clean Crawled Corpus” (C4) на 750Gb. Собрал большой полный трансформер (энкодер+декодер) и предобучил его в unsupervised или скорее self-supervised режиме с denoising objective похожей на бертовский MLM, только здесь заменяются не отдельные токены, а небольшие спаны. Полученная модель потом файн-тюнилась на задачи из GLUE/SuperGLUE, SQuAD, WMT и т.п.

Интересно, что модель эта — полноценный seq2seq, то есть даже задачи классификации сводились к генерации текстовой метки класса, например, “entailment”, “contradiction” или “neutral” на MNLI, а задачи регрессии к выдаче строки вида “2.6”. Назвали эту модель “Text-to-Text Transfer Transformer” или сокращённо T5 (до T-800 или T-1000 ещё далековато).

Огромность работы заключалась в том, что исследователи проверили кучу гипотез: какая objective лучше, какая структура модели, сколько токенов в обучении надо, как модель скейлится по разным измерениям и т.п. и выбрали лучшие варианты. Получили в разных местах SoTA, как водится.

Обучили и выложили (https://github.com/google-research/text-to-text-transfer-transformer#released-model-checkpoints) модели разных размеров: 60M, 220M, 770M, 3B, 11B параметров (напомню, самый большой GPT-2 в тот момент был 774M, а 1.5B открыли уже после этой статьи https://openai.com/blog/gpt-2-1-5b-release/ в ноябре 2019).

Обратите внимание, Гугл сразу выложил обученную модель на 11B параметров! И при этом не кричали как OpenAI. И вообще до сих пор довольно скромно про это рассказывали.

Так вот, на днях пришёл черёд мультиязычной модели, mT5. Для неё тоже собрали датасет (теперь он называется mC4), с поддержкой 107 языков (из них правда 6 языков это вариации основного, но латиницей, что забавно среди них есть ru-Latn). Русский, кстати, на втором месте в этом датасете, набрали на 713B токенов! Ну и вообще нам на самом деле есть чем гордиться с русским языком, в вебе он второй после английского: https://en.wikipedia.org/wiki/Languages_used_on_the_Internet#Content_languages_for_websites.

Датасет выложен: https://www.tensorflow.org/datasets/catalog/c4#c4multilingual_nights_stay

Далее на этом датасете обучили mT5 по лучшим рецептам из T5 (точнее даже из T5.1.1). Тщательно выбирали параметры сэмплинга языков, чтобы редкие обучились, но не переобучились. По модели особо не мудрствовали, старались следовать родным рецептам. По ходу дела поэкспериментировали с разными ablations, описали эффекты, выбрали лучшие параметры.

Так же опубликовали (https://github.com/google-research/multilingual-t5#released-model-checkpoints) набор моделей: 300M, 600M, 1B, 4B и 13B (у mT5 больший словарь по сравнению с чисто английским T5, так что увеличение размера моделей отсюда).

Тестировали на задачах из XTREME benchmark, так же получили SoTA и побили идейно близкие модели типа mBERT, XLM/XLM-R.

В общем это мегакруто. У нас теперь есть набор моделей разного размера (до реально очень больших, которые не так-то просто гонять будет) с поддержкой 101 языка и готовых к файнтюнингу на более-менее любые seq2seq задачи. Респект Гуглу!
Всем, кто оставил свои координаты в этом опросе, мы разослали приглашение в дискорд, где дальше собираемся вести движуху по разбору статей вокруг AGI.

Если вам по какой-то причине не пришла ссылка в почту, дайте знать.
И ещё одно объявление.

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

https://forms.gle/6dx54vmruiSVAv9A8
Артефакт от нашего вчерашнего первого журнального клуба по статьям вокруг AGI.

https://docs.google.com/presentation/d/1Ys8Tjn7rEIjd36ZfYezcA95A8mL31V7Xgu89RtIRjxM/edit?usp=sharing

Следующий журнальный клуб планируем в субботу 5 декабря в 18:00.

Если вам тоже интересно участвовать в этой активности в качестве слушателя или докладчика (или ещё как), ответьте, пожалуйта, на вопросы анкеты, и мы пригласим вас в наш дискорд:

https://forms.gle/6dx54vmruiSVAv9A8
Если кому интересно железо, я написал очередную огромную статью с разбором, что сейчас есть из специализированных процессоров для DL:

https://blog.inten.to/hardware-for-deep-learning-part-4-asic-96a542fe6a81

Комментарии, замечания и предложения приветствуются.

Ну и там, лайки, шеры, алишеры :)
kōan: A Corrected CBOW Implementation
Ozan İrsoy, Adrian Benton, Karl Stratos
Статья: https://arxiv.org/abs/2012.15332
Код: https://github.com/bloomberg/koan

Интересная история в мире NLP из серии “наше представление о мироздании было неверным”.

Классический word2vec имеет два варианта обучения эмбеддингов: Continuous bag-of-words (CBOW, здесь по контексту предсказывается центральное слово) и Skip-gram (SG, здесь наоборот по центральному слову предсказываются слова контекста). Первый быстрее, потому что негативный сэмплинг требуется только для центрального слова, а не для каждого слова контекста. Но общее убеждение было, что SG даёт лучшее качество.

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

Копание показало, что градиент для входных (source) эмбеддингов считается неверно, он не делится на размер окна контекста (то есть, считай, избыточно умножается на размер этого окна). Это было бы ничего, если бы среди обучаемых весов были только входные эмбеддинги, тогда максимум бы пришлось поправить learning rate. Но там же есть и выходные (target), которые масштабировать не надо, и получается что градиент для общего вектора весов в итоге указывает “не совсем туда”.

Авторы собрали исправленный вариант CBOW и показали, что он даёт сопоставимое с SG качество. Заодно ещё сделали оптимизированный негативный сэмплинг и выложили реализацию на С++17.

На генсимовской реализации есть просадка по качеству у CBOW по сравнению с SG, а на новой нету. Но правда есть пара противоречивых результатов, на SST-2 и QNLI из GLUE генсимовский CBOW таки почему-то прям существенно обогнал по качеству всё остальное. У меня нет объяснения такому результату, это какой-то странный подземный стук, который, мне кажется, говорит, что вопрос ещё не до конца закрыт. Надо копать дальше!

В любом случае кейс интересный. Проверяйте надёжность основ и не доверяйте безоглядно тому, что “общепринято”.
Ускоренный сэмплинг
(для тех кто забыл что такое CBOW/SG, картинка из https://arxiv.org/abs/1301.3781)
DeBERTa: Decoding-enhanced BERT with Disentangled Attention
Pengcheng He, Xiaodong Liu, Jianfeng Gao, Weizhu Chen
Статья: https://arxiv.org/abs/2006.03654
Код: https://github.com/microsoft/DeBERTa
Модель в Transformers: https://huggingface.co/transformers/model_doc/deberta.html
Пост: https://www.microsoft.com/en-us/research/blog/microsoft-deberta-surpasses-human-performance-on-the-superglue-benchmark/

В зоопарке с бертами громкое пополнение. Microsoft захватил лидерство в SuperGLUE (https://super.gluebenchmark.com/leaderboard) с моделью DeBERTa (итоговый скор 90.3), попутно превзойдя human baseline (скор 89.8) на этом бенчмарке. В затылок лидеру дышит гугловая T5 + Meena, также превосходящая человека (90.2). Гугл пока про этот свой прорыв отмалчивается.

Что за зверь эта DeBERTa?

По большому счёту DeBERTa — это RoBERTa с двумя усовершенствованиями.

1) Разделённый механизм внимания (disentangled attention), в котором каждый токен кодируется двумя векторами: вектор контента и вектор позиции (относительной), для работы с которыми заведены отдельные матрицы.

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

Здесь на вход пролетает пара {H, P}, где H — это по-прежнему контентные эмбеддинги (на входе посчитанные для BPE-токенов, а далее — выходы с предыдущих слоёв self-attention), а P — относительные позиционные эмбеддинги, кодирующие связь токена на позиции i с токеном на позиции j, которые считаются из относительного расстояния между i и j.

Вес внимания между двумя такими {H, P} состоял бы из четырёх компонент: content-to-content (как в оригинале), content-to-position, position-to-content и position-to-position. От последнего отказываются, потому что он вроде как не добавляет новой информации при использовании относительных позиций. В итоге получается, что к традицинным контентным K,Q,V добавляются позиционные Q_r и K_r и соответствующие им матрицы проекций.

Ну и нормализуют теперь не на корень из d, а на корень из 3d.

2) Enhanced mask decoder (EMD), где перед финальным софтмаксом, когда модель должна уже декодировать замаскированные токены при обучении с MLM (Masked Language Model), к контекстным эмбеддингам добавляются _абсолютные_ позиционные (важно, в механизме внимания были _относительные_ позиционные эмбеддинги). Потому что, по мнению авторов, абсолютная позиция слова в некоторых случаях критична для предсказания.

Декодером это называется несколько некорректно, потому что речь по большому счёту идёт про энкодер трансформера (помните, BERT — это чисто encoder часть полного трансформера), декодера в его хитрым маскированным вниманием тут нет.

Авторы говорят, что через EMD можно добавлять в модель другую полезную информацию, но это тема на будущее (когда Гугл обгонит на SuperGLUE, видимо).

Правда, в статье описана адаптация DeBERTa к авторегрессионной генерации, где эта хитрая треугольная маска появляется.

Также в работе применяют virtual adversarial training алгоритм под названием Scale-invariant-Fine-Tuning (SiFT), который создаёт adversarial examples путём изменения эмбеддингов слов (причём нормализованных эмбеддингов, типа так лучше), а модель должна на них выдавать распределение как на оригинальных данных. Внимательное изучение SiFT тоже оставили на будущее.

Экспериментальная часть богата.

Сравнивают large модели BERT, RoBERTa, XLNet, ELECTRA и кое-где ALBERT и Megatron. DeBERTa рулит. И этот результат получают при обучении примерно на половине данных по сравнению с RoBERTa и XLNet. Также DeBERTa обходит по качеству Megatron-1.3B, который в три раза толще.

DeBERTa-base также побеждает RoBERTa/XLNet-base.
В режиме авторегрессионной генерации по perplexity на Wikitext-103 лучше GPT-2 и Transformer-XL (не понял только, каких размеров).

По ablations показали, что более-менее все добавления в модель нужны (EMD, content-to-position, position-to-content).

DeBERTa-large обучалась на 6 DGX-2 с 96 V100. Одна модель на 1М шагов обучается 20 дней. Забудьте, если вы не гугл.

Обучили также тяжёлую DeBERTa на 1.5B параметров, у неё в SuperGLUE общий скор 89.9 (у человека 89.8). У ансамбля DeBERT те самые лидерские 90.3. Гугловая T5 вроде как в версии 11B там (но ждём также их могучий Switch Transformer).

Такие вот дела. Microsoft вроде как собирается предоставлять доступ к модели через API в рамках их моделей Turing. Эта называется Turing NLRv4.