Size: a a a

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

2020 May 25
gonzo-обзоры ML статей
источник
gonzo-обзоры ML статей
источник
gonzo-обзоры ML статей
источник
gonzo-обзоры ML статей
источник
gonzo-обзоры ML статей
источник
2020 May 27
gonzo-обзоры ML статей
ETC: Encoding Long and Structured Data in Transformers
Joshua Ainslie, Santiago Ontanon, Chris Alberti, Philip Pham, Anirudh Ravula, Sumit Sanghai
Статья: https://arxiv.org/abs/2004.08483

Ещё трансформеры для больших документов, теперь Extended Transformer Construction (ETC) от Гугла. Кстати, гугловый же Reformer тоже умеет с длинными последовательностями работать, и он теперь есть в Huggingface (https://twitter.com/huggingface/status/1263850138595987457).

Но ETC это больше, чем просто “длинный” трансформер, а ещё и новый механизм, совмещающий локальное и глобальное внимание. Он же позволяет и добавлять структурированные данные. Выглядит полезно, let’s dive in.

Первичная проблема всё та же -- квадратичная сложность внимания и как следствие короткий attention span ванильных (да и многих приперчённых) трансформеров. 512 токенов это как-то очень мало.

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

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

В работе рассматривают только энкодер трансформера, декодер оставляют для будущих работ.

Какие изменения относительно ванили.

1. Относительное позиционное кодирование.

Уже было в работе  Peter Shaw “Self-Attention with Relative Position Representations” (https://arxiv.org/abs/1803.02155), показало свою эффективность, странно, что ещё не пришло всюду.

Если в двух словах, то задаётся окно в C позиций, заводится 2C+1 (влево-вправо) меток относительных позиций которыми метятся рёбра (граф по сути) между парами входных токенов, для каждой метки выучивается свой эмбеддинг, который модифицирует механизм внимания.

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

2. Глобально-локальное внимание.

Вход трансформера разбивается на две последовательности: global input (небольшое количество дополнительных токенов) и long input (обычный вход, с которым будет работать трансформер), которые обрабатываются отдельно.

Внимание соответственно разделяется на 4 отдельных куска:
- global-to-global (g2g)
- global-to-long (g2l)
- long-to-global (l2g)
- long-to-long (l2l)

Самая жирная часть -- это l2l, внимание в ней ограничиваем радиусом k (то есть окном размера k, как в Longformer). Остальные куски внимания неограничены (каждый токен может смотреть на любой другой).

Если k=1 и размер глобального внимания тоже 1, то получаем Star-Transformer (https://arxiv.org/abs/1902.09113), весьма интересную, но почему-то малоизвестную модель.

Для пущей гибкости для всех этих вниманий заводим отдельные булевые матрицы, чтобы можно было более тонко контролировать кто на что смотрит (по сути вводить inductive bias или задавать структуру задачи).

Также ради оптимизации и ускорения эти 4 части внимания внутри представляются двумя кусками.

Собственно работа с длинными последовательностями устроена так. Входные токены (например, word pieces) кладутся в длинный вход. Дальше, в зависимости от структуры входа подразумевается какое-то его разбиение на сегменты (предложения, например, или параграфы). Кладём на каждый сегмент один сегментный токен в глобальный вход, используя относительные позиционные эмбеддинги, чтобы эти сегменты между собой упорядочить. Ну и вообще с этими относительными метками можно по-разному играть, а в матрицы добавлять всякие маски, если надо. Богато.

Можно также вводить в модель структурированные данные: порядок между предложениями, иерархию, и в общем что придумаете и что можно закодировать в виде графа.

3. Предобучение модели

Делается через стандартный Masked Language Model (MLM) как в берте + Contrastive Predictive Coding (CPC) вместо Next Sentence Prediction (NSP), от которого уже много где отказались.
источник
gonzo-обзоры ML статей
Идея CPC в том, чтобы предсказывать следующие элементы входа в латентном пространстве вместо того, чтобы предсказывать реальные токены. Используются токены глобального входа, для которых минимизируют разницу между их скрытыми представлениями и представлениями токенов замаскированных предложений.

Из основного всё.

Как Longformer умел стартовать с обученных весов RoBERTa, ETC умеет стартовать с обученных весов BERT’а. Это получается, несмотря на различия (наличие глобальных токенов и относительные позиционные эмбеддинги).

Проверялись на датасете Гугла Natural Questions (NQ). Там дан вопрос и статья Википедии. Надо найти короткий ответ (несколько слов) и длинный ответ (параграф, например), если они есть. Обучающий сет на ~300K примеров, медианная длина 3258 wordpiece токенов, максимальная 77962. Ну то есть далеко не 512.

Обучали на радиусе локального внимания k=84, относительные эмбеддинги ограничивали C=12. Длинный вход был в 4096 токенов. Тексты, что не влезали, проходили скользящим окном с перекрытием, финальные предсказания агрегировали.

ETC работает, профит от 4096 токенов есть, CPC помогает, дополнительное маскирование внимания тоже небольшой плюс приносит.
источник
gonzo-обзоры ML статей
источник
gonzo-обзоры ML статей
источник
gonzo-обзоры ML статей
источник
gonzo-обзоры ML статей
источник
2020 June 01
gonzo-обзоры ML статей
GPT-3 (настоящее название: Language Models are Few-Shot Learners)
Tom B. Brown, и множество других
Статья: https://arxiv.org/abs/2005.14165
Код (модели, конечно, нет, а когда будет, то с её размером, видимо, сразу на торрентах): https://github.com/openai/gpt-3

Невозможно не написать про GPT-3. С ним наверняка ещё светит много хайпа.

Работа исповедует принцип “Быстрее! Выше! Сильнее!”.

Примерно год назад, в феврале 2019 OpenAI анонсировали семейство моделей GPT-2 (https://openai.com/blog/better-language-models/), огромную авторегрессионную языковую модель, постороенную на декодере трансформера, самую тяжёлую из которых (1.5B на 1.5 млрд параметров) зарелизили только в ноябре. Её предшественник, GPT, был анонсирован в июне 2018. Ну то есть примерно через год очередная новая инкарнация. Ставлю на GPT-4 в июне следующего года.

Новая модель тоже является целым семейством моделей разной жирности, от скромной 125М параметров до монстрической 175B, которую дальше и зовут просто “GPT-3” без всяких суффиксов.

Технических изменений немного, это всё та же архитектура GPT-2, но теперь слои полного внимания чередуются со слоями разреженного внимания, похожего на Sparse Transformer, (https://arxiv.org/abs/1904.10509), тот же метод обучения со всеми хитростями, и всего пропорционально побольше — слоёв (до 96), размерности (до 12288), окно контекста (до 2048 токенов, у GPT-2 было 1024, а у GPT — 512).

Для обучения такой модели использовался model parallelism по разным GPU (кластер Microsoft с V100, видимо, этот https://blogs.microsoft.com/ai/openai-azure-supercomputer/).

Датасет тоже сильно вырос, теперь это 570Gb отфильрованного CommonCrawl (из 45Tb нефильтрованного и сжатого текста), плюс добавка нескольких высококачественных датасетов (WebText2, Books1, Books2, Wikipedia). Итого примерно 500B токенов BPE. У GPT-2 был датасет с вроде как 40Gb текста.

Давно был вопрос, как скейлятся все эти модели. Кроме самого толстого из GPT-2 на 1.5B параметров в прошлом году появились Megatron-LM от Нвидии на 8.3B (https://arxiv.org/abs/1909.08053), гугловый T5 на 11B (https://arxiv.org/abs/1910.10683) и вот недавно Turing-NLG от Microsoft на 17B (https://www.microsoft.com/en-us/research/blog/turing-nlg-a-17-billion-parameter-language-model-by-microsoft/). И вот скачок в 10 раз, 175B.

Далее, подход к оценке модели на разных задачах такой же, как в GPT-2 — никакого файнтюнинга и вообще обучения модели под конкретную задачу (кроме LM) не производится, модели делается conditioning описанием задачи (на английском языке) и может быть одним или несколькими (обычно от 10 до 100) примерами решения этой задачи, и затравкой для продолжения под новую задачу. Всё. Это называется “in-context learning”.

Если модель достаточно богатая, то она может всё “понять” и решить задачу. Эти три варианта conditioning’а зовутся Zero-Shot (на вход дано только описание задачи), One-Shot (описание + 1 пример) и Few-Shot (описание + несколько примеров).

Год назад на GPT-2 такой метод давал результаты сравнительно скромные и хуже файн-тюнинга, но с ростом модели в 100 раз (по сравнению с GPT-2 1.5B) всё оказалось весьма и весьма неплохо.

Fine-tuning вообще в этой работе не рассматривается, эта тема остаётся на будущее. Когда такая модель окажется в доступности, конечно, будет интересно её пофайнтюнить и подистиллировать. Результаты обещают быть интересными.

Собственно, значимая часть работы посвящена прогону этой модели на разных задачах в вариантах c Zero/One/Few-Shot. Результаты весьма достойны, кое-где получен новый SoTA. Перформанс хорошо растёт с увеличением сложности модели, а также обычно и с увеличением количества показанных (на входе, не при обучении!) примеров. В каких-то случаях модель и на Zero-Shot неплохо справляется, а в каких-то плохо, но при предъявлении примеров научается сносно решать задачу.
источник
gonzo-обзоры ML статей
Кое-в-каких результатах есть сомнения, потому что в CommonCrawl могли просочиться данные этих задач, и такие протечки выявлены (всё отфильтровать не смогли из-за бага, а переучивать было уже поздно/дорого). Но авторы показывают, что эффект этих протечек скорее всего слаб (про это отдельная большая секция в статье).

Задачки разные, языковое моделирование [”Our largest model sets a new SOTA on PTB by a substantial margin of 15 points, achieving a perplexity of 20.50”], LAMBADA [”in a zero-shot setting GPT-3 achieves 76% on LAMBADA, a gain of 8% over the previous state of the art”], Cloze, дополнение текста, различные QA [”Overall, on one of the three datasets GPT-3’s one-shot matches the open-domain fine-tuning SOTA. On the other two datasets it approaches the performance of the closed-book SOTA despite not using fine-tuning”], перевод (корпуса специально не чистили от английского, так что другие языки просочились и перевод местами даже неплохо работает, сравнимо с другими unsupervised моделями, но конечно несравнимо с промышленными supervised решениями), Winograd-подобные задачки, common sense reasoning [”PhysicalQA (PIQA), asks common sense questions about how the physical world works and is intended as a probe of grounded understanding of the world. GPT-3 achieves 81.0% accuracy zero-shot, 80.5% accuracy one-shot, and 82.8% accuracy few-shot (the last measured on PIQA’s test server). This compares favorably to the 79.4% accuracy prior state-of-the-art of a fine-tuned RoBERTa.”] и прочее, и прочее.

Из интересного, дали синтетические задачки на арифметику (кое-где неплохо справилась), всякие испорченные слова (циклический сдвиг, анаграммы, реверс, случайные вставки) — тут местами не очень, возможно потому что BPE, а не символьная модель, ей приходится учить сложные паттерны для таких задач.

На SAT Analogies “GPT-3 achieves 65.2% in the few-shot setting, 59.1% in the one-shot setting, and 53.7% in the zero-shot setting, whereas the average score among college applicants was 57% (random guessing yields 20%)”.

Ну и, конечно, новости погенерили. И довели их качество до уровня неразличимости средним американцем. Ждём очередной волны PR-хайпа вокруг этой темы.

Также прикольные результаты про применение моделью новых слов (которых она не знала и первый раз увидела у себя на входе) и про исправление правописания.

Как всегда отдельный раздел про Potential Misuse (по GPT-2 вроде не заметили особо ничего, кроме обсуждений на форумах). Также отдельная тема про посмотреть, какие bias внутри модели оказались. Проверяют на примере пола, религии и расы.

В целом, конечно, прикольные результаты. Пока главный вывод — что всё прекрасно скейлится. И это ещё файнтюнить не пробовали даже.

Что, интересно, такими темпами будет через пару лет… Продолжаем наблюдение.
источник
gonzo-обзоры ML статей
источник
gonzo-обзоры ML статей
источник
gonzo-обзоры ML статей
источник
gonzo-обзоры ML статей
источник
gonzo-обзоры ML статей
источник
gonzo-обзоры ML статей
источник
gonzo-обзоры ML статей
источник