🔴 Сложный ⏱️ 60 минут

BERT, GPT и LLM

📋 Содержание урока

BERT, GPT и LLM 🤖

Если ты хоть раз открывал ChatGPT или Claude, чтобы попросить их объяснить сложную тему, написать код или просто поболтать, — этот урок про то, что происходит внутри в тот момент, когда ты нажимаешь «отправить». Не метафорически, не на уровне маркетингового слогана «искусственный интеллект», а буквально: какая математическая операция выполняется первой, какая — второй, и почему модель вообще способна связно отвечать, а не выдавать случайный набор слов. Ты уже прошёл весь путь до этого момента: урок 342 разобрал механизм внимания (attention), урок 343 — полную архитектуру трансформера с энкодером и декодером. Сегодня мы возьмём эту архитектуру и увидим, как индустрия расщепила её на две принципиально разные философии — и как из каждой родилось семейство моделей, определивших целую эпоху.

Первая философия — BERT (Bidirectional Encoder Representations from Transformers, «двунаправленные представления энкодера трансформера»), опубликованная исследователями Google в 2018 году. Вторая — GPT (Generative Pretrained Transformer, «генеративный предобученный трансформер»), созданная в том же году компанией OpenAI. Обе модели построены из одних и тех же кирпичиков — блоков self-attention и полносвязных слоёв, которые ты подробно разбирал в уроке 343, — но берут только половину полной архитектуры трансформера каждая, причём разные половины. BERT забирает себе энкодер, GPT — декодер с маскированным вниманием. Это не случайный технический выбор, а прямое следствие того, для чего каждая модель предназначена: BERT создан, чтобы понимать текст, GPT — чтобы его генерировать. И именно из этого архитектурного различия — а не из абстрактных рассуждений о «интеллекте» — вырастают все практические различия между инструментами вроде поисковика с семантическим пониманием запроса и инструментами вроде чат-бота, пишущего тебе связный ответ слово за словом.

LLM (Large Language Model, «большая языковая модель») — общий термин для моделей вроде GPT, Claude, LLaMA или Gemini, обученных на огромных объёмах текста и способных решать широкий спектр языковых задач без специализированного обучения под каждую отдельную задачу. Именно про LLM в этом уроке пойдёт речь во второй половине: как модель размером с GPT-1 (117 миллионов параметров, сопоставимо с небольшой сетью из курса) превратилась в модели с десятками и сотнями миллиардов параметров, и что вообще происходит, когда индустрия «увеличивает модель» — почему это не просто «больше = лучше», а предсказуемая, измеримая закономерность, которую называют законами масштабирования (scaling laws).

Финальная часть урока — пожалуй, самая практическая часть всего курса. Когда у тебя есть предобученная языковая модель, перед тобой встаёт вопрос: как заставить её решать именно твою задачу? Здесь есть два принципиально разных пути — дообучение весов модели на своих данных (fine-tuning) или просто грамотно сформулированная текстовая инструкция без единого изменения весов (prompting, промптинг). А отдельно от них стоит процесс, без которого ChatGPT и Claude оставались бы просто «предсказывателями следующего слова», а не полезными, послушными инструкциям помощниками, — обучение с подкреплением на основе человеческой обратной связи (RLHF, Reinforcement Learning from Human Feedback), тема, которая станет предметом отдельного, куда более подробного урока 347, посвящённого обучению с подкреплением.

Урок построен так, чтобы к его концу ты мог не просто повторить слова «BERT — энкодер, GPT — декодер», а объяснить самому себе (и, возможно, коллеге), почему для задачи поиска релевантных документов стоит взять модель на базе BERT, а для написания текста — модель на базе GPT; почему иногда достаточно грамотно составить промпт, а иногда без дообучения не обойтись; и что именно происходит в тех нескольких секундах между твоим сообщением в чате и появлением ответа. Начнём с истории — с двух статей 2018 года, вышедших с разницей в несколько месяцев и на десятилетие определивших направление всей области обработки естественного языка.

История

Отправная точка — статья «Attention Is All You Need», вышедшая в 2017 году и разобранная в уроке 343: она предложила полную архитектуру трансформера с энкодером и декодером, соединёнными между собой, для задачи машинного перевода. Но уже через год исследователи задались вопросом: а что, если для многих задач вообще не нужна вся конструкция целиком — только одна из её половин? Первыми на этот вопрос ответили в OpenAI: в июне 2018 года Алек Рэдфорд (Alec Radford) и коллеги опубликовали статью «Improving Language Understanding by Generative Pre-Training» — она представила GPT-1, модель на основе декодера трансформера, предобученную через предсказание следующего слова на большом неразмеченном корпусе текста, а затем дообучаемую под конкретные задачи. Именно этот принцип — self-supervised предобучение (самообучение) на неразмеченных данных, за которым следует сравнительно небольшое дообучение под задачу, — ты уже разбирал в уроке 303 на примере именно языковых моделей; GPT-1 стал одной из первых крупных практических демонстраций того, что этот принцип действительно работает в промышленном масштабе.

Буквально через несколько месяцев, в октябре 2018 года, команда Google во главе с Джейкобом Девлином (Jacob Devlin) опубликовала BERT — и результаты оказались неожиданными для многих в индустрии. На большинстве бенчмарков понимания текста (GLUE — обобщённый набор задач оценки понимания языка, задачи извлечения ответов из текста типа SQuAD и другие) BERT заметно превзошёл GPT-1, несмотря на сопоставимый размер и тот же принцип self-supervised предобучения. Причина крылась не в объёме данных и не в количестве параметров, а именно в архитектурном выборе: BERT видел контекст с обеих сторон от каждого слова одновременно, тогда как GPT-1 — только слева направо. Для задач, где важно понять смысл всего предложения целиком (классификация тональности, определение, отвечает ли фрагмент текста на вопрос), двунаправленный контекст оказался решающим преимуществом. Так индустрия впервые чётко увидела: «энкодер для понимания, декодер для генерации» — это не абстрактный архитектурный принцип, а конкретная, измеримая разница в качестве на реальных задачах.

Дальнейшая история GPT — это история почти исключительно масштаба. В феврале 2019 года вышел GPT-2 — модель с 1,5 миллиарда параметров (примерно в 13 раз больше GPT-1), настолько убедительно генерировавшая связный текст, что OpenAI изначально отказалась публиковать полную версию модели, опасаясь массового использования для генерации фейковых новостей и спама — редкий на тот момент случай, когда лаборатория сознательно придержала уже готовую модель из соображений безопасности. В июне 2020 года вышел GPT-3 со 175 миллиардами параметров — модель, чья статья называлась «Language Models are Few-Shot Learners» («Языковые модели — это ученики, обучающиеся по нескольким примерам») и впервые убедительно показала: при достаточном масштабе модель начинает решать новые задачи прямо из текста промпта, без единого обновления весов, просто по нескольким примерам, приведённым в запросе, — способность, которую в этом уроке мы разберём подробно как in-context learning (обучение в контексте).

Момент, когда вся эта технология вышла за пределы исследовательских лабораторий и статей на архивах в массовое общественное сознание, наступил 30 ноября 2022 года — в этот день OpenAI выпустила ChatGPT, чат-интерфейс поверх дообученной версии GPT-3.5, прошедшей через процесс RLHF (о котором подробно пойдёт речь дальше в этом уроке). За два месяца у сервиса набралось около 100 миллионов пользователей — на тот момент самый быстрорастущий потребительский продукт в истории. В марте 2023 года вышел GPT-4, а вслед за прорывом OpenAI на рынок вышли и другие семейства больших языковых моделей — Claude от Anthropic, LLaMA от Meta, Gemini от Google и десятки других. Именно с этого момента термин LLM (большая языковая модель) стал частью повседневного словаря не только исследователей, но и миллионов людей, использующих эти модели каждый день для работы, учёбы и просто разговора — включая, вероятно, тебя самого прямо сейчас.

BERT: энкодер трансформера и маскированное языковое моделирование

Интуиция

Представь, что тебе дали предложение с пропущенным словом: «Кошка ___ на подоконнике и грелась на солнце» — и попросили угадать пропуск. Чтобы сделать это хорошо, тебе совершенно точно нужно видеть слова и до пропуска («Кошка»), и после него («на подоконнике», «грелась на солнце») — если убрать любую из этих частей, задача станет заметно сложнее или вовсе неразрешимой однозначно. Именно так подготовлена основная обучающая задача BERT: модель не читает текст строго слева направо, как человек читает книгу, — она смотрит на всё предложение целиком сразу, включая слова, которые в обычном линейном чтении ещё «не наступили». Это и есть смысл слова Bidirectional (двунаправленный) в названии BERT: при вычислении представления каждого слова модель использует контекст с обеих сторон одновременно, а не только предысторию.

Технически эта интуиция реализована через энкодер трансформера (урок 343) — тот же self-attention, где каждый токен последовательности напрямую «видит» все остальные токены без ограничений (вспомни формулу $\text{Attention}(Q,K,V)=\text{softmax}(QK^T/\sqrt{d_k})V$, где весь набор ключей $K$ доступен целиком, без масок). В декодере трансформера ты уже встречал приём маскированного внимания, ограничивающий видимость только прошлыми токенами, — BERT такого ограничения не накладывает вовсе, потому что ему не нужно генерировать текст последовательно.

Формальное определение

BERT (Bidirectional Encoder Representations from Transformers — двунаправленные представления энкодера трансформера). Языковая модель на основе стека энкодерных блоков трансформера (урок 343), предобучаемая через задачу маскированного языкового моделирования (masked language modeling, MLM): случайное подмножество токенов входной последовательности (обычно около 15%) заменяется на специальный токен [MASK], и модель обучается предсказывать исходные, скрытые токены, используя при вычислении их представлений весь остальной контекст последовательности одновременно — как токены слева, так и токены справа от маскированной позиции.

Формально функция потерь MLM считается только по маскированным позициям: модель выдаёт распределение вероятностей по словарю для каждой маскированной позиции, и потеря — это кросс-энтропия между этим распределением и истинным словом, которое было на этом месте до маскирования. Помимо MLM, в оригинальной статье BERT использовалась вторая вспомогательная задача — предсказание, идёт ли одно предложение логически за другим (next sentence prediction) — но именно MLM остаётся концептуальным ядром подхода и тем, что делает BERT принципиально отличным от GPT.

Примеры

Пример 1 (маскированное предсказание — что именно видит модель). Возьмём предложение «Студент сдал [MASK] по математике на отлично». Модель BERT, вычисляя представление позиции [MASK], использует self-attention по всей последовательности целиком — то есть при формировании итогового вектора этой позиции в attention-весах участвуют и «Студент», и «сдал» (слева), и «по», «математике», «на», «отлично» (справа). Именно слово «отлично» справа резко сужает круг правдоподобных ответов — без него подходят и «экзамен», и «зачёт», и «курсовую», а с учётом всего контекста модель с высокой уверенностью предсказывает «экзамен» или близкий по смыслу вариант. Если бы модель, как GPT, видела только «Студент сдал», у неё физически не было бы доступа к слову «отлично» для сужения предсказания.

Пример 2 (классификация текста через токен [CLS]). Для задач вроде классификации тональности отзыва BERT добавляет в начало входной последовательности служебный токен [CLS] (classification). После прохождения через все слои энкодера итоговое представление именно этого токена агрегирует информацию обо всём предложении (благодаря self-attention, где [CLS] тоже участвует во взаимодействии со всеми остальными токенами) и подаётся на простой классификационный слой поверх — например, линейный слой с двумя выходами для задачи «позитивный / негативный отзыв». Дообучение (fine-tuning, разбирается подробно в отдельном разделе ниже) сводится к тому, чтобы дообучить веса всей модели плюс этот небольшой классификационный слой на размеченных примерах отзывов с известной тональностью.

Пример 3 (извлечение ответа из текста — задача типа SQuAD). Дай BERT абзац текста и вопрос к нему, например: контекст — «Эйфелева башня была построена в 1889 году для Всемирной выставки в Париже», вопрос — «В каком году построили Эйфелеву башню?». BERT обрабатывает контекст и вопрос как единую последовательность (разделённую служебным токеном [SEP]) и для каждой позиции в контексте предсказывает два числа: вероятность того, что здесь начинается ответ, и вероятность того, что здесь ответ заканчивается. Модель не «сочиняет» ответ, как это сделал бы GPT, а именно указывает на span (непрерывный фрагмент) внутри уже данного текста — в данном примере позиции токена «1889». Это принципиально задача извлечения, а не генерации: правильный ответ уже присутствует во входных данных, и модель лишь находит его границы.

Пример 4 (масштаб архитектуры — откуда берутся 110 миллионов параметров BERT-base). Возьмём базовую конфигурацию BERT-base: размерность модели $d_{model}=768$, 12 слоёв энкодера, 12 голов внимания. По формулам из урока 343 один слой энкодера содержит проекции $Q$, $K$, $V$ и выходную проекцию $W^O$ — каждая размера $d_{model}\times d_{model}$, то есть суммарно около $4\times768^2\approx2{,}36$ млн параметров на self-attention, плюс полносвязный feed-forward блок размера $768\times3072$ и обратно, то есть ещё $2\times768\times3072\approx4{,}72$ млн параметров. Итого около $7$ млн параметров на один слой, а на 12 слоёв — около $85$ млн. Добавь сюда матрицу эмбеддингов словаря (около 30 тысяч токенов на 768 измерений — ещё порядка 23 млн параметров) — и получишь примерно 108–110 млн параметров, что и совпадает с реальным размером BERT-base.

Почему это важно

BERT показал индустрии, что для задач понимания текста — классификации, извлечения информации, определения похожести двух текстов, разметки именованных сущностей — двунаправленный контекст даёт систематическое преимущество над однонаправленным чтением, потому что реальный смысл слова часто раскрывается только с учётом того, что идёт после него, а не только до. Практически это означает: если твоя задача — не «сгенерировать новый текст», а «понять и классифицировать уже существующий», архитектура на основе энкодера (BERT и его многочисленные потомки вроде RoBERTa) почти всегда будет и точнее, и значительно дешевле в эксплуатации, чем использовать для той же задачи огромную генеративную модель уровня GPT-4 через API — просто потому, что модель BERT-класса на порядки меньше и не тратит вычисления на генерацию текста, который тебе для классификации попросту не нужен.

GPT: декодер трансформера и предсказание следующего токена

Интуиция

Если BERT — это студент, который видит весь текст экзаменационного билета сразу и заполняет пропуски, то GPT — это рассказчик, который знает только то, что уже сказал сам, и должен на каждом шаге придумать следующее слово, опираясь исключительно на всё, что было произнесено до этого момента, без единого взгляда вперёд. Такая постановка задачи может показаться более ограниченной, чем у BERT, — и в смысле «видит меньше контекста» это действительно так. Но именно это ограничение и есть источник главной суперспособности GPT: если модель умеет честно предсказывать, каким должно быть следующее слово, зная только всё, что было сказано раньше, значит она умеет генерировать текст — просто подставляя предсказанное слово в конец последовательности и повторяя процесс снова и снова, слово за словом, пока не получится связный, длинный, осмысленный текст.

Ты уже встречал этот механизм в уроке 343 в контексте декодера трансформера — маскированное (причинное) внимание, при котором позиция $t$ во время вычисления self-attention физически не может «видеть» позиции $t+1, t+2, \dots$: соответствующие им значения в матрице внимания принудительно обнуляются (или устанавливаются в $-\infty$ до применения softmax, что после softmax даёт вес, равный нулю). GPT берёт ровно эту половину архитектуры трансформера — декодер с причинным вниманием — и полностью отбрасывает энкодер и механизм cross-attention между ними, поскольку ему не нужно «переводить» один текст в другой: вся задача GPT — честно и последовательно продолжать один и тот же текст.

Формальное определение

GPT (Generative Pretrained Transformer — генеративный предобученный трансформер). Языковая модель на основе стека декодерных блоков трансформера (урок 343) с маскированным (причинным) self-attention: при вычислении представления токена на позиции $t$ модель имеет доступ только к токенам на позициях $1, \dots, t$, но не к позициям $t+1, t+2, \dots$. Модель предобучается через задачу причинного языкового моделирования (causal language modeling) — предсказание токена $x_{t+1}$ по всем предыдущим токенам $x_1, \dots, x_t$, — минимизируя отрицательное логарифмическое правдоподобие по всему обучающему корпусу:

$$\mathcal{L} = -\sum_{t=1}^{T} \log P(x_{t+1} \mid x_1, \dots, x_t)$$

Обрати внимание: это в точности тот self-supervised объектив (задача самообучения), который уже подробно разбирался в уроке 303 на примере фразы «Столица Франции —» → «Париж». Правильный ответ на каждом шаге — это буквально следующее слово в исходном тексте, которое никогда не нужно было размечать вручную: миллиарды таких мини-задач «предскажи следующее слово» автоматически извлекаются из любого достаточно большого корпуса текста, будь то книги, статьи в интернете или программный код.

Примеры

Пример 1 (авторегрессивная генерация — как из одного механизма получается целый абзац). Пусть модели дан затравочный текст «Столица Франции —». На первом шаге GPT вычисляет распределение вероятностей по всему словарю для следующего токена и, скажем, с высокой вероятностью выбирает «Париж». Дальше происходит ключевой трюк: токен «Париж» дописывается к концу последовательности, и весь процесс повторяется заново — теперь модель предсказывает следующий токен уже для последовательности «Столица Франции — Париж», например «,». Затем снова: «Столица Франции — Париж, крупнейший». И так далее, шаг за шагом, токен за токеном, пока не будет сгенерирован целый связный абзац или не встретится специальный токен конца текста. Ни на одном из этих шагов модель не «видела» текст, который сама ещё не сгенерировала, — именно причинное внимание гарантирует честность этого процесса.

Пример 2 (причинная маска внимания в явном виде — контраст с BERT). Для последовательности из 4 токенов $[x_1, x_2, x_3, x_4]$ матрица внимания BERT (без ограничений) — это полная матрица $4\times4$, где каждый токен участвует во взаимодействии с каждым, включая себя. У GPT та же матрица становится нижнетреугольной: токен $x_1$ видит только себя, $x_2$ видит $x_1$ и себя, $x_3$ видит $x_1, x_2$ и себя, $x_4$ видит всех остальных. В матричной форме это означает, что верхний треугольник матрицы весов внимания (над главной диагональю) обнулён — соответствующие позиции получают вес $0$ после softmax, потому что до softmax туда подставлено значение $-\infty$. Если бы такого ограничения не было, задача предсказания следующего токена стала бы тривиальной и бесполезной: модели достаточно было бы «подсмотреть» правильный ответ напрямую во входных данных.

Пример 3 (почему GPT — не про извлечение, а про сочинение, в отличие от BERT-примера с Эйфелевой башней). Попроси GPT-подобную модель продолжить текст «Столица Франции — это город, известный». В отличие от задачи извлечения ответа из уже данного текста (пример 3 из раздела про BERT), здесь никакого готового «правильного span» во входных данных нет — модель должна сгенерировать новый текст с нуля, опираясь на закономерности, выученные при предобучении на огромном корпусе (например: «...своими музеями, Эйфелевой башней и богатой историей»). Это принципиальная разница задач: BERT находит ответ внутри данного текста, GPT сочиняет продолжение, которого в исходном промпте физически не было.

Пример 4 (упрощённый псевдокод авторегрессивной генерации). Логику из примера 1 можно записать буквально в несколько строк:

tokens = tokenize("Столица Франции —")
for _ in range(max_new_tokens):
    logits = gpt_model(tokens)          # распределение по словарю для позиции t+1
    next_token = sample(logits[-1])     # выбор следующего токена (жадно или по вероятности)
    tokens.append(next_token)
    if next_token == END_OF_TEXT:
        break

Каждый вызов gpt_model(tokens) — это полный проход всей текущей последовательности через стек декодерных блоков с причинным вниманием; модель каждый раз заново пересчитывает представления всех токенов (хотя на практике для скорости используется кэширование уже посчитанных ключей и значений), но структурно ничего не меняется от шага к шагу — одна и та же причинная маска, один и тот же принцип «только назад, никогда вперёд».

Почему это важно

Именно причинное внимание — то самое архитектурное ограничение, которое кажется недостатком по сравнению с полным доступом BERT ко всему контексту, — оказывается единственным способом честно построить модель, умеющую генерировать текст последовательно, без «подглядывания» в собственный ещё не написанный ответ. Это прямое продолжение идеи self-supervised предобучения из урока 303: GPT превращает буквально весь текст интернета в бесконечный источник заданий «предскажи следующее слово», и в процессе решения миллиардов таких заданий модель попутно выучивает грамматику, факты о мире, стиль, логику рассуждений — всё то, что затем позволяет ей писать код, объяснять концепции и вести связный диалог, хотя формально её единственная обученная задача — предсказание одного следующего токена за раз.

Законы масштабирования: от GPT-1 до GPT-4

Интуиция

Представь, что ты печёшь один и тот же пирог, но каждый раз удваиваешь количество ингредиентов, время выпекания и размер духовки. Интуитивно кажется, что результат должен становиться «в целом лучше», но неясно — насколько именно, и есть ли предел, после которого дополнительные ингредиенты перестают помогать. Для языковых моделей в 2020 году исследователи OpenAI (статья Kaplan et al., «Scaling Laws for Neural Language Models») экспериментально обнаружили нечто удивительно предсказуемое: если строить график зависимости ошибки модели (loss, потери на тестовых данных) от числа параметров, объёма обучающих данных или вычислительного бюджета в логарифмическом масштабе, точки ложатся практически на прямую линию. Это означает, что улучшение модели при увеличении масштаба — не случайность и не результат удачных архитектурных находок для конкретного размера, а системная, предсказуемая закономерность, которую можно экстраполировать заранее, прежде чем тратить миллионы долларов на обучение конкретной модели.

Формальное определение

Законы масштабирования (scaling laws). Эмпирическая закономерность, согласно которой потеря языковой модели на тестовых данных $L$ убывает предсказуемым степенным образом при росте числа параметров модели $N$ (при достаточном объёме данных и вычислений, не ограничивающих рост):

$$L(N) \approx \left(\frac{N_c}{N}\right)^{\alpha_N}$$

где $\alpha_N$ — эмпирически найденный показатель степени (порядка $0{,}07$) и $N_c$ — константа. Аналогичные степенные зависимости выполняются для объёма обучающих данных $D$ и вычислительного бюджета $C$. Позднее исследование DeepMind (Hoffmann et al., 2022, модель Chinchilla) уточнило картину: при фиксированном вычислительном бюджете существует оптимальный баланс между числом параметров и объёмом данных — компьютерно-оптимальные модели должны обучаться примерно на $20$ токенах текста на каждый параметр модели, а не наращивать параметры произвольно при недостаточном объёме данных.

Примеры

Пример 1 (путь GPT-1 → GPT-4 в цифрах). GPT-1 (2018) — 117 миллионов параметров, 12 декодерных слоёв, контекст 512 токенов. GPT-2 (2019) — до 1,5 миллиарда параметров в крупнейшей версии, 48 слоёв — рост примерно в $1\,500\,000\,000/117\,000\,000\approx12{,}8$ раза относительно GPT-1. GPT-3 (2020) — 175 миллиардов параметров, 96 слоёв, контекст 2048 токенов — рост ещё примерно в $175/1{,}5\approx117$ раз относительно GPT-2, то есть более чем в 1000 раз относительно GPT-1 всего за два года. GPT-4 (2023) — точный размер официально не раскрыт OpenAI, что само по себе показательно: индустрия перешла от публикации детальных архитектурных спецификаций (как для GPT-1/2/3) к закрытым коммерческим моделям, но по независимым оценкам и утечкам речь идёт об архитектуре типа mixture-of-experts (смесь экспертов) с суммарным числом параметров порядка триллиона и контекстным окном, выросшим до десятков и сотен тысяч токенов в более поздних версиях.

Пример 2 (численный расчёт по степенному закону). Пусть показатель степени $\alpha_N=0{,}076$ (типичное эмпирическое значение из статьи Kaplan et al.). Насколько уменьшится потеря при увеличении числа параметров в 100 раз? Подставим в формулу отношение потерь: $L(100N)/L(N) = 100^{-0{,}076}$. Посчитаем: $100^{-0{,}076}=e^{-0{,}076\times\ln100}=e^{-0{,}076\times4{,}605}=e^{-0{,}35}\approx0{,}705$. То есть при стократном увеличении числа параметров потеря снижается лишь примерно до $70{,}5\%$ от исходного значения — заметное, но далеко не пропорциональное улучшение. Именно небольшая величина показателя степени объясняет, почему для сколько-нибудь ощутимого улучшения качества модели требуется наращивать масштаб не на проценты, а на порядки.

Пример 3 (Chinchilla: GPT-3 был недообучен относительно своего размера). GPT-3 обучался на примерно 300 миллиардах токенов при 175 миллиардах параметров — соотношение $300/175\approx1{,}7$ токена на параметр, что заметно ниже компьютерно-оптимального ориентира Chinchilla (около $20$ токенов на параметр). Команда DeepMind обучила модель Chinchilla с гораздо более скромными 70 миллиардами параметров, но на 1,4 триллиона токенов — соотношение $1\,400/70=20$ токенов на параметр — и при том же вычислительном бюджете, что и GPT-3, Chinchilla систематически превзошла GPT-3 по качеству. Вывод, перевернувший практику индустрии: для фиксированного бюджета вычислений часто выгоднее не увеличивать модель, а увеличивать объём обучающих данных при более скромном числе параметров.

Пример 4 (emergent abilities — способности, возникающие резко, а не плавно). Пока средняя потеря модели снижается плавно и предсказуемо по степенному закону (пример 2), некоторые конкретные способности ведут себя иначе: в статье про GPT-3 было показано, что точность на задачах вроде выполнения многозначного сложения в уме держится на уровне случайного угадывания почти для всех моделей меньше определённого размера, а затем резко, почти скачком, вырастает при переходе через некоторый порог масштаба. Это явление называют emergent abilities (возникающие способности) — их наличие или отсутствие плохо предсказывается простой экстраполяцией графика средней потери, что делает планирование конкретных возможностей будущих, ещё не обученных моделей заметно менее предсказуемым занятием, чем планирование их средней потери.

Почему это важно

Законы масштабирования превратили разработку языковых моделей из искусства в (частично) инженерную дисциплину: вместо того чтобы гадать, стоит ли тратить миллионы долларов на обучение модели определённого размера, исследовательские команды могут обучить несколько маленьких, дешёвых моделей разного масштаба, построить график зависимости потери от размера и экстраполировать, каким будет качество гипотетической модели, прежде чем тратить ресурсы на её реальное обучение. Урок Chinchilla — что баланс между параметрами и данными не менее важен, чем сам масштаб, — стал одним из главных практических уточнений индустрии последних лет и объясняет, почему современные модели далеко не всегда просто «больше» своих предшественников, а часто обучены на существенно большем объёме данных при относительно скромном росте числа параметров.

Fine-tuning, prompting и RLHF: как приручить предобученную модель

Интуиция

У тебя есть мощная, но «сырая» предобученная модель — она отлично предсказывает продолжение любого текста, но понятия не имеет, что от неё, собственно, ожидают в диалоге с пользователем: не обязана быть вежливой, не обязана честно признавать, чего не знает, и вообще с равной вероятностью может продолжить твой вопрос ещё одним вопросом, а не ответом. Превратить такую «сырую» модель в помощника вроде ChatGPT или Claude — отдельная и во многом более трудоёмкая задача, чем само предобучение. Есть три принципиально разных рычага, которыми это делается, и понимание разницы между ними — практический навык, который пригодится тебе в любом проекте, где ты будешь применять готовую LLM для конкретной бизнес-задачи.

Первый рычаг — fine-tuning (дообучение): взять предобученные веса и продолжить обучение уже на своих, специфичных для задачи размеченных данных, изменяя параметры модели напрямую. Второй рычаг — prompting (промптинг): не трогать веса модели вообще, а сформулировать задачу прямо в тексте запроса, полагаясь на то, что достаточно крупная модель способна понять инструкцию и даже несколько примеров прямо «на лету», без единого обновления градиентов, — этот эффект называют in-context learning (обучение в контексте). Третий рычаг — RLHF, отдельный этап, без которого рассуждать про «послушность» инструкциям было бы неполно: он не столько учит модель новым фактам, сколько перенастраивает её поведение так, чтобы из множества правдоподобных продолжений текста модель выбирала те, что реальные люди сочли бы более полезными, честными и безопасными.

Формальное определение

Fine-tuning (дообучение). Продолжение обучения предобученной модели на дополнительном, обычно значительно меньшем, размеченном наборе данных под конкретную целевую задачу; изменяются веса модели (все или часть) путём градиентного спуска по функции потерь этой целевой задачи.

Prompting (промптинг) и in-context learning (обучение в контексте). Способ адаптации модели под задачу, не требующий изменения весов: задача формулируется текстом непосредственно во входном запросе (промпте) модели, а сама модель, если она достаточно велика, способна вывести нужное поведение из инструкции и/или нескольких демонстрационных примеров, приведённых прямо в этом же запросе — без единого шага обучения на этих примерах.

RLHF (Reinforcement Learning from Human Feedback — обучение с подкреплением на основе человеческой обратной связи). Трёхэтапный процесс дообучения языковой модели: (1) supervised fine-tuning на демонстрациях желаемых ответов, подготовленных людьми; (2) обучение отдельной модели вознаграждения (reward model) на парных сравнениях ответов, где люди отмечают, какой из двух ответов лучше; (3) дообучение самой языковой модели методами обучения с подкреплением (например, PPO — Proximal Policy Optimization, проксимальная оптимизация политики) так, чтобы максимизировать оценку, выставляемую моделью вознаграждения.

Примеры

Пример 1 (fine-tuning BERT под классификацию тональности). У компании есть 10 тысяч отзывов, размеченных как «позитивный» или «негативный». Fine-tuning здесь выглядит так: взять предобученный BERT-base (см. пример 4 из раздела про BERT), добавить поверх токена [CLS] небольшой линейный классификационный слой и продолжить обучение всей модели целиком (или только верхних слоёв) на этих 10 тысячах размеченных примеров, минимизируя кросс-энтропию между предсказанием и истинной меткой. Через несколько эпох обучения веса модели изменятся так, чтобы систематически лучше решать именно эту конкретную задачу — но результат работает только для неё: чтобы решить другую задачу (например, определение языка текста), потребуется отдельный процесс дообучения на отдельных размеченных данных.

Пример 2 (prompting той же задачи без единого обновления весов). Ту же задачу классификации тональности можно решить, вообще не трогая веса модели, — просто дав GPT-подобной модели промпт вроде:

Определи тональность отзыва: позитивная или негативная.

Отзыв: "Доставка задержалась на неделю, но сам товар отличный."
Тональность:

Модель, опираясь исключительно на текст инструкции и понимание задачи, выученное при предобучении на триллионах токенов текста, выдаёт ответ прямо в этом же диалоге. Можно улучшить результат, добавив несколько примеров прямо в промпт перед реальным вопросом (few-shot prompting, промптинг с несколькими примерами) — это и есть in-context learning: модель «учится» на этих демонстрациях в рамках одного запроса, а не через изменение своих параметров.

Пример 3 (практический компромисс — когда что выбирать). Fine-tuning BERT-base на 10 тысячах отзывов требует GPU и нескольких часов обучения, но результат — компактная модель (около 110 млн параметров, пример 4 из раздела про BERT), которая затем работает быстро и дёшево при каждом отдельном запросе, и её можно развернуть локально. Prompting крупной LLM через API не требует ни GPU, ни обучения вообще — результат получаешь сразу, но каждый вызов API стоит денег пропорционально числу токенов в запросе и ответе, а качество решения сильно зависит от того, насколько удачно составлен промпт и сколько примеров в него уместилось (вспомни пример 15 практики про ограничение длины контекста). Если задача одна и стабильная, а объём запросов огромен — fine-tuning специализированной модели почти всегда выгоднее по деньгам в долгосрочной перспективе; если задач много, они часто меняются, а размеченных данных мало — prompting крупной универсальной модели практичнее.

Пример 4 (RLHF на практике — почему это не просто ещё один fine-tuning). Допустим, модель после supervised fine-tuning на демонстрациях умеет отвечать на вопросы, но иногда выдаёт грубые, уклончивые или откровенно неверные по стилю ответы. На этапе обучения модели вознаграждения людям показывают пары ответов модели на один и тот же промпт — ответ A и ответ B — и просят отметить, какой лучше. На этих сравнениях (а не на единственном «правильном» тексте) обучается отдельная нейросеть-«судья» — модель вознаграждения, которая учится выдавать более высокую оценку тем ответам, которые люди систематически предпочитают. Затем саму языковую модель дообучают методом обучения с подкреплением так, чтобы она генерировала ответы, максимизирующие оценку этого «судьи» — этот последний шаг детально изучается в уроке 347, где ты увидишь весь математический аппарат обучения с подкреплением (агент, среда, награда, политика) применительно уже не только к языковым моделям, но и к играм, роботам и другим задачам.

Почему это важно

Разница между fine-tuning, prompting и RLHF — не академическая тонкость, а конкретный практический выбор, который тебе придётся делать в любом реальном проекте с использованием LLM. Ошибиться в эту сторону дорого: попытка дообучать огромную модель под задачу, которая через месяц изменится, означает напрасно потраченные GPU-часы и устаревшую модель; попытка обойтись одним лишь промптингом там, где нужна стабильная точность на миллионах однотипных запросов, может обходиться в разы дороже в пересчёте на один запрос, чем маленькая дообученная модель. А без понимания того, что RLHF формирует именно поведение модели, а не её фактические знания, легко ошибочно интерпретировать уверенный, «отполированный» ответ модели как гарантию фактической точности — тогда как на деле RLHF учит модель звучать полезно и убедительно, но не проверяет и не расширяет то, что модель на самом деле знает из предобучения.

Практика: 30 заданий

Базовые задания (1–10)

Задание 1: Расшифруй аббревиатуру BERT и назови, какую часть архитектуры трансформера (урок 343) она использует.


Задание 2: Расшифруй аббревиатуру GPT и назови, какую часть архитектуры трансформера она использует.


Задание 3: В чём заключается задача masked language modeling (маскированного языкового моделирования), на которой предобучается BERT?


Задание 4: В чём заключается задача причинного языкового моделирования (causal language modeling), на которой предобучается GPT?


Задание 5: Почему BERT плохо подходит для генерации связного текста, хотя отлично справляется с задачами классификации и извлечения ответов?


Задание 6: Почему GPT способен генерировать связный текст слева направо, а BERT в его исходной архитектуре — нет?


Задание 7: В уроке 303 self-supervised learning (самообучение) разбирался на примере GPT: правильный ответ (следующее слово) уже содержится в самом тексте, ручная разметка не нужна. А что служит аналогичной «меткой» для self-supervised предобучения BERT?


Задание 8: Чем принципиально отличается fine-tuning от prompting как способ адаптации предобученной LLM (large language model — большой языковой модели) под конкретную задачу?


Задание 9: Расшифруй аббревиатуру RLHF и опиши в одном предложении её роль в создании современных ассистентов вроде ChatGPT и Claude.


Задание 10: Расставь в хронологическом порядке: GPT-3, BERT, GPT-1, ChatGPT, GPT-2.


Продвинутые задания (11–20)

Задание 11: Используя формулы из урока 343 (self-attention и feed-forward блоки), оцени число параметров одного слоя энкодера BERT-base при $d_{model}=768$.


Задание 12: Во сколько раз выросло число параметров при переходе от GPT-2 (1,5 млрд) к GPT-3 (175 млрд)?


Задание 13: GPT-3 обучался на примерно 300 миллиардах токенов при 175 миллиардах параметров. Посчитай соотношение токенов на параметр и сравни с компьютерно-оптимальным ориентиром Chinchilla (около 20 токенов на параметр).


Задание 14: По степенному закону $L(N)\propto N^{-\alpha_N}$ с $\alpha_N=0{,}05$, во сколько раз уменьшится потеря при увеличении числа параметров в 1000 раз?


Задание 15: Контекстное окно GPT-3 — 2048 токенов. Если каждый пример-демонстрация в few-shot промпте занимает примерно 150 токенов, сколько демонстраций максимум поместится, если оставить 300 токенов на сам вопрос и ответ?


Задание 16: Восстанови правильный порядок трёх этапов RLHF из перечисленных в произвольном порядке: (а) обучение модели вознаграждения на сравнениях людей, (б) дообучение языковой модели методом обучения с подкреплением, (в) supervised fine-tuning на демонстрациях желаемых ответов.


Задание 17: Почему RLHF не может научить модель новым фактам о мире, которых не было в данных предобучения, — только скорректировать её поведение?


Задание 18: Сравни число дообучаемых параметров при (а) fine-tuning только классификационного слоя поверх [CLS] BERT-base для бинарной классификации и (б) полном fine-tuning всей модели BERT-base (~110 млн параметров).


Задание 19: При вероятности маскирования 15% и длине входной последовательности BERT в 512 токенов, сколько токенов в среднем будет замаскировано?


Задание 20: Контекстное окно выросло с 2048 токенов у GPT-3 до, по независимым оценкам, порядка 128 тысяч токенов у более поздних версий GPT-4. Во сколько раз это больше, и что это практически позволяет сделать?


Задания-челленджи (21–30)

Задание 21: Спроектируй пайплайн создания чат-бота технической поддержки на основе GPT-подобной модели, задействующий self-supervised предобучение, supervised fine-tuning и RLHF. Опиши роль каждого этапа.


Задание 22: Объясни рассуждением, почему одного лишь self-supervised предобучения на предсказании следующего токена недостаточно, чтобы получить модель, послушно следующую инструкциям пользователя, — без дополнительных этапов fine-tuning и RLHF.


Задание 23: Сравни три подхода к созданию классификатора спама на базе LLM: (а) fine-tuning BERT-base на 5000 размеченных писем, (б) few-shot prompting GPT-подобной модели с несколькими примерами в запросе, (в) zero-shot prompting без единого примера. Оцени компромисс по точности, стоимости и скорости внедрения.


Задание 24: Объясни, почему средняя потеря модели убывает плавно и предсказуемо со шкалой (законы масштабирования), а конкретные способности вроде многозначной арифметики могут появляться резко, почти скачкообразно, при достижении определённого масштаба (emergent abilities).


Задание 25: Объясни, почему RLHF нельзя заменить обычным supervised fine-tuning, если у тебя есть только сравнения «ответ A лучше ответа B» без единого «эталонного» правильного текста для каждого запроса.


Задание 26: Компания хранит цены на товары, которые меняются ежедневно, и по ошибке решает дообучать (fine-tuning) LLM на актуальных ценах каждый день вместо того, чтобы передавать актуальные цены через промпт (например, через retrieval — подгрузку релевантного фрагмента базы данных прямо в контекст запроса). Опиши, в чём именно дорогая ошибка.


Задание 27: Опиши систему поиска и ответа на вопросы по внутренней базе знаний компании, объединяющую сильные стороны BERT-подобной модели (понимание) и GPT-подобной модели (генерация).


Задание 28: Даже при наличии достаточного объёма размеченных данных для задачи, объясни, почему иногда разумнее выбрать prompting крупной предобученной LLM, а не fine-tuning специализированной модели меньшего размера с нуля.


Задание 29: Объясни, как взаимодействуют между собой масштаб предобученной модели (законы масштабирования) и этап RLHF в формировании итогового поведения ассистента вроде ChatGPT или Claude — почему RLHF-дообученная модель меньшего размера может «ощущаться» полезнее необученной сырой модели большего размера.


Задание 30: Спроектируй эксперимент, который эмпирически покажет, что выгоднее для твоей конкретной задачи классификации при ограниченном бюджете на разметку данных — fine-tuning BERT или few-shot prompting крупной LLM.


Частые ошибки

  • «BERT и GPT — это просто два названия одной и той же модели». На деле это архитектурно разные половины трансформера с разными pretext-задачами: BERT — энкодер и маскированное языковое моделирование с двунаправленным контекстом, GPT — декодер с причинным вниманием и предсказание следующего токена. Путаница между ними ведёт к неверному выбору инструмента под задачу.

  • «ChatGPT/Claude знают факты о мире, потому что их специально разметили правильными ответами». На деле фактические знания модель получает почти исключительно на этапе self-supervised предобучения на огромном корпусе текста (урок 303) — RLHF и fine-tuning корректируют поведение и стиль ответов, но не служат основным источником фактических знаний модели (см. задание 17).

  • «Fine-tuning всегда лучше prompting, потому что он «глубже» меняет модель». Выбор зависит от объёма размеченных данных, стабильности задачи, бюджета и скорости требуемой итерации — при малом объёме данных, часто меняющейся задаче или необходимости быстрого прототипирования prompting зачастую практичнее (см. задания 23, 28).

  • «Чем больше модель по числу параметров, тем она однозначно лучше». Chinchilla scaling показал, что при фиксированном вычислительном бюджете важен баланс между размером модели и объёмом обучающих данных, а не только рост числа параметров (см. пример 3 раздела про масштабирование) — GPT-3, будучи очень крупной моделью, был заметно недообучен относительно своего размера.

  • «BERT можно использовать для генерации текста так же, как GPT, просто подав больше контекста». Ограничение — не в объёме контекста, а в самой архитектуре: двунаправленное внимание BERT структурно не исключает доступ к «будущим» токенам, что делает честную последовательную генерацию невозможной без принципиального изменения механизма внимания (задание 5).

  • «RLHF делает модель умнее в смысле объёма знаний». RLHF оптимизирует поведение и стиль ответов под человеческие предпочтения, используя сравнения ответов, а не добавляет модели новых фактов или расширяет её знания о мире — это два независимых, хоть и последовательных, процесса.

  • «Prompting — это магия без всякой закономерности, работает или не работает случайно». In-context learning (обучение в контексте) — реальная, измеримая архитектурная способность, надёжность и сила которой систематически растёт с масштабом модели (см. пример 4 раздела про законы масштабирования, emergent abilities) — грамотное составление промпта опирается на понимание этой закономерности, а не на угадывание.

Главное запомнить

  • BERT = энкодер трансформера + masked language modeling (маскированное языковое моделирование) + двунаправленный контекст → задачи понимания текста: классификация, извлечение ответов, определение сходства.

  • GPT = декодер трансформера + причинное внимание + предсказание следующего токена → задачи генерации связного текста слева направо.

  • И BERT, и GPT предобучаются self-supervised способом (урок 303): «метка» для обучения автоматически извлекается из самого текста, без ручной разметки — замаскированные слова у BERT, следующий токен у GPT.

  • Эволюция GPT: GPT-1 (117 млн параметров, 2018) → GPT-2 (1,5 млрд, 2019) → GPT-3 (175 млрд, 2020) → GPT-4 (точный размер не раскрыт, 2023) — рост на порядки на каждом шаге.

  • Законы масштабирования: потеря модели убывает предсказуемым степенным образом при росте параметров, данных и вычислений; Chinchilla scaling показал, что важен баланс токенов и параметров (~20 токенов на параметр), а не только размер модели.

  • Отдельные способности модели (emergent abilities) могут возникать резко при достижении определённого масштаба, тогда как средняя потеря модели убывает плавно, — эти два вида поведения не следует путать.

  • Fine-tuning меняет веса модели на размеченных данных задачи; prompting/in-context learning веса не меняет, задача формулируется текстом прямо в запросе.

  • RLHF — трёхэтапный процесс (supervised fine-tuning на демонстрациях → обучение модели вознаграждения → RL-дообучение), который делает модель послушной инструкциям и полезной, но не добавляет ей новых фактических знаний.

  • Именно комбинация self-supervised предобучения + supervised fine-tuning + RLHF стоит за современными ассистентами вроде ChatGPT и Claude, с которыми ты, скорее всего, взаимодействуешь каждый день.

Связь с темами курса

Урок 343 дал тебе полную архитектуру трансформера с энкодером, декодером и cross-attention между ними — сегодняшний урок показал, что BERT и GPT берут ровно половину этой конструкции каждый: BERT — стек энкодерных блоков и полное, ненаправленное внимание, GPT — стек декодерных блоков и маскированное (причинное) внимание, уже кратко упомянутое в уроке 343 как механизм, не позволяющий декодеру «подсматривать» будущие токены при генерации. Формулы self-attention $\text{Attention}(Q,K,V)=\text{softmax}(QK^T/\sqrt{d_k})V$ и multi-head attention из урока 343 применяются в обеих моделях без изменений — разница исключительно в том, какая маска накладывается на матрицу весов внимания и как формулируется pretext-задача предобучения.

Урок 303 разбирал self-supervised learning (самообучение) именно на примере GPT — предсказание следующего слова по фрагменту «Столица Франции —». Сегодняшний урок операционализировал эту идею архитектурно (декодер с причинным вниманием) и добавил второй конкретный пример той же парадигмы самообучения — masked language modeling BERT, где «меткой» служат замаскированные слова того же самого предложения. Раздел про fine-tuning и prompting этого урока также прямо продолжает мысль урока 303 о том, что современная разработка LLM строится в два этапа — self-supervised предобучение на огромном корпусе и сравнительно небольшое supervised дообучение под конкретную задачу, — только теперь ты видишь эту схему не абстрактно, а с конкретными числами параметров, конкретными архитектурными деталями и конкретным третьим этапом — RLHF.

Именно RLHF станет мостом к уроку 347, который подробно разберёт обучение с подкреплением (reinforcement learning) как отдельную парадигму машинного обучения — агент, среда, состояние, награда, политика — уже не только применительно к языковым моделям, но и к играм, роботам и другим задачам последовательного принятия решений. Сегодня ты увидел RLHF лишь на уровне общей идеи (модель вознаграждения по сравнениям людей, дообучение политики через RL); урок 347 даст тебе полный математический аппарат, стоящий за этим процессом, включая алгоритмы вроде PPO, кратко упомянутого в этом уроке. А следующий урок курса, 345, посвящённый генеративно-состязательным сетям (Generative Adversarial Networks), покажет, что задача генерации не ограничивается текстом — та же общая идея «генеративная модель + сигнал качества, направляющий обучение» находит совершенно другое воплощение в генерации изображений.

Интересные факты

  • ChatGPT набрал около 100 миллионов активных пользователей всего за два месяца после запуска в ноябре 2022 года — на тот момент это был самый быстрорастущий потребительский цифровой продукт в истории, обогнавший по скорости роста даже такие приложения, как TikTok и Instagram.

  • BERT был опубликован всего через несколько месяцев после GPT-1 в 2018 году и на момент выхода превзошёл GPT-1 практически на всех основных бенчмарках понимания текста (GLUE) — этот результат во многом и убедил индустрию в практической ценности двунаправленного контекста для задач понимания, породив целое семейство энкодерных моделей-последователей вроде RoBERTa и ALBERT.

  • Когда в феврале 2019 года OpenAI представила GPT-2, компания изначально отказалась выпускать полную версию модели с 1,5 миллиарда параметров, опасаясь массового использования для генерации убедительных фейковых новостей и спама, — редкий на тот момент прецедент, когда исследовательская лаборатория сознательно ограничила распространение уже готовой и обученной модели по соображениям безопасности, хотя позже модель всё же была полностью опубликована.

  • В отличие от статей про GPT-1, GPT-2 и GPT-3, где OpenAI публиковала подробные архитектурные спецификации (число слоёв, число параметров, размер контекста), технический отчёт про GPT-4 в 2023 году сознательно не раскрыл ни точное число параметров, ни детали архитектуры — сдвиг индустрии в сторону закрытых коммерческих моделей, отражающий как конкурентные, так и связанные с безопасностью соображения.

Лайфхаки

  • Если промптинг ChatGPT или Claude не даёт нужного результата с первого раза, прежде чем переходить к дорогостоящему fine-tuning, попробуй few-shot prompting — добавь в запрос несколько примеров желаемого формата ответа: in-context learning часто заметно улучшает качество без единого изменения весов модели.

  • Для задач классификации или извлечения информации с большим потоком однотипных запросов в продакшене всерьёз рассмотри fine-tuning компактной BERT-подобной модели вместо постоянных платных вызовов огромной LLM через API — экономия на масштабе может оказаться значительной (см. задание 23).

  • Когда данные, с которыми должна работать модель, быстро меняются (цены, новости, актуальные документы), предпочитай передавать свежую информацию прямо в промпт (например, через retrieval — подгрузку релевантного фрагмента базы знаний в контекст запроса), а не пытаться постоянно переобучать модель на новых фактах через fine-tuning (см. задание 26).

  • Помни, что языковая модель — это в основе своей предсказатель следующего токена, оптимизированный звучать правдоподобно, а не верифицированная база фактов: важные фактические утверждения из ответа LLM стоит перепроверять независимо, особенно если цена ошибки высока.

  • При системном экспериментировании с промптами относись к этому как к полноценной инженерной практике: фиксируй варианты промпта, число и содержание few-shot примеров, температуру генерации и результаты — как ты фиксировал бы гиперпараметры в классическом машинном обучении, а не полагайся на разовые интуитивные догадки.

Ты только что прошёл путь от механизма внимания (урок 342) через полную архитектуру трансформера (урок 343) до двух моделей, буквально определивших то, как выглядит взаимодействие человека с искусственным интеллектом сегодня. Теперь, когда ты открываешь Claude или ChatGPT, чтобы задать вопрос, ты точно знаешь, что происходит внутри: причинное внимание декодера честно, шаг за шагом, предсказывает следующий токен, опираясь на закономерности, выученные при self-supervised предобучении на огромном корпусе текста (урок 303), а поверх этого — слой RLHF, который направляет модель отвечать так, как реальные люди сочли бы полезным. Ты знаешь, почему для задачи поиска и классификации стоит присмотреться к энкодерным моделям вроде BERT, а для генерации текста — к декодерным моделям вроде GPT; знаешь, когда fine-tuning оправдан, а когда достаточно грамотно составленного промпта. Дальше курс сворачивает в сторону другого типа генеративных моделей — генеративно-состязательных сетей урока 345, где вместо текста мы будем генерировать изображения, а сигнал качества будет исходить не от предсказания следующего токена, а от соревнования двух сетей друг с другом.

Понял тему? Закрепи в боте! 🚀

Попрактикуйся на задачах и получи персональные рекомендации от AI

💪 Начать тренировку
💬 Есть вопрос? Спроси бота!