🤖 LLM · Трансформери · NLP
📅 Березень 2026 ⏱ ≈ 10 хв читання 🟡 Середній

Як працює ChatGPT

ChatGPT генерує текст по одному токену за раз, передбачаючи найбільш імовірне продовження послідовності. Модель, що це робить, — це трансформер — архітектура нейронної мережі, побудована на механізмі під назвою самоувага. Ось як усе це поєднується, від сирого тексту до потокової відповіді.

Токенізація

Мовні моделі не бачать слів — вони бачать токени, підслова змінної довжини, утворені словником BPE (byte-pair encoding, кодування пар байтів). Словник із ~50 000 типів токенів покриває більшість тексту більшістю мов.

Наприклад, речення «The transformer is brilliant!» перетворюється на:

The trans former ␣is ␣brill iant !

(␣ = префікс пробілу.) Поширені слова — це окремі токени; рідкісні слова розбиваються на два або більше. Код, математика та неанглійський текст зазвичай мають більше токенів на символ.

Вплив на вартість: OpenAI та інші провайдери стягують плату за токен. GPT-4o: $5 за млн вхідних токенів, $15 за млн вихідних токенів (приблизно). 10-сторінковий PDF — це приблизно 3000–5000 токенів.

Ембединги токенів

Кожен ідентифікатор токена шукається в матриці ембедингів (розмір: [vocab_size × d_model]), щоб отримати щільний вектор дійсних чисел. Для GPT-4 d_model, імовірно, дорівнює 12 288.

x = Embedding[token_id] → ℝd_model

Семантично подібні слова групуються разом у просторі ембедингів: «king» − «man» + «woman» ≈ «queen». Модель навчається цих зв'язків суто зі статистики під час попереднього навчання.

Позиційне кодування

Самоувага (наступний розділ) розглядає токени як множину, а не послідовність — вона не має поняття порядку. Позиційні кодування додаються до ембединга кожного токена, щоб внести інформацію про позицію.

Моделі GPT використовують навчені позиційні ембединги: кожна позиція 0…n отримує власний навчаний вектор, що додається до ембединга токена. Новіші моделі (наприклад, Llama, Mistral) використовують обертове позиційне кодування (RoPE), яке кодує відносні позиції та краще узагальнюється на довші послідовності.

Самоувага

Самоувага — це основний механізм, що дозволяє моделі пов'язувати будь-який токен із будь-яким іншим токеном у послідовності. Для кожного токена обчислюються три вектори шляхом множення ембединга токена на три матриці вагів:

Q = x · WQ (Query — «що я шукаю?»)
K = x · WK (Key — «що я представляю?»)
V = x · WV (Value — «що я передаю, якщо на мене звернули увагу?»)

Вихід уваги такий:

Attention(Q, K, V) = softmax( Q · Kᵀ / √dk ) · V

Скалярний добуток Q·Kᵀ дає оцінку для кожної пари токенів — наскільки токен i має звертати увагу на токен j? Ділення на √dk запобігає надмірному зростанню оцінок зі збільшенням розмірності моделі. Softmax нормалізує оцінки у ймовірності. Кінцевий вихід — це зважена сума векторів Value.

Багатоголова увага запускає цей процес h разів паралельно (з окремими матрицями вагів), а потім конкатенує та проєктує результати — дозволяючи моделі звертати увагу на різні аспекти контексту одночасно.

Каузальне маскування: Під час генерації тексту майбутнім токенам не дозволено звертати увагу на минулі токени. Матриця Q·Kᵀ маскується значенням −∞ для позицій j > i, тому токен i може бачити лише токени 0…i.

Блок трансформера

Один блок трансформера складається з двох підрівнів, за кожним з яких слідують нормалізація рівня та залишковий (skip) зв'язок:

1

Багатоголова самоувага

Кожен токен звертає увагу на всі (попередні) токени. Вихід додається назад через залишковий зв'язок.

2

Прямого поширення мережа (FFN)

2-шаровий MLP, застосований незалежно до кожної позиції токена. Зазвичай у 4 рази ширший за модель. Зберігає «фактичні» знання.

3

Нормалізація рівня + залишковий зв'язок

Нормалізує активації; додає вхід безпосередньо до виходу (skip-зв'язок). Дозволяє градієнтам поширюватися крізь сотні рівнів.

GPT-4, імовірно, складає ~96 таких блоків. Кінцевий прихований стан кожного токена проєктується через головку мовної моделі (матрицю розкодування ембедингів, розмір [d_model × vocab_size]), щоб отримати логіти — одне число на кожен токен словника.

Авторегресивна генерація

На кожному кроці модель бере весь контекст (промпт + згенеровані досі токени), виконує прямий прохід, читає логіти для останньої позиції та семплує один новий токен. Цей токен додається до контексту; процес повторюється.

prompt → [forward pass] → logits → sample → new_token
prompt + new_token → [forward pass] → logits → sample → next_token
...повторювати до <end-of-sequence>

Саме тому генерація за своєю природою послідовна і чому працює «потокова передача» — кожен токен можна надіслати користувачеві, щойно його засемпльовано.

Температура та семплування

Логіти перетворюються на ймовірності за допомогою softmax, але перед цим параметр температури T ділить кожен логіт:

p(token) = softmax( logits / T )

Семплування Top-k та Top-p (nucleus)

Top-k обмежує семплування k найбільш імовірними токенами (зазвичай k = 40–200). Top-p обмежує найменшим набором токенів, чия сукупна ймовірність перевищує p (зазвичай p = 0,9). Обидва запобігають семплуванню вкрай малоймовірних «сміттєвих» токенів, водночас зберігаючи різноманітність.

Попереднє навчання та RLHF

Попереднє навчання

Базова модель GPT навчається передбачати наступний токен на масивному текстовому корпусі (від сотень мільярдів до трильйонів токенів, зібраних з вебу, книжок, коду тощо). Функція втрат — перехресна ентропія. Це повністю самокероване навчання — без потреби в людських мітках.

Доналаштування на інструкціях (SFT)

Базову модель доналаштовують на написаних людьми прикладах вигляду «Користувач: [питання] → Асистент: [хороша відповідь]». Це навчає модель бути корисною та виконувати інструкції, а не просто доповнювати текст найбільш статистично ймовірним продовженням.

RLHF (навчання з підкріпленням на основі зворотного зв'язку від людей)

Окрему модель винагороди навчають на даних про людські вподобання (пари відповідей, ранжовані за якістю). Потім основну модель доналаштовують за допомогою PPO (Proximal Policy Optimisation, проксимальна оптимізація політики), щоб генерувати відповіді, які модель винагороди оцінює високо. Саме це робить ChatGPT безпечним, корисним і послідовним, а не хаотичним.

Чому ChatGPT іноді щось вигадує? Модель за своєю суттю є передбачувачем наступного токена, а не пошуком знань. Вона впевнено згенерує правдоподібне на вигляд продовження навіть тоді, коли «не знає» відповіді — це явище називають галюцинацією. RLHF зменшує, але не усуває її. Підходи до пом'якшення включають генерацію з доповненням пошуком (RAG) та промптинг із ланцюжком міркувань (chain-of-thought).
🧠 Відкрити нейронну мережу →