35 GPT-1
Контекст
Тот же 2018-й; OpenAI пробует рецепт, параллельный BERT — генеративное предобучение трансформера-декодера на потоке текста.
Идея и механизм
Этап 1 (unsupervised): учим обычную языковую модель (предсказание следующего токена) на большом корпусе книг. Этап 2 (supervised): под каждую задачу слегка переформатируем вход и добавляем линейную голову, дообучая на размеченных данных. Минимум task-specific архитектуры — почти всё знание сидит в предобученном декодере.
теория вероятностей Две стадии: предобучение и дообучение
Стадия 1 — генеративное предобучение. Максимизируем правдоподобие следующего токена (causal LM) на неразмеченном тексте:
Стадия 2 — supervised дообучение. Для размеченных (x, y) добавляем линейную голову поверх последнего состояния и максимизируем:
Ключ: тяжёлое знание языка выучивается на стадии 1 из дешёвого неразмеченного текста, а дорогие размеченные данные нужны лишь чтобы «настроить» модель под задачу на стадии 2. Это и есть transfer learning для NLP, которое потом доведут до zero-shot (GPT-2/3).
PyTorch Лосс causal LM (предобучение)
import torch.nn.functional as F
# предсказать следующий токен: сдвиг последовательности на 1
def lm_loss(logits, tokens, V):
return F.cross_entropy(logits[:, :-1].reshape(-1, V),
tokens[:, 1:].reshape(-1)) # target = вход, сдвинутый влево
Почему это важно
Заложил линию GPT (decoder-only, авторегрессионный, однонаправленный) — в отличие от двунаправленного encoder-BERT. Эта линия приведёт к GPT-2/3 и ChatGPT. Вышел тихо, PDF-отчётом без конференции; концептуально превзойдён GPT-2/3.
Связи
GPT — это декодерная половина трансформера на масштабном предобучении. Causal self-attention (видит только прошлое) — ровно то, что нужно для авторегрессионной генерации, в отличие от двунаправленного энкодера BERT.
GPT-2 берёт ту же decoder-only схему и просто сильно увеличивает модель и данные — и обнаруживает zero-shot способности. Прямое продолжение: тот же рецепт, другой масштаб.
Близнецы 2018-го с противоположной философией: BERT — двунаправленное понимание (fine-tune под задачу), GPT — авторегрессионная генерация (позже — управление промптом). Их развилка определила два класса LLM.
Вопросы пытливого ума
Почему линия GPT в итоге «победила» BERT в публичном сознании?
Потому что генерация масштабируется в универсального ассистента, управляемого промптом, без дообучения под каждую задачу — а это интерфейс, понятный всем (ChatGPT). BERT остался мощным инструментом понимания внутри систем (поиск, классификация), но он не «разговаривает». Победила не архитектура как таковая, а парадигма «одна генеративная модель на всё через текст».
Почему обучали именно на книгах (BooksCorpus), а не на любом тексте?
Книги дают длинные связные пассажи — модель учится зависимостям на больших дистанциях, а не на обрывках. Это важно для генерации связного текста. Позже (GPT-2/3) корпус расширили до качественного веба, но идея «длинный связный контекст полезнее для LM» осталась.
Дообучение под каждую задачу — разве это не то, от чего потом ушли?
Именно. GPT-1 ещё требовал supervised дообучения на стадии 2. GPT-2 показал, что при достаточном масштабе можно решать задачи zero-shot через промпт, а GPT-3 — few-shot. Так линия GPT за два шага ушла от «дообучи под задачу» к «опиши задачу в промпте» — это и есть главный сдвиг парадигмы.
Что читать в оригинале
Конспекта достаточно — концепт превзойдён GPT-2/3. Если интересно, посмотрите, как минимально переформатируется вход под разные задачи на стадии 2.