ML: Attention - Модель GPT


Введение

После того как, основанная на механизме внимания, архитектура Трансформера показала свою эффективность, её отдельные части получили самостоятельное существование. Сначала Open AI разработал сеть под названием Generative Pre-trained Transformer (GPT), которая использовала модифицированый декодер трансформера. Затем Google создал Bidirectional Encoder Representations from Transformers (BERT), используя его энкодер.

По-мимо трансформера, новые модели объединяет стратегия обучения на большом корпусе неразмеченных текстов.
GPT предсказывает очередное слово текста, а BERT - "закрытые" слова внутри предложения. В результате такого обучения формируется языковая модель, включающая в себя грамматику, семантику и даже определённые знания. После предварительного обучения производится тонкая настройка параметров модели под конкретную задачу уже на размеченных данных.


GPT

Сеть GPT является декодером трансформера из которого удаляется второй блок внимания, после чего он становится похожим на энкодер. Однако, принципиальное отличие от энкодера состоит в использовании маскированного самовнимания. Так как в процессе предварительного обучения предсказывается очередное слово, каждое слово входной последовательности может "видеть" только слова, идущие перед ним, но не после. Поэтому к весам самовнимания добавляется маска в которой элементы выше диагонали равны минус бесконечности.

Неразмеченная последовательность слов $w_1,...,w_n$ векторизуется при помощи матрицы эмбединга $\mathbf{W}_e$ и к ним добавляются эмбединг $\mathbf{W}_p$ номера слова в последовательности. В результате получается матрица $\mathbf{h}_0:~(N,B,E)$, которая 12 раз пропускается через блоки декодера (с различными параметрами). Выход декодера (той же формы) умножается на транспонированною матрицу эмбединга $\mathbf{W}_e$ и при помощи функции softmax вычисляются вероятности слов последовательности, сдвинутой вправо на одно слово: $w_2,...,w_{n+1}$: $$ \mathbf{h}_k = \text{Decoder}(\mathbf{h}_{k-1}),~~~~~~~~~~~P(w_{n+1}) = \text{softmax}(\mathbf{h}_{12}\cdot\mathbf{W}^\top_e). $$

Для обучения модели использовался BooksCorpus dataset на котором удалось достичь очень маленькой перплексии 18.4.


GPT: Fine-tuning

При тонкой настройке используется выходной вектор последнего слова входной последовательности $\mathbf{h}^n_{12}$. Этот вектор умножается на обучаемую матрицу $\mathbf{W}_c$ и дальнейшая функция softmax выдаёт вероятности для той или иной задачи. Так, пусть есть последовательность токенов $w_1,...,w_n$, которая отнесена к классу $c$. Тогда условная вероятность принадлежности к этому классу равна: $$ P(c|w_1...w_n) = \text{softmax}(\mathbf{h}^n_{12}\cdot \mathbf{W}_c). $$ Технически последовательность слов дополнительно окружается служебными токенами <s> - start и <e> - end:

В более структурированных задачах входные данные упаковываются в одну последовательность с использованием дополнительных токенов - разделителей. Например в задаче "Вывод на естественном языке" (Natural Language Inference) между посылкой и следствием ставится разделитель <$> - delim. Предсказываемый класс (следует, противоречит, нейтрально) определяется как и выше по выходу у последнего токена:

В задаче сходства двух предложений Text1 и Text2, их порядок не играет роли. Поэтому они один раз упорядочиваются в последовательность (Text1, Text2), а второй раз в (Text2, Text1). Выходы последних токенов складываются и снова отправляются на линейный классификационный слой:

Наконец в задачах ответов на вопросы даётся контекстный документ $d$, вопрос $q$ и набор возможных ответов $a_i$. Контекст и вопрос просто объединяются, а между ними и ответом идёт разделитель <$>: $(d,q$ <$> $a_i)$. Такую последовательность для каждого ответа пропускается через декодер, линейный слой и softmax. После этого выбирается ответ с максимальным откликом.


Литература

Статьи

Различные материалы

  • "AllenNLP" - возможность играться с GPT-2, выбирая одно из предложенных продолжений предложения.
  • "The Illustrated GPT-2 (Visualizing Transformer Language Models)" - введение в картинках в модель GPT-2.
  • "BERT, ELMO и Ко в картинках (как в NLP пришло трансферное обучение)" - простое введение в модель BERT с полезными ссылками.