# XLNet против BERT: как случайные перестановки слов помогли ИИ побить рекорды

Источник: https://www.youtube.com/watch?v=H5vpBCLo74U
Канал: Yannic Kilcher
Опубликовано: 03.07.2019

---

В мире искусственного интеллекта и обработки естественного языка (NLP) долгое время доминировал BERT, устанавливая рекорды один за другим. Однако исследователи из Университета Карнеги — Меллона и Google Brain представили XLNet — архитектуру, которая не просто бросила вызов лидеру, но и превзошла его в большинстве ключевых тестов. Популярный ИИ-блогер и исследователь Янник Кильхер (Yannic Kilcher) подробно разбирает, почему XLNet стал «слоном в комнате» и как объединение двух классических подходов к обучению привело к новому прорыву.

## 🐘 Слон в комнате: XLNet превосходит BERT
[[JUMP:00:00]]

На сегодняшний день XLNet является первой моделью, которой удалось превзойти BERT (Bidirectional Encoder Representations from Transformers) во множестве задач обработки естественного языка [00:13]. По словам Янника Кильхера, результаты XLNet впечатляют: модель обошла своего предшественника в 20 различных тестах, установив новые рекорды (SOTA) в 18 из них [00:27].

Среди областей, где XLNet показал преимущество:

*   Ответы на вопросы (Question Answering).
*   Логический вывод на естественном языке (Natural Language Inference).
*   Анализ тональности текста (Sentiment Analysis).

Несмотря на схожесть архитектуры с BERT, ключевое отличие кроется в процедуре предобучения (pre-training) [00:53]. Янник Кильхер подчеркивает, что разработчики XLNet решили объединить два основных метода обучения языковых моделей, чтобы избавиться от недостатков каждого из них.

## 🔄 Две школы обучения: Авторегрессия против Автоэнкодинга
[[JUMP:01:07]]

Для понимания сути XLNet необходимо разделить современные методы предобучения на два типа. Первый тип — это **авторегрессионное (AR) моделирование** [01:22]. В этом подходе модель предсказывает следующее слово в последовательности на основе всех предыдущих. Например, в фразе «Обучение представлений было весьма...» модель должна предсказать слово «успешным» [01:34]. Каждый токен в этой цепочке может «смотреть» только назад, на уже предсказанные слова.

Второй тип — это **автоэнкодинг (AE)**, на котором основан BERT [02:53]. Вместо того чтобы предсказывать слова по порядку, BERT берет целую последовательность, маскирует в ней случайные токены (около 15%) и просит модель восстановить их [03:07]. Это дает модели доступ ко всему контексту (и слева, и справа), но порождает свои проблемы.

## 🏙️ Проблема «Нью-Йорка» в BERT
[[JUMP:04:13]]

Янник Кильхер приводит наглядный пример того, где BERT допускает ошибки из-за отсутствия авторегрессии. Рассмотрим предложение: «Нью-Йорк — это город» (New York is a city) [04:54].

Если мы замаскируем слова «Нью» и «Йорк», BERT будет пытаться предсказать их независимо друг от друга. По мнению Кильхера, это приводит к следующим рискам:

*   Модель понимает, что контекст — «это город».
*   Она знает, что на первом месте может стоять «Сан», «Лос» или «Нью».
*   Она знает, что на втором месте может стоять «Франциско», «Анджелес» или «Йорк».
*   Поскольку предсказания независимы, BERT может выдать «Лос-Йорк» или «Сан-Йорк», и для целевой функции модели это будет выглядеть приемлемо [05:48].

XLNet решает эту проблему, сохраняя порядок предсказания. Если модель сначала предсказывает «Нью», то при предсказании следующего слова она уже опирается на тот факт, что первым словом было «Нью», что делает выбор «Йорка» практически неизбежным [06:29].

## 🎲 Метод пермутаций: лучшее из двух миров
[[JUMP:08:43]]

Главная инновация XLNet — это **Permutation Language Modeling** (языковое моделирование на основе перестановок). Авторегрессионные модели обычно ограничены направлением (слева направо). Чтобы получить двусторонний контекст, как у BERT, но сохранить зависимости авторегрессии, XLNet предлагает тренироваться на всех возможных порядках слов в предложении [10:20].

Янник Кильхер объясняет это на примере:

1.  У нас есть предложение из 5 слов.
2.  Вместо обычного порядка 1-2-3-4-5, мы можем выбрать случайную перестановку, например, 3-2-4-1-5 [17:14].
3.  Если нам нужно предсказать 3-е слово в этой перестановке, оно будет считаться первым и не иметь контекста.
4.  Но если в другой раз выпадет порядок 2-4-3-1-5, то при предсказании 3-го слова модель уже сможет «видеть» 2-е и 4-е слова [18:20].

Таким образом, за счет множества случайных перестановок в процессе обучения, модель в среднем видит весь контекст предложения (как BERT), но делает предсказания последовательно, учитывая зависимости между словами (как классические AR-модели) [14:22].

## 🏗️ Двухпоточное внимание (Two-Stream Attention)
[[JUMP:19:21]]

Реализация идеи с перестановками потребовала архитектурных изменений в Трансформере. Возникла проблема: если мы хотим предсказать слово в позиции $i$, модель должна знать, где это слово находится, но не должна знать, какое это слово [19:35].

Для этого в XLNet введено «двухпоточное внимание»:

*   **H-поток (Content Stream):** обычное представление, которое включает в себя и контекст, и само слово.
*   **G-поток (Query Stream):** представление, которое знает только позицию целевого слова и контекст, но «закрыто» от информации о самом слове в этой позиции [21:00].

Это инженерное решение позволяет модели делать несколько предсказаний за один проход, сохраняя при этом строгое разделение информации, чтобы «не подглядывать в ответ» [22:58].

## 🧠 Интеграция с Transformer-XL и результаты
[[JUMP:24:08]]

XLNet не ограничивается только перестановками. В модель включены наработки из Transformer-XL, которые значительно улучшают работу с длинными текстами:

*   **Механизм рекуррентности (Memory):** модель сохраняет скрытые состояния из предыдущего сегмента текста и использует их как контекст для следующего [25:04]. Это позволяет работать с последовательностями гораздо длиннее, чем стандартное окно в 512 токенов.
*   **Относительное кодирование позиций:** вместо абсолютных координат слов используются относительные расстояния, что помогает модели лучше обобщать структуру текста [26:07].

В ходе тестов (Ablation Studies) было доказано, что успех XLNet — это не просто заслуга дополнительных «фишек» от Transformer-XL, а именно результат применения метода перестановок [28:10].

## 💸 Цена прогресса: $245 000 за обучение
[[JUMP:28:55]]

В завершение обзора Янник Кильхер поднимает важный этический и практический вопрос. Согласно сторонним расчетам, обучение XLNet в том виде, в котором оно описано в научной статье, обошлось примерно в **$245 000** [28:55].

Кильхер называет эту цифру «безумием» и отмечает следующие риски:

1.  **Барьер для академической среды:** университеты и небольшие лаборатории не могут позволить себе такие расходы, что концентрирует исследования в руках гигантов вроде Google [29:22].
2.  **Воспроизводимость:** проверить результаты такой работы крайне сложно из-за огромной стоимости ресурсов.
3.  **Гонка бюджетов:** создается впечатление, что сейчас в ИИ побеждает тот, кто может выложить больше денег на стол [29:34].

Тем не менее, автор признает, что XLNet — это «по-настоящему крутая идея», которая двинула всю индустрию вперед, несмотря на свою дороговизну.