Архітектура трансформера — пояснення
2017 року Google Brain опублікувала «Attention Is All You Need» — статтю, яка повністю відмовилася від рекурентних мереж і замінила їх новим механізмом під назвою самоувага. Сім років по тому майже кожен прорив у ШІ — GPT-4, Gemini, Llama, Stable Diffusion — використовує цю архітектуру.
1. Чому не RNN?
До трансформерів моделі послідовностей покладалися на рекурентні нейронні мережі (RNN) та їхні варіанти (LSTM, GRU). Вони обробляють токени по одному, підтримуючи прихований стан, що підсумовує все побачене досі.
Дві фундаментальні проблеми:
- Послідовне вузьке місце: неможливо паралелізувати за позиціями токенів — крок N залежить від кроку N−1. На сучасних GPU з тисячами ядер більшість обладнання простоює.
- Зникання градієнтів / забування на великій відстані: градієнти експоненційно зменшуються, поширюючись назад через сотні кроків. Зв'язки між віддаленими токенами (наприклад, займенник і його антецедент за 500 токенів) втрачаються.
Трансформер розв'язує обидві проблеми, обчислюючи зв'язки між усіма парами токенів одночасно — з повним паралелізмом і без штрафу за відстань.
2. Токени та ембединги
Текст розбивається на токени — зазвичай підслівні фрагменти за допомогою
BPE (Byte Pair Encoding) або SentencePiece. Слово «unbelievable» може
бути трьома токенами: un, believ, able.
Кожен індекс токена відображається у щільний вектор завдовжки d_model вимірів
(GPT-3 використовує 12 288 вимірів). Це ембединг.
Він починається випадковим і тренується кодувати семантичне значення — схожі поняття
опиняються близько одне до одного в цьому багатовимірному просторі.
3. Самоувага
Самоувага запитує: «Наскільки кожен токен має звертати увагу на кожен інший токен?» Вона обчислює це, виводячи три вектори з ембединга кожного токена через навчені проєкції:
- Запит (Q): «Що я шукаю?»
- Ключ (K): «Що я містю?»
- Значення (V): «Яку інформацію я вношу?»
Attention(Q, K, V) = softmax( Q · Kᵀ / √d_k ) · V
Скалярний добуток Q · Kᵀ дає оцінку для кожної пари (запит, ключ)
— наскільки токен j релевантний токену i. Ділення на √d_k
запобігає насиченню softmax, коли виміри великі.
Softmax перетворює оцінки на розподіл імовірностей, а множення
на V дає зважене середнє всіх значень.
4. Багатоголова увага
Один шар уваги може вловлювати лише один тип зв'язку за раз. Багатоголова увага запускає h незалежних механізмів уваги («голів») паралельно, кожен зі своїми навченими матрицями W_Q, W_K, W_V.
MultiHead(Q, K, V) = Concat(head_1, …, head_h) · W_O
Різні голови вчаться спеціалізуватися: одна може відстежувати синтаксичні залежності, інша — семантичну схожість, ще інша — кореференцію. GPT-3 використовує 96 голів уваги на шар.
5. Позиційне кодування
Увага трактує свій вхід як множину, а не послідовність — немає вродженого поняття порядку. Щоб знову внести порядок, до ембединга кожного токена перед першим шаром додається позиційне кодування.
В оригінальній статті використовувалися фіксовані синусоїдальні кодування:
PE(pos, 2i+1) = cos(pos / 10000^(2i/d_model))
Кожен вимір коливається з різною частотою, тож кожна позиція отримує унікальний відбиток. Сучасні моделі використовують ротаційне позиційне кодування (RoPE) (у Llama, GPT-NeoX) або ALiBi, які кодують відносні, а не абсолютні позиції — це дозволяє узагальнення на довші послідовності, ніж бачені під час тренування.
6. Шар прямого поширення
Після уваги представлення кожного токена проходить через ідентичну позиційну мережу прямого поширення — двошаровий MLP з нелінійною активацією:
W_1 ∈ ℝ^(d_model × d_ff) , W_2 ∈ ℝ^(d_ff × d_model)
Зазвичай d_ff = 4 × d_model
Тоді як увага змішує інформацію між позиціями, шар FFN обробляє кожен токен незалежно. Дослідження свідчать, що шари FFN діють як пам'яті типу ключ-значення — зберігаючи фактичні знання про світ. Вони містять ~⅔ усіх параметрів моделі.
7. Стеки кодувальника та декодувальника
Оригінальний Трансформер (для перекладу) мав два стеки:
- Кодувальник: обробляє вхідну послідовність. Кожен шар має (1) багатоголову самоувагу + (2) FFN, з Add & Norm (залишковим з'єднанням + нормалізацією шару) навколо кожного підшару.
- Декодувальник: генерує вихід токен за токеном. Кожен шар має (1) масковану самоувагу (бачить лише минулі токени), (2) перехресну увагу над виходом кодувальника та (3) FFN.
Залишкові з'єднання (x + SubLayer(x)) дозволяють градієнтам текти
безпосередньо до ранніх шарів, уможливлюючи тренування дуже глибоких мереж. Нормалізація
шару стабілізує активації.
8. GPT, BERT та варіанти
- BERT (Google, 2018) — лише кодувальник. Попередньо натренований маскуванням випадкових токенів і їх передбаченням (Masked Language Model). Чудовий для класифікації, NER, відповідей на запитання. Двонапрямний контекст.
- Серія GPT (OpenAI) — лише декодувальник. Попередньо натренований передбаченням наступного токена (каузальна мовна модель). Чудовий для генерації. GPT-4 має, за оцінками, ~1,7 трильйона параметрів з архітектурою Mixture-of-Experts (суміш експертів).
- T5 / BART — кодувальник-декодувальник. Використовуються для перекладу, реферування, завдань seq2seq.
- Vision Transformer (ViT) — зображення розбивається на патчі 16×16, кожен трактується як токен. Трансформери тепер домінують і в комп'ютерному зорі.
- Дифузійні трансформери (DiT) — лежать в основі Stable Diffusion 3, Sora. Кістяк-трансформер замінює U-Net у дифузійних моделях.
9. Чому масштаб змінює все
Емпіричне спостереження, що рухає сучасний ШІ, — це закон масштабування: втрати зменшуються за степеневим законом разом із розміром моделі та обсягом тренувальних даних. Помножте обчислення вдесятеро — і модель надійно стає кращою.
Але на масштабі відбувається щось якісне. Здібності, цілковито відсутні в малих моделях — багатокрокова математика, навчання в контексті, генерація коду — раптово з'являються за певної кількості параметрів. Це називають емерджентними здібностями.
Розуміння того, чому масштаб породжує інтелект — а не лише того, що це так — залишається одним з найглибших відкритих питань у ШІ.