# XLNet: первый алгоритм, побивший BERT во всём

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

---

Будущее архитектур обработки естественного языка (NLP) наступило с появлением XLNet. Эта модель, представленная исследователями из Университета Карнеги — Меллон и Google Brain, стала «слоном в комнате» для сообщества машинного обучения, поскольку она первой смогла систематически превзойти BERT на множестве сложнейших задач. Янник Килчер (Yannic Kilcher) подробно разбирает, почему XLNet — это не просто очередной «BERT на стероидах», а глубокое переосмысление методик предварительного обучения нейросетей.

## 🏆 Новый лидер в мире NLP: XLNet против BERT
[[JUMP:00:00]]

На момент выхода XLNet показала ошеломляющие результаты, достигнув статуса state-of-the-art (SOTA) в 18 из 20 протестированных задач. Среди них — ответы на вопросы, естественный логический вывод и анализ тональности текста [00:41]. Как отмечает Янник Килчер (Yannic Kilcher), самое примечательное здесь то, что архитектура XLNet во многом идентична BERT, а весь прорыв кроется в инновационной процедуре предварительного обучения [00:53].

## 🔄 Две парадигмы: Авторегрессия против Автокодирования
[[JUMP:01:07]]

Чтобы понять суть XLNet, Янник Килчер (Yannic Kilcher) предлагает разделить существующие методы обучения на две категории [01:22]:

1.  **Авторегрессионное моделирование (AR):** Классический подход, где модель предсказывает следующий токен в последовательности на основе предыдущих (например: «Мама мыла...» -> «раму») [01:48]. Это естественный способ генерации текста, но его главный минус — однонаправленность. Модель «видит» только то, что слева, и игнорирует контекст справа [07:50].
2.  **Автокодирование (AE), представленное BERT:** Здесь модель получает всё предложение сразу, но некоторые слова в нём скрыты (маскированы). Задача — восстановить скрытые токены, используя двусторонний контекст [03:07].

По мнению автора видео, BERT совершил революцию именно за счёт двунаправленности, но принёс в жертву важные зависимости между словами [04:13].

## 🗽 Проблема «Нью-Йорка»: В чём BERT ошибается?
[[JUMP:04:41]]

Янник Килчер (Yannic Kilcher) приводит наглядный пример с фразой «New York is a city» [04:54]. Если мы маскируем слова "New" и "York", BERT будет предсказывать их независимо друг от друга.

*   Для BERT вероятность того, что второе слово «York», никак не зависит от того, предсказал ли он первым словом «New» [05:22].
*   В итоге модель может выдать нелепицу вроде «Los York» или «New Francisco», так как каждое слово по отдельности вписывается в контекст «... ... is a city», но вместе они не образуют логичного словосочетания [06:00].

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

## 🎲 Магия пермутаций: Как обучить модель видеть всё сразу
[[JUMP:10:20]]

Главная идея XLNet заключается в обучении на **всех возможных перестановках (пермутациях)** порядка токенов [08:43]. Вместо того чтобы всегда идти слева направо, XLNet выбирает случайный порядок декодирования для каждого предложения [10:33].

*   В одном цикле обучения модель может предсказывать «Нью» на основе «Йорк», а в другом — наоборот [12:03].
*   В ожидании (in expectation) модель обучается учитывать весь двусторонний контекст, как BERT, но делает это шаг за шагом, сохраняя зависимости между предсказанными токенами [14:22].
*   Янник Килчер (Yannic Kilcher) подчёркивает: это математически чистое решение, которое объединяет преимущества обоих миров — двунаправленность BERT и логическую связность AR-моделей [15:04].

## 🛠 Двухпотоковое внимание: Инженерный вызов
[[JUMP:19:21]]

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

Для этого разработчики внедрили **Two-Stream Self-Attention**:

*   **Содержимый поток (Content Stream):** обычное представление, включающее информацию о самом слове [21:13].
*   **Запросный поток (Query Stream):** содержит информацию только о позиции, но не о содержимом текущего токена [21:25].

Эта «инженерная уловка» позволяет модели делать несколько предсказаний за один проход, не «подсматривая» правильные ответы в процессе обучения [23:53].

## 💾 Наследие Transformer-XL и проблема стоимости
[[JUMP:24:08]]

Помимо основного метода, XLNet заимствует наработки Transformer-XL, такие как механизм памяти (кеширование скрытых состояний) и относительное позиционное кодирование [26:07]. Это позволяет модели работать с очень длинными текстами, передавая информацию из одного сегмента в другой [25:16].

Однако Янник Килчер (Yannic Kilcher) выражает обеспокоенность стоимостью таких исследований. Согласно приведённым в обзоре данным, одно полное обучение XLNet может стоить около **245 000 долларов** [28:55].

*   Это вызывает вопросы о доступности передовой науки для академических кругов и небольших лабораторий [29:09].
*   По мнению автора, в некоторых областях ИИ сейчас наблюдается ситуация, когда побеждает тот, кто «выложит больше денег на стол» для покупки вычислительных мощностей [29:34].

Тем не менее Янник Килчер (Yannic Kilcher) признаёт, что идея XLNet изящна и действительно двигает область вперёд, доказывая, что архитектурные инновации всё ещё важнее простого наращивания данных [29:49].