XLNet

XLNet — автрорегрессионный трансформер, созданный как усовершенствование BERT, с 340 миллионами параметров и обученный на 33 миллиардах слов. Был выпущен 19 июня 2019 года под лицензией Apache 2.0[1]. XLNet достиг передовых результатов на различных задачах обработки естественного языка, включая языковое моделирование, ответы на вопросы и логический вывод на естественном языке.

Архитектура

Основная идея XLNet состоит в моделировании языка автрорегрессионно, подобно моделям GPT, но с учётом всех возможных перестановок слов в предложении[2]. Например, рассмотрим следующее предложение:

My dog is cute.

В стандартном автрорегрессионном языковом моделировании задача состоит в предсказании вероятности каждого слова исходя из предыдущих слов как контекста:

Совместная вероятность последовательности слов разлагается по цепному правилу:

Для примера, предложение «My dog is cute» разлагается следующим образом:

Схематично это записывается так:

Однако в случае XLNet модель должна предсказывать слова в случайном порядке. Например, если сгенерирован случайный порядок 3241, то задача предсказания выглядит так:

Учитывая все перестановки, XLNet может захватывать длинные зависимости и лучше моделировать двунаправленный контекст слов.

Двухпоточный механизм самовнимания

Для реализации перестановочного языкового моделирования в XLNet используется двухпоточный механизм самовнимания. Потоки следующие:

  • Поток содержимого: кодирует содержимое каждого слова, аналогично стандартному причинному самовниманию.
  • Поток запросов: кодирует каждое слово в контексте того, что уже предсказано. Этот поток реализует маскированный механизм перекрёстного внимания, в котором запросы берутся из потока запросов, а ключи и значения — из потока содержимого.

Поток содержимого использует причинную маску

перестановочной матрицей

Поток запросов использует маску перекрёстного внимания , где диагональ убирается специально, чтобы избежать «подглядывания» текущего предсказанного токена в содержательный поток.

Как и в причинном маскировании в моделях GPT, эта двухпоточная архитектура позволяет обучать модель по всем токенам за один прямой проход.

Обучение

Были выпущены две модели[1][2]:

  • XLNet-Large, cased: 110 млн параметров, 24 слоя, 1024 скрытых единиц, 16 голов самовнимания
  • XLNet-Base, cased: 340 млн параметров, 12 слоёв, 768 скрытых единиц, 12 голов.

Обучение проводилось на датасете объёмом 32,89 миллиарда токенов (после токенизации SentencePiece). В состав набора входили BookCorpus, Английская Википедия, Giga5, ClueWeb 2012-B и Common Crawl.

Модель обучалась на 512 TPU v3 в течение 5,5 суток. По завершении обучения модель не была полностью фитирована — возможно было снизить ошибку ещё при более длительном обучении. Процесс занял 500 000 шагов с использованием оптимизатора Adam, линейным спадом скорости обучения и размером батча 8192[3].

Примечания