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. Після цього обирається відповідь з максимальним відгуком.
Література
Статті
- 2014: Sutskever I, et al. "Sequence to Sequence Learning with Neural Networks"
— винайдення архітектури Encoder-Decoder для RNN. - 2014: Bahdanau D., et al. "Neural Machine Translation by Jointly Learning to Align and Translate
— механізму Attention для Encoder-Decoder архітектури. - 2017: Vaswani A., et al. "Attention is All You Need"
— відмова від рекурентних мереж, архітектура Transformer (Google Brain) - 2018: Devlin J., et al. "BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding"
— використання енкодера трансформера і великого обсягу нерозмічених даних для передобучення (Google AI Language). - 2018: Radford A., et al. "Improving Language Understanding by Generative Pre-Trainin"
— модель GPT-1 (OpenAI). - 2019: Radford A., et al. "Language Models are Unsupervised Multitask Learners"
— модель GPT-2 (OpenAI). - 2020: Radford A., et al. "ILanguage Models are Few-Shot Learners"
— модель GPT-3 третє покоління GPT — відмінний генератор текстів (OpenAI).
Різні матеріали