XLNet
XLNet — автрорегрессионный трансформер, созданный как усовершенствование BERT, с 340 миллионами параметров и обученный на 33 миллиардах слов. Был выпущен 19 июня 2019 года под лицензией Apache 2.0[1]. XLNet достиг передовых результатов на различных задачах обработки естественного языка, включая языковое моделирование, ответы на вопросы и логический вывод на естественном языке.
Что важно знать
| XLNet | |
|---|---|
| Тип | Большая языковая модель, Трансформер (искусственный интеллект) |
| Автор | Google AI |
| Языки интерфейса | английский |
| Первый выпуск | 19 июня 2019 |
| Репозиторий | github.com/zihangdai/xln… |
| Лицензия | Apache-2.0 |
Архитектура
Основная идея 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].


