Токен за токеном - SeNS Boston
Оставалась одна философская проблема. Если ни в каком месте сети не сохраняется порядок слов, как сеть узнает, что «собака укусила человека» — это не то же самое, что «человек укусил собаку»? В рекуррентной сети порядок естественен: слова приходят по очереди. В архитектуре без рекуррентности — нет.
Чтобы это исправить, авторы добавили в каждый вектор слова небольшую сигнальную составляющую, кодирующую его позицию в предложении. Они придумали аккуратное математическое решение: использовать значения синусов и косинусов разных частот в зависимости от позиции. Это позволило сети различать слова, стоящие в разных местах, не делая никакой явной рекуррентной обработки. Изобретение это они назвали positional encoding, позиционное кодирование.
Трое суток на восьми видеокартах
В мае 2017 года готовая архитектура была обучена на классической задаче машинного перевода — конкурсном наборе WMT 2014 для пары английский-французский. Большая версия модели содержала более двухсот миллионов параметров, что по тогдашним меркам было средним размером, но не выдающимся. Обучение шло на восьми видеокартах в течение трёх с половиной суток.
Полученные результаты были удивительны не столько абсолютной величиной, сколько отношением её к стоимости обучения. По стандартной метрике BLEU модель набрала 41,8 балла, что было новым state-of-the-art показателем. Лучшие на тот момент рекуррентные модели, обученные командами в Google и Facebook, набирали примерно столько же, но требовали для обучения недели или даже месяцы вычислений на сотнях видеокарт. Трансформер показывал ту же точность, обучаясь в десятки раз дешевле и быстрее.
Это означало, в принципе, две очень важные вещи. Первая: качество перевода в принципе достижимо без рекуррентных сетей. Гипотеза Якоба подтвердилась. Вторая, гораздо более далекоидущая: эту архитектуру можно масштабировать. Раз модель в двести с лишним миллионов параметров обучается за три с половиной дня, значит, модель в десять миллиардов параметров — потенциально за приемлемое время. На рекуррентных сетях о таком масштабе нельзя было даже мечтать.
Команда провела ещё несколько дополнительных экспериментов и убедила саму себя, что архитектура хорошо работает не только на машинном переводе. На задаче синтаксического парсинга английского языка трансформер также показал отличные результаты. Это, в общем-то, и решило: они написали полную статью, и решили публиковать её не только как работу по машинному переводу, а как работу о новой общеприменимой архитектуре нейронных сетей для последовательной обработки данных.
«All You Need»
Когда статья была написана, оставался последний вопрос: как её назвать. Авторы сидели в одной из переговорных комнат в Маунтин-Вью и спорили несколько часов. У Лиона Джонса был хороший музыкальный вкус, и в какой-то момент он предложил вариант, по форме совпадавший с названием известной песни группы Beatles. В оригинале песня называлась All You Need Is Love. У них всё было про внимание, и Джонс сказал: давайте назовём Attention Is All You Need. Получится с одной стороны звучно, с другой — точно по сути.
Остальные согласились с улыбкой. Этот заголовок впоследствии станет одним из самых известных в истории компьютерных наук и, кстати, породит особый под-жанр научных статей с подобными названиями. К двадцать пятому году количество arXiv-препринтов, в названии которых будет фраза All You Need, превысит семьсот.
Имя самой архитектуры — Transformer — было предложено Якобом. Просто потому, что это слово ему нравилось как звучание. Никакого глубокого смысла за этим не было. В одной из позднейших бесед Якоб об этом так и сказал: Trans-former — слово, которое мне понравилось.
В нём, разумеется, можно было разглядеть и более глубокий смысл: трансформация одной последовательности в другую, transformation. Но семантически название было не более и не менее выбранным, чем когда-то «бит» (от binary digit) или «энтропия» (по совету фон Неймана во время одного из визитов Шеннона в Принстон). Имя — это имя; ему нужно, чтобы оно запоминалось и легко произносилось, а не чтобы оно описывало внутреннее устройство явления.
12 июня 2017 года статья появилась на arXiv. К тому моменту восемь её авторов уже отправили её на конференцию NIPS 2017 (которая через несколько лет будет переименована в NeurIPS), которая должна была проходить в Лонг-Бич в декабре. Препринт быстро начал расходиться. К утру следующего дня про него говорили в кулуарах нескольких крупных лабораторий по всему миру.
Реакция мира
Реакция академического сообщества на трансформер не была мгновенной взрывной волной. Это позднейший миф. В первые недели после выхода статья воспринималась примерно так же, как любая хорошая публикация на NIPS: вот ещё одна новая архитектура для машинного перевода, у неё есть свои преимущества, она интересная.
Однако три вещи заметили сразу:
Во-первых, на исходный код. Команда вместе со статьёй выложила работающую реализацию на основе tensor2tensor от Лукаша Кайзера. Это означало, что любой исследователь в любой лаборатории мог в течение часа скачать код и запустить трансформер у себя. По меркам того времени это была редкость. Большинство ML-публикаций не приходило с прилагающимся кодом; результаты приходилось воспроизводить с нуля, что обычно занимало месяцы и часто заканчивалось неуспехом.
Во-вторых, на лёгкость параллелизации. Уже к осени 2017 года несколько групп воспроизвели трансформер, запустили его на больших кластерах в десятки и сотни GPU, и убедились, что он действительно отлично масштабируется. Удвоение количества видеокарт давало почти двукратное ускорение обучения. Этого нельзя было сказать о LSTM-моделях.
В-третьих, на качество. Через несколько месяцев на нескольких языковых парах трансформер показывал результаты, обходящие лучшие LSTM-системы, причём с гораздо меньшим временем обучения. К концу 2017 года в индустрии было ясно: новые модели машинного перевода нужно делать на трансформерах.
Что было гораздо менее очевидно тогда — это универсальность новой архитектуры. В исходной статье трансформер предложен в форме encoder-decoder, со специализацией на машинный перевод. Но почти сразу разные исследователи начали задаваться вопросом: а если использовать только энкодер, без декодера? Получится ли хорошая модель для классификации текстов? А если, наоборот, использовать только декодер, без энкодера? Получится ли что-то для свободной генерации текста?
Эти два вопроса — «только энкодер» и «только декодер» — через год превратятся в две главные ветви будущих больших языковых моделей. Первая ветвь породит BERT и его потомков; вторая — GPT и всю генеративную линию вплоть до ChatGPT. Но это случится в 2018 году, не в 2017.
Что было неочевидно
Когда восемь авторов трансформера сдали статью на