Трансформер был изобретен в 2017 году. Впервые она была описана в препринте — научной работе, опубликованной в интернете без предварительного рецензирования, — под несколько парадоксальным названием «Внимание — это всё, что вам нужно»[*1]. Поначалу статья не произвела особого фурора. Будучи поданной на ежегодный научный «слет» — конференцию Neural Information Processing Systems (NeurIPS), проходившую в том году в Лонг-Бич, штат Калифорния, она даже не удостоилась устного доклада (честь, предназначенная исключительно для работ с наивысшим рейтингом). Однако сегодня, всего шесть лет спустя, эта статья была процитирована более 120 000 раз, что делает её одной из самых влиятельных за всю историю — в любой научной области. Для сравнения: самая цитируемая статья Альберта Эйнштейна на данный момент насчитывает всего 23 000 цитирований.
Так что же делает трансформер? Вопреки названию, он не имеет ничего общего с обобщенными правилами трансформации Ноама Хомского (или с Оптимусом Праймом — персонажем мультфильмов и коллекционных игрушек 1980-х годов). Чтобы понять, как устроен трансформер, нужно начать с концепции внимания. Представьте, что у вас есть последовательность данных, собранных с прибрежных метеостанций Роберта Фицроя и описывающих последовательные измерения скорости и направления ветра, влажности и давления в различных точках побережья, охватывающих Ла-Манш, Северное море и атлантическое побережье Великобритании. Допустим, вы хотите предсказать завтрашнюю погоду в Ливерпуле. Модель seq2seq (стандартный прогностический инструмент примерно до 2017 года) настраивала бы набор рекуррентных весов, сопоставляющих внутреннее состояние активации сети в любой момент времени t с его следующим состоянием в момент времени t + 1. Настроенные путем обработки огромных массивов метеорологических данных, полученные значения этих весов можно уточнять до тех пор, пока они не позволят прогнозам погоды чрезвычайно сложным образом зависеть от закономерностей в недавних наблюдениях. Это метеорологический эквивалент входного запроса — структуры данных, продолжение которой мы хотим предсказать. Таким образом, модель может усвоить, что сильные ветры на побережье Корнуолла имеют тенденцию перемещаться по Ирландскому морю и обрушиваться на Мерсисайд. (На практике Метеорологическая служба Великобритании не использует RNN, поскольку погода довольно хорошо подчиняется моделям гидродинамики, однако нейронные сети успешно применяются для наукастинга — сверхкраткосрочного прогнозирования.)[*2]
Однако, когда дело доходит до моделирования последовательностей данных, возникает проблема. При прогнозировании будущего далеко не вся информация о прошлом одинаково полезна. Непредсказуемая погода Великобритании большую часть года формируется под влиянием превратностей Гольфстрима, несущего свои воды с запада, поэтому нам, возможно, захочется придать больший вес наблюдениям в Атлантике, нежели в Северном море — по крайней мере, при составлении прогноза для Ливерпуля. А случайные сведения о том, ложатся ли коровы на землю или горит ли небо красным на закате, вряд ли сильно помогут, что бы там ни говорила двоюродная бабушка Матильда. В идеале мы хотели бы намеренно игнорировать или, напротив, выделять определенные фрагменты прошлых данных при составлении прогнозов на будущее. Именно эту проблему и решает механизм внимания.
То, как исследователи ИИ определяют внимание, несколько расходится с тем, как этот термин используют психологи (да и все остальные), но хорошо передает суть: обработка информации должна быть избирательной — вы не сможете сосредоточиться на домашнем задании, если залипли в YouTube. На самом деле внимание впервые начали использовать в моделях seq2seq еще до появления трансформеров, чтобы увеличивать или уменьшать вес отдельных частей входной последовательности при прогнозировании следующего слова. Но трансформер доводит концепцию внимания до предела. Алгоритм, описанный в статье 2017 года, полностью отказывается от RNN, задействуя вместо этого нейросеть, которая обрабатывает всю входную последовательность параллельно. Она использует разновидность внимания, называемую «самовниманием» (self-attention), чтобы делать акцент на каждом элементе i при прогнозировании j (отсюда и название: «Внимание — это всё, что вам нужно»).
Чтобы понять, почему самовнимание так полезно при работе с языком, рассмотрим задачу продолжения двух следующих запросов:
As I approached the ancient tree, Naeema said that its bark was _______
As I bent down to stroke the dog, Naeema said that its bark was _______
В английском языке слово bark многозначно — оно имеет более одного значения. Поэтому вам нужно вернуться к началу запроса, чтобы понять, что первое bark относится к дереву, а второе — к собаке. Эта информация жизненно важна для понимания того, будет ли лучшим продолжением «used for curing fever» (используется для лечения лихорадки) или «worse than its bite» (хуже своего укуса). Самовнимание — это вычислительный трюк, позволяющий выяснить, что с чем связано во входных данных. На самом деле оно обучается двум матрицам параметров, «ключу» (key) и «запросу» (query), которые (при умножении на векторы признаков соответствующих слов i и j) дают вес внимания.[*3] Это позволяет сетям-трансформерам усвоить, что слово «tree» (дерево) связано с «bark» в первом запросе, а «dog» (собака) связано с «bark» во втором, что значительно повышает вероятность получения разумного продолжения фразы.
Этот пример напоминает нам, что языковое моделирование, как и прогнозирование погоды, — это прежде всего умение разобраться, что с чем связано. Анализировать предложения трудно, поскольку связи в последовательности входных данных часто становятся очевидны только задним числом. Трансформер превосходит другие модели в языковом моделировании, потому что, в отличие от RNN (которая «откусывает» входные данные слово за словом), он заглатывает запрос целиком. Это позволяет ему использовать самовнимание, чтобы определять, как каждое слово соотносится со всеми остальными предшествующими словами (и его конкретной позицией в предложении). Представьте, что я прошу вас составить план рассадки гостей для званого ужина, но с одним условием: я буду называть имена гостей по одному, а вы должны сразу же распределять их по местам. Слыша каждое имя, вы, возможно, будете мысленно группировать гостей на основе дружбы, общих интересов или прошлых романтических отношений, на ходу набрасывая возможный план рассадки. Однако это было бы невероятно трудно, ведь вы не знаете, кто будет следующим: последний гость в списке в итоге может оказаться зажатым между бывшим возлюбленным и грозным боссо. С похожей проблемой сталкивается и RNN, которая принимает входные данные последовательно. Ваш мысленный план рассадки похож на векторное пространство эмбеддингов в контекстном векторе модели seq2seq, который собирается по кусочкам из входных данных и не может быть скорректирован при появлении новой информации. Трансформер же обладает роскошной возможностью получить весь список гостей целиком. Если бы у меня был весь список на листе бумаги, я мог бы мысленно сопоставить людей с местами, обратившись к своему внутреннему знанию о том, какие пары гостей дружат, а какие враждуют (кто с кем ладит) — процесс, очень похожий на самовнимание. Очевидно, что такой способ планирования вечера был бы куда более эффективным.
Еще одна причуда языка, с которой трансформер легко справляется, заключается в том, что значение местоимения часто можно определить только из контекста. На это впервые указал в 1972 году Терри Виноград, создатель вышеупомянутой SHRDLU, приведя в качестве примера пары предложений, иллюстрирующих эту трудность. Рассмотрим следующие:
Полиция отказала демонстрантам в разрешении, потому что они боялись насилия.
Полиция отказала демонстрантам в разрешении, потому что они призывали к насилию.
Чтобы понять, что «они» относится к полиции в первом предложении и к демонстрантам во втором, можно предположить, что полиция боится насилия, а демонстранты к нему призывают, а не наоборот (что может быть как правдой, так и неправдой). В 2011 году, почти сорок лет спустя после первоначального наблюдения Винограда, эта лингвистическая загадка превратилась в полноценное испытание для обработки естественного языка (NLP), известное как тест схем Винограда (Winograd Schema Challenge). В рамках этого теста системам ИИ предлагалось интерпретировать тщательно подобранный набор схем в соответствии с человеческим здравым смыслом. Это оставалось одним из самых сложных бенчмарков в языковом моделировании, пока не появился трансформер. Он преодолел это испытание играючи, даже не запыхавшись, и теперь тест схем Винограда представляет в основном лишь исторический интерес.[*4]
Преимущества трансформера проявляются во многом. В машинном переводе одна из частых трудностей заключается в том, что в разных языках может быть несовместимый порядок слов. Например, фраза European Economic Zone («Европейская экономическая зона») переводится на испанский как Zona Económica Europea, требуя от сети избегать переводческого ляпа Europea Económica Zona. В других языках эта проблема стоит еще острее. В корейском языке предложение I want to try out a suit I saw in a shop that’s across the street («Я хочу примерить костюм, который видел в магазине через дорогу») может быть переведено как 저는 거리 건너편 가게에서 본 정장을 시도해 보고 싶습니다, что при обратном дословном переводе на английский звучит как I street across in a shop saw a suit try out want to — радикальное перемешивание порядка слов, при котором второе слово становится предпоследним, а последнее — вторым! К счастью, трансформер способен обучаться весам внимания, которые связывают каждое слово с его соответствующим эквивалентом (независимо от порядка), что существенно помогает в работе.
Английские предложения также могут сбить вас с толку, навязывая неверную синтаксическую структуру из-за привычного словоупотребления. Классические примеры таких случаев называют предложениями «садовой дорожки» (garden-path sentences), потому что их структура заводит вас в тупик (в английском языке это описывается идиомой «вести по садовой дорожке»), заставляя предполагать неверный разбор на именную группу (NP) и глагольную группу (VP). Например, если вы услышите предложение the old man the boat, вашей первой мыслью, вероятно, будет то, что здесь пропущено какое-то слово. Но на самом деле это абсолютно грамматически верное предложение — оно просто сбивает вас с толку, предлагая более привычный разбор (NP: the old man… [старик]), который отличается от его фактического разбора (NP: the old [старики], VP: man the boat [управляют лодкой]). Еще один классический пример — when the dog scratched the vet took off his muzzle (предоставлю вам самим разобраться в его правильном разборе). Такие предложения особенно трудны для RNN, поскольку скрытое состояние изменяется в соответствии с ожидаемой интерпретацией (NP: the old man…), которую затем невозможно отменить, не повернув время вспять. Параллельная обработка (с механизмом внимания) в трансформере облегчает улавливание этих тонких скрытых течений в смысле предложения — опять же потому, что благодаря самовниманию он может анализировать контекст «задним числом», что позволяет ему понимать, какие части предложения связаны друг с другом.
Поскольку трансформер поглощает входные данные одним махом, его возможности неизбежно ограничиваются длиной контекста — количеством слов, которые вмещаются в запрос. На самом деле большинство современных моделей NLP не кодируют слова напрямую, а вместо этого получают «токены». Токены — это сублексические единицы, включающие в себя распространенные фрагменты слов, такие как суффиксы, обозначающие форму герундия (ing) или превосходную степень (est), различные знаки препинания и специальные токены, указывающие на начало и конец запроса, а также обычные слова вроде toast («тост») и hamster («хомяк») (большинство БЯМ имеют словарь объемом около 50 000 токенов, каждый из которых кодируется вектором признаков длиной 12 288 — это означает, что язык моделируется в 12 000-мерном пространстве). По мере масштабирования моделей длина контекста увеличивается: как у GPT-4, так и у Claude длина контекста теперь составляет 100 000 токенов и более (что равно примерно половине объема увесистого тома «Улисса» Джеймса Джойса), а модель Gemini Ultra от Google имеет длину контекста более миллиона токенов. Но даже ничтожных 512 токенов самой маленькой модели GPT-2 (около 400 слов) было бы более чем достаточно для работы с приведенным выше отрывком о поездке к тете в Японию, где требовалось сделать прогноз о разговоре по-японски на основе слова Япония, встретившегося четырьмя предложениями ранее.
Теперь становится понятно, почему масштаб действительно важен для БЯМ. Более крупные модели обладают бóльшим контекстом, что позволяет параллельно обрабатывать целые страницы текста. Наслаивая трансформеры друг на друга, где каждый использует механизм самовнимания, мы можем пропускать язык через своеобразный «вычислительный небоскреб», который выявляет связи каждого слова в любой позиции со всеми остальными. В сочетании с гигантскими объемами обучающих данных эти инновации позволяют БЯМ моделировать очень далекие связи в тексте — не просто понимать, что tree (дерево) указывает на одно значение слова bark (кора), а dog (собака) — на другое (лай), но и улавливать гораздо более глубокие смысловые связи в длинных прозаических отрывках. Сопоставляя паттерны среди токенов в начале, середине и конце книги, огромная трансформерная сеть способна понять, что нежелание Элизабет Беннет выходить замуж за Дарси в конце «Гордости и предубеждения» вызвано его первоначальным высокомерием и пренебрежением, описанными за много сотен страниц до этого. Для систем ИИ становится возможным уловить сложный политический или философский аргумент, который выстраивается постепенно, путем введения новых понятий и цитирования многочисленных эмпирических доказательств, по нарастающей превращаясь в убедительные доводы на протяжении многих тысяч слов. Становится возможным придумать новое блюдо, изучив различные способы сочетания ингредиентов в множестве рецептов из кулинарной книги. Короче говоря, становится возможным использовать язык так, как это делают грамотные, образованные люди изо дня в день.
БЯМ учатся генерировать человекоподобный язык исключительно на основе паттернов употребления слов, без какого-либо явного механизма разделения синтаксиса и семантики. Таким образом, их успех опровергает утверждения Ноама Хомского и его последователей о том, что естественному языку принципиально невозможно обучиться на основе одной лишь статистики текста. Ноам Хомский утверждал, что использование одной только статистики слов заставит вас ошибочно счесть фразу «бесцветные зеленые идеи яростно спят» неграмматичной, поскольку такие переходы, как «бесцветные зеленые» и «яростно спят», крайне маловероятны в английском языке. Согласно же теории Ноама Хомского, усвоение языка возможно только благодаря существованию универсальной грамматики — базового набора вычислительных операций, «вшитых» в человеческий разум и служат шаблоном для изучения синтаксических правил, встречающихся во всех языках мира, от африкаанс до зулу. Оказывается, это утверждение о невозможности обучения неверно. БЯМ вроде ChatGPT, Claude и Gemini научились строить абсолютно связные предложения, просто читая множество других предложений и учась предсказывать, какой токен будет следующим (более того, как это ни уязвляет наше самолюбие, ChatGPT весьма неплохо справляется с генерацией предложений, подражающих знаменитому примеру Ноама Хомского, таких как «безвкусные красные убеждения громко шепчут»).
Этот поразительный факт, похоже, еще не дошел до ортодоксальных хомскианцев, большинство из которых продолжают с ходу отвергать БЯМ. На самом деле весьма примечательно, что значительная часть лингвистического сообщества, судя по всему, отказывается признавать успех современных языковых моделей. Приведем один пример: в крупной работе, опубликованной в 2016 году, исследовались успехи и неудачи моделей типа seq2seq при решении ключевых грамматических задач, а также обсуждалось значение этих результатов для лингвистической теории.[*5] По состоянию на 2022 год эта статья была процитирована более 500 раз, что указывает на ее огромное влияние. Но на лингвистов она практически не повлияла. Среди этих цитирований лишь шесть принадлежали исследователям, работающим в области теоретической лингвистики; на самом деле статья собрала больше цитирований в сфере компьютерного моделирования в сельском хозяйстве.[*6] Отсюда, конечно же, следует вывод, что многим ученым, работающим в традиции Ноама Хомского, еще только предстоит смириться с тем фактом, что языковые модели могут создавать безупречно грамматически правильные предложения с помощью статистического моделирования больших текстовых корпусов, хотя их никто никогда не обучал строгим синтаксическим правилам. В одной из статей это описывается так: «Вряд ли в истории науки когда-либо существовала работающая вычислительная система, которая достигала бы столь высокой точности, но при этом отвергалась бы целой научной дисциплиной, не сумевшей создать даже отдаленно сопоставимых альтернатив».[*7]
Сам Ноам Хомский — патриарх рационалистической традиции. Как мы видели в части 1, рационалисты представляют мир (в данном случае языковой) как четко структурированную систему, где цель исследований ИИ — обнаружить простой набор правил, позволяющий искусственным агентам вести себя разумно. Точно так же и в случае с языком: теория Ноама Хомского опирается на идею, что язык — это игра, в чем-то похожая на шахматы. Представьте, что вам показывают шахматные партии и просят вывести правила, которыми руководствовались игроки. Некоторые принципы просты — например, понять, что конь всегда ходит буквой «Г», но другие ставят в тупик — например, почему пешки в основном ходят только вперед, но иногда им разрешается ходить по диагонали (взятие на проходе). Именно так Ноам Хомский и видел дело всей своей жизни: как выявление правил, управляющих конкретными ходами в игре по построению предложений (синтаксисе), и того, как они связаны с глубинными принципами, определяющими эти ходы. Эти принципы (как он полагал) стоят выше всех 7000 языков, существующих на Земле, подобно тому как правила шахмат объединяют различные варианты этой игры, возникшие в разных культурах (такие как сёги или чатуранга — шахматоподобные игры, зародившиеся соответственно в Японии и Индии). Но этот проект строится на допущении, что язык подчиняется набору универсальных правил, жестко встроенных в мозг младенца, которые можно обнаружить путем терпеливого лингвистического анализа. Если же язык формируется под влиянием специфических факторов, меняющихся в зависимости от контекста и культуры, то никакого простого набора незыблемых правил, готовых к открытию, не существует. Единственный способ смоделировать язык в таком случае — использовать большую и выразительную нейронную сеть, подобную БЯМ, которая способна зафиксировать в своих весах (числовых параметрах, составляющих ее память) как базовые принципы, так и исключения из них. И, как оказалось, именно так дело и обстоит.
Пропустить примечания
*1 Vaswani et al., 2017.
*2 Ravuri et al., 2021.
*3 Варианты этой идеи восходят как минимум к 1980-м годам (Hintzman and Ludlam, 1980).
*4 Kocijan et al., 2023.
*5 Linzen, Dupoux, and Goldberg, 2016.
*6 Цит. по: Baroni, 2021.
*7 Piantadosi, 2023.