Токен за токеном - SeNS Boston
К 2016 году Якобу было около тридцати пяти. Он успел поработать с архитектурами, основанными на статистических методах, потом с нейронными сетями на LSTM, видел в реальном времени, как Google Translate переходит на нейронные рельсы. У него к этому моменту накопилось определённое раздражение от LSTM-ной парадигмы. Слишком долгое обучение, слишком плохая параллелизация, слишком ограниченная архитектура.
В 2016 году в группе Якоба сделали небольшую, скромную, но важную работу. Они применили механизм внимания не как добавку к рекуррентной сети, а к простой нейросети без рекуррентности, на узкой лингвистической задаче (установить, следует ли одно утверждение из другого). Результаты их удивили. Их маленькая модель, без всяких LSTM, побила тогдашние state-of-the-art системы на этой задаче, причём имея в десять раз меньше параметров и обучаясь на порядок быстрее.
Якоб задумался. Если внимание само по себе, без рекуррентности, способно так хорошо работать на узкой задаче, что мешает применить ту же идею в полном объёме? Что если вообще выбросить LSTM из машинного перевода? Что если сделать модель, где есть только внимание, повторённое много раз, и больше ничего рекуррентного?
Эту гипотезу Якоб начал высказывать коллегам осенью 2016 года. Большинство кивало вежливо и относилось со скепсисом. Машинный перевод как задача казался слишком сложным; были устоявшиеся подходы, которые работали; зачем рисковать, чтобы заменить их на что-то непроверенное?
Даже отец Якоба, когда сын рассказал ему о своей идее в одном из телефонных разговоров, отнёсся скептически. Ганс Ушкорайт, человек, посвятивший пятьдесят лет жизни обработке естественного языка, ответил сыну примерно так: языковая структура слишком сложна, чтобы её можно было выучить одним только вниманием; ты, вероятно, упрощаешь. Якоб засмеялся, согласился, и продолжил уговаривать коллег по Google попробовать.
Команда собирается
Ашиш Васвани
Илья Полосухин, основатель NEAR Protocol
Ноам Шазир
Никки Парма, ScaleUp 2023
Ллион Джоунз, CIC Tokyo
Лукаш Кайзер, TEDAI Vienna 2025
Эйдан Гомес, ALL IN 2025
К началу 2017 года вокруг идеи Якоба постепенно собралась небольшая группа.
Первым, кто всерьёз заинтересовался, был Ашиш Васвани, индиец по происхождению, защитившийся в Университете Южной Калифорнии, недавно перешедший в Google Brain. Васвани был педантичен, методичен, аккуратен в коде, любил долгие отладочные сессии до результата. Если Якоб был генератором идей, то Васвани был тем, кто эти идеи доводил до работающих систем.
К Васвани присоединился софтверный инженер из Украины по имени Илья Полосухин. Илья родился в Харькове в середине восьмидесятых, получил магистра по прикладной математике в Харьковском политехническом институте, в 2008 году переехал в США, а в начале 2014 года пришёл в Google — то есть к моменту работы над трансформером он был в Google уже три года. Молодой, с резкой манерой общения, не любил длинных дискуссий, очень быстро писал код. С Васвани они быстро сработались: один проектировал, другой реализовывал; через несколько недель у них была первая работающая прототипная модель, состоявшая только из слоёв внимания и обучавшаяся на маленьком наборе данных.
Параллельно идею Якоба услышал и заинтересовался ею Ноам Шазир. Шазир был ветераном Google в самом буквальном смысле: пришёл в компанию в начале двухтысячных и за пятнадцать лет успел оставить след во многих главных проектах: Google Search, Google Translate, в архитектурах ранних нейронных сетей. Среди коллег Шазир был знаменит способностью видеть, как нужно докрутить хорошую идею до отличной. У него был особый, ему одному свойственный стиль работы: он садился к проекту и за несколько дней предлагал три или четыре улучшения, каждое из которых увеличивало качество вдвое. Якоб, узнав, что Ноам интересуется, обрадовался: с Ноамом в команде шансы возрастали.
Постепенно к проекту присоединились и другие: Ники Пармар, ровесница Полосухина, отвечавшая за варианты моделей и кодовую базу; Лион Джонс, валлиец из британского отделения Google, занимавшийся аналогичной инфраструктурной работой; Лукаш Кайзер, польский математик, известный своими работами по компьютерной алгебре, к 2017 году переключившийся на нейронные сети и автор фреймворка tensor2tensor; Эйдан Гомес, тогда студент Университета Торонто, всю весну 2017 года стажировавшийся в Google и работавший с Кайзером над инфраструктурой обучения.
Восемь человек, разбросанных по разным группам Google: кто-то из Google Brain в Маунтин-Вью, кто-то из Google Research в Маунтин-Вью же, плюс Гомес, приехавший на стажировку из Торонто. Большая часть общей работы шла через еженедельные видео-конференции и обмен экспериментальными результатами в Google-овской системе.
Что они построили
Архитектура Transformer: энкодер и декодер
Архитектура, к которой они пришли весной 2017 года, выглядела одновременно странно и красиво.
В ней не было ни одной рекуррентной сети. Никакого LSTM. Никаких скрытых состояний, передающихся от шага к шагу. Вместо этого: стек из шести одинаковых блоков «энкодера» и шести одинаковых блоков «декодера». Каждый блок выглядел просто: слой внимания, потом слой обычной полносвязной сети, потом нормировка. Вход — последовательность векторов слов; выход — последовательность векторов того же размера.
Ключевой механизм назывался self-attention, само-вниманием. В нём каждое слово предложения, грубо говоря, обращалось ко всем словам того же предложения и спрашивало у них: «насколько ты для меня сейчас важно?» Получались веса. Слово смешивало векторы всех остальных слов с этими весами и формировало свой новый, обогащённый вектор.
Это была старая идея Богданау, но применённая по-другому. У Богданау attention был между двумя предложениями: декодировщик смотрел на исходник. Здесь attention был внутри одного и того же предложения, между его собственными словами. Каждое слово, в каком-то смысле, «слушало» все остальные.
Ноам Шазир улучшил эту идею двумя приёмами, которые стали потом каноническими. Первый: он предложил вместо одного механизма внимания запускать несколько одновременно, параллельно, по разным «направлениям». Идея была такая: пусть в одном направлении сеть учится обращать внимание на синтаксические связи (подлежащее—сказуемое), в другом — на семантические (что к чему относится), в третьем — на длинно-дистанционные (местоимение и его антецедент за десять слов до). По отдельности неясно, чему именно научится каждое направление, но в сумме они смогут уловить разные виды связей. Это назвали multi-head attention, многоголовое внимание. В исходной модели было восемь параллельных «голов».
Второй