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 з корисними посиланнями.