Обработка естественного языка

GPT и авторегрессионные LM

Предварительные знания

  • BERT и парадигма pretrain-then-fine-tune
  • Self-attention и Transformer (BERT - encoder-only, GPT - decoder-only)
  • BERT и маскированные LM

GPT: от GPT-1 к GPT-3

В июне 2018 года Алек Рэдфорд с коллегами из OpenAI опубликовали 'Improving Language Understanding by Generative Pre-Training' (GPT-1): decoder-only Transformer, предобученный авторегрессионно (предсказание следующего токена) и затем дообучаемый под задачи. В отличие от двунаправленного BERT, GPT строго слева-направо, что делает его естественным генератором текста. В 2019 году GPT-2 (1.5B параметров) показал, что масштаб даёт связную генерацию длинных текстов; OpenAI сначала придержал релиз полной модели из-за опасений злоупотреблений. В 2020 году GPT-3 (175B параметров) в статье 'Language Models are Few-Shot Learners' продемонстрировал few-shot обучение в контексте без обновления весов. Эта линия привела к InstructGPT и ChatGPT (2022). Авторегрессионный рецепт GPT - архитектурная основа практически всех современных генеративных LLM

В ноябре 2022 года OpenAI выпустила ChatGPT. За пять дней - миллион пользователей. За два месяца - сто миллионов, самый быстрый рост любого продукта в истории. Под капотом - decoder-only Transformer, обученный предсказывать следующий токен на триллионах токенов интернета, плюс RLHF. Та же архитектура, которую Radford с коллегами опубликовали в 2018 году в скромной статье 'Improving Language Understanding by Generative Pre-Training', через четыре года переформатировала индустрию.

  • ChatGPT (GPT-3.5, GPT-4) - универсальный ассистент, использующий few-shot, CoT и tool use поверх decoder-only LM
  • GitHub Copilot - дообученная GPT (Codex) генерирует код авторегрессионно, видя текущий файл как prompt
  • Перплексити, Claude, Gemini, Llama, Mistral - все ведущие LLM используют decoder-only архитектуру с causal masking

Авторегрессия: следующий токен как условная вероятность

BERT восстанавливает маскированные токены, видя весь контекст сразу. GPT (Generative Pre-trained Transformer, 2018) идёт другим путём: моделируется совместное распределение последовательности через цепное правило вероятностей. P(w1, w2, ..., wn) = P(w1) * P(w2|w1) * P(w3|w1,w2) * ... Каждое слово предсказывается строго на основе того, что было слева. Это называется авторегрессией - модель регрессирует на собственный предыдущий выход. Преимущество: одна и та же модель умеет и оценивать вероятность готового текста, и порождать новый, продолжая последовательность токен за токеном. Цена: контекст всегда односторонний, правую часть модель не видит.

Декодинг авторегрессионной модели сводится к выбору следующего токена из распределения. Greedy берёт argmax и часто зацикливается. Beam search хранит k лучших гипотез - даёт связный, но 'безопасный' текст. Temperature sampling делит логиты на T: T<1 заостряет распределение, T>1 размывает. Top-k и top-p (nucleus) отсекают хвост: top-p=0.9 семплирует только из токенов, накапливающих 90% массы вероятности.

Почему авторегрессионная модель не может посмотреть на правый контекст при предсказании текущего токена?

Causal mask: треугольная матрица внимания

Архитектурно decoder-only Transformer почти не отличается от encoder-блока BERT: те же multi-head attention, FFN, residuals и LayerNorm. Разница в одной строчке: перед softmax внутри attention к scores добавляется causal mask - верхнетреугольная матрица из -inf. После softmax эти позиции зануляются, и токен на позиции t может аггрегировать информацию только с позиций 0..t. Это позволяет учить модель параллельно по всей последовательности: при обучении токены 1..n предсказываются одновременно, но каждый видит только свой префикс. Без маски модель просто скопировала бы свой вход - тривиальный shortcut, обнуляющий loss.

Во время инференса causal mask имеет ещё одно следствие: ключи и значения для уже обработанных токенов не меняются. Это даёт KV-cache - оптимизацию, где K и V прошлых позиций сохраняются и переиспользуются. Без KV-cache каждый шаг генерации был бы O(n^2) по длине, с KV-cache - O(n) на токен. Именно поэтому первый токен GPT-4 на длинном prompt отдаётся медленнее последующих.

Зачем при обучении decoder-only модели применять causal mask, а не просто учить на парах (префикс, следующий токен) отдельно?

In-context learning: задачи без градиентов

Главный сюрприз GPT-3 (2020, 175B параметров): достаточно показать модели несколько примеров прямо в prompt, и она начинает решать новые задачи без обновления весов. Это назвали in-context learning. Zero-shot: задача описана словами, примеров нет. One-shot: один пример демонстрации. Few-shot: несколько пар вход-выход в качестве 'обучающей выборки'. Веса модели заморожены, никакого backprop - и тем не менее точность на бенчмарках растёт с числом примеров. Гипотеза: достаточно крупная LM выучивает мета-задачу 'продолжи паттерн', и examples в контексте играют роль программы для интерпретатора, в качестве которого выступает forward pass.

Эмерджентные способности (Wei et al., 2022): in-context learning, цепочки рассуждений, арифметика проявляются скачкообразно при определённом масштабе модели. GPT-3 малого размера (1B) почти не умеет few-shot, а 175B - умеет. Это породило закон масштабирования (Kaplan, Chinchilla) и гонку за параметрами. Позже DeepMind показал, что многие модели обучены недостаточно: 70B Chinchilla на 1.4T токенов обходит 280B Gopher на 300B токенов.

В чём фундаментальное отличие in-context learning от классического fine-tuning?

Prompt engineering: формулировка как программа

Раз модель учится из контекста, формулировка prompt становится критичной. Маленькие изменения в постановке задачи дают радикально разные результаты. Хороший prompt включает: чёткую инструкцию (что делать), примеры в нужном формате (few-shot), контекст (роль модели, ограничения), формат вывода (JSON, список, шаги). Chain-of-thought (Wei et al., 2022) - явно попросить модель рассуждать пошагово - поднимает точность на математических задачах с 18% до 57% на GSM8K без всякого fine-tuning. Self-consistency: семплировать несколько цепочек рассуждений и выбирать наиболее частый ответ - ещё +10%. ReAct: чередовать рассуждение и вызовы инструментов. Эти техники превратили инженерию промптов в полноценную инженерную дисциплину.

RLHF (Reinforcement Learning from Human Feedback) - следующий уровень после prompt engineering. Базовая GPT обучена просто продолжать текст и часто не следует инструкциям буквально. InstructGPT (2022) дообучили на парах (prompt, хороший ответ) от разметчиков и применили RL с reward model, которая предсказывает оценки людей. Результат: модель в 100 раз меньшего размера (1.3B vs 175B) предпочитается людьми чаще, чем оригинальная GPT-3. Этот рецепт лёг в основу ChatGPT.

GPT 'понимает' задачу из prompt так же, как человек понимает условие

GPT предсказывает следующий токен, который максимально правдоподобен после данного префикса; 'понимание' - это статистическая аппроксимация паттернов из обучающей выборки

Авторегрессионная LM минимизирует кросс-энтропию на корпусе текстов. Если в корпусе есть много примеров пар 'задача - решение', модель выучивает условные распределения, которые на новом prompt дают похожий на решение текст. Это не семантическое понимание, а очень мощная аппроксимация - отсюда галлюцинации, провалы на out-of-distribution и чувствительность к формулировке.

Почему chain-of-thought prompting улучшает точность на математических и логических задачах без изменения весов модели?

Ключевые идеи

  • Авторегрессия моделирует P(текст) через произведение условных вероятностей P(w_t | w_1..w_{t-1}) - одна модель и для оценки, и для генерации
  • Causal mask превращает encoder-блок в decoder: треугольная маска внимания позволяет параллельно учить все позиции, при этом каждая видит только свой префикс
  • In-context learning - эмерджентное свойство больших LM: задачи решаются через примеры в prompt без обновления весов
  • Prompt engineering (few-shot, chain-of-thought, self-consistency, ReAct) превращает формулировку запроса в инструмент управления поведением модели
  • RLHF на InstructGPT поверх базовой GPT - рецепт превращения 'продолжателя текста' в 'ассистента', следующего инструкциям

Связанные темы

От базового GPT путь идёт к instruction tuning, RLHF, мультимодальности и агентам. Сюрприз ChatGPT 2022 года вырос из decoder-only архитектуры 2018-го, докрученной масштабом и обратной связью от людей.

  • BERT и маскированные LM — Параллельная ветвь: encoder-only с двунаправленным вниманием против decoder-only с авторегрессией
  • Transformer и attention — Общая архитектурная основа: GPT - это стек decoder-блоков из исходного Transformer
  • Embeddings и языковые модели — GPT как развитие идеи language modeling: от n-грамм через RNN/LSTM к Transformer

Вопросы для размышления

  • Если авторегрессия не видит правый контекст, как тогда GPT справляется с задачами вроде 'заполни пропуск в середине предложения'?
  • Почему ICL эмерджентен - то есть появляется только при достаточном масштабе модели, а не плавно растёт с числом параметров?
  • Где граница между prompt engineering и fine-tuning - в каких случаях стоит дообучать веса, а в каких хватит хорошего промпта?

Связанные уроки

  • nlp-12 — BERT - отправная точка для понимания GPT autoregressive
  • nlp-10 — Attention mechanism - ядро GPT архитектуры
  • nlp-15 — GPT - базовая архитектура Large Language Models
  • nlp-16 — RLHF обучает GPT следовать инструкциям
  • gai-04 — GPT архитектура в NLP = GPT архитектура в generative AI
  • it-01 — Autoregressive LM минимизирует cross-entropy - это Shannon entropy на практике
  • dl-01
GPT и авторегрессионные LM

0

1

Войти