RLHF: как модель научили быть полезной

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

Главная мысль урока: предобучение учит модель продолжать текст из интернета, а RLHF учит её помогать тебе. Это два разных навыка, и второй добавляют отдельно — с помощью людей, которые оценивают ответы.

Зачем вообще что-то доучивать

Представь, что ты весь год зубрил всё подряд: читал учебники, форумы, переписки, инструкции к стиральным машинам, споры в комментариях. В голове осело море фактов и оборотов речи. Но вот к тебе подходит младший брат и спрашивает: «Как пожарить яичницу?» — а ты вместо ответа начинаешь дословно цитировать кусок форума, где трое незнакомцев ругаются, кто жарит правильнее.

Знания есть. Пользы — ноль. Именно в таком состоянии модель выходит из предобучения на интернете: она научилась гениально продолжать текст, но никто ей не объяснил, что от неё ждут понятного и полезного ответа, а не правдоподобного продолжения.

Вспомни наш сквозной текстовый пример — фразу «Кошка пьёт ...». Сырая модель отлично достроит её до «молоко» или «воду», потому что миллионы раз видела такие фразы. Но если ты спросишь её «Что вредно давать кошке?», она вполне может вместо честного ответа выдать что-то вроде «а вот в моём детстве кошка ела всё подряд» — потому что в интернете полно именно таких болтливых продолжений. Текст связный, а толку нет.

А теперь представь: ты открываешь ChatGPT, спрашиваешь то же самое — и получаешь спокойный, вежливый ответ строго по делу, да ещё с оговоркой, если он в чём-то не уверен. Откуда такая разница, если внутри всё та же предобученная модель? Вот к чему мы придём в этом уроке: между «эрудитом из интернета» и «вежливым помощником» стоит отдельный этап дрессировки, и зовут его RLHF. Без него ChatGPT был бы похож не на собеседника, а на бесконечную ленту комментариев, которая просто продолжает любую твою фразу.

Предобученная модель — это эрудит, который не умеет отвечать на вопрос. Он умеет только продолжать любой текст так, как его обычно продолжают в сети.

Чтобы превратить эрудита в помощника, после предобучения добавляют ещё два этапа. О втором — главном — этот урок.

Три этапа взросления модели

Большую языковую модель растят примерно как навык: сначала много читаешь, потом смотришь на хорошие образцы, потом тебя поправляют. Разложим по полочкам.

ЭтапЧто происходитАналогия из жизни
1. ПредобучениеМодель читает огромный кусок интернета и учится продолжать текстГод зубрёжки всего подряд без разбора
2. Дообучение на примерахЛюдям показывают хорошие пары «вопрос → правильный ответ», модель копирует стильСмотришь, как старший товарищ грамотно отвечает, и учишься так же
3. RLHFЛюди оценивают ответы модели, и она подстраивается под их оценкиТебя поправляют после каждого ответа: «вот так лучше, а так — нет»

Первые два этапа уже дают неплохого помощника. Но именно третий, RLHF, добавляет ту вежливость, аккуратность и осторожность, за которую мы любим ChatGPT. Разберёмся, что это за зверь.

Тут стоит остановиться на втором этапе подробнее, потому что его часто путают с RLHF. На втором этапе люди пишут образцовые ответы руками: вопрос — и рядом готовый хороший ответ. Модель просто копирует этот стиль, как ты копируешь почерк учителя, переписывая текст из прописей. Это обучение с учителем в чистом виде: есть вопрос, есть метка — правильный ответ. Работает, но упирается в стену: образцов можно написать всего несколько десятков тысяч, а разных вопросов на свете бесконечно много. Поэтому одних прописей мало — нужен механизм, который масштабируется. Им и стал RLHF.

Что такое RLHF простыми словами

RLHF — дообучение модели на оценках людей, чтобы её ответы стали полезными, честными и безопасными.

Расшифровка длинная и страшная: Reinforcement Learning from Human Feedback — «обучение с подкреплением на обратной связи от людей». Но за этими словами прячется очень простая идея, знакомая тебе по играм.

Метафора: тренер, который ставит оценки

Вспомни, как ты осваивал новую игру. Никто не давал тебе учебник «как пройти босса». Ты пробовал, получал по щам, видел экран Game Over — и в следующий раз делал чуть иначе. Хорошие действия запоминались, плохие отбрасывались. Это и есть обучение с подкреплением: ты учишься не по готовым ответам, а по наградам и штрафам за свои поступки.

RLHF — то же самое, только наградой служат оценки живых людей. Модель выдаёт ответ, человек смотрит и говорит «этот вариант лучше, а этот хуже». Модель запоминает: «ага, за такое поведение хвалят» — и постепенно начинает отвечать именно так.

Откуда берутся оценки

Если бы человеку пришлось оценивать каждый ответ модели вручную, на это ушли бы тысячи лет: модель тренируется на миллионах примеров. Поэтому хитрят в два шага.

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

Главный фокус RLHF: мнение нескольких тысяч человек превращают в автоматического судью, и уже он раздаёт миллионы оценок. Люди задают направление, машина масштабирует.

А что с нашей кошкой против собаки?

Через весь курс мы тащим два примера: «отличить кошку от собаки» и фразу «Кошка пьёт ...». Где здесь RLHF? Честный ответ: для чистой задачи «кошка или собака» RLHF обычно не нужен — там есть точные метки (на фото правда кошка или правда собака), и хватает обучения с учителем. Сравнивать ответы людям незачем, когда правильный ответ известен заранее.

RLHF выходит на сцену там, где «правильного ответа» нет в готовом виде. Спроси модель «Расскажи про кошек» — и единственно верного текста не существует: один ответ длинный, другой короткий, третий с шуткой. Тут уже не наклеишь метку «верно/неверно», зато легко сказать «этот ответ приятнее и полезнее того». Поэтому RLHF — это про открытые вопросы и свободный текст, а наш сквозной текстовый пример «Кошка пьёт ...» как раз из этого мира: продолжений у него миллион, и какое из них «хорошее», решают люди.

Как это меняет поведение: разбор примеров

Курс у нас концептуальный, поэтому код здесь — не «настоящий RLHF» (он требует огромных вычислений), а маленькие модельки идеи на JavaScript. Они показывают принцип, а не реальную начинку ChatGPT.

Пример 1. Судья выбирает лучший ответ

Представим, что у нас есть модель-судья. Она по-простому считает, насколько ответ «хороший»: добавляет очки за полезность и вежливость и отнимает за грубость. Это карикатура на модель награды, но логика та же.

// Карикатурный "судья": оценивает ответ в очках
function judge(answer) {
  let score = 0;
  if (answer.helpful) score += 5;   // ответ по делу
  if (answer.polite) score += 3;    // вежливый тон
  if (answer.rude) score -= 4;      // грубость штрафуем
  return score;
}

// Модель на вопрос "Что вредно давать кошке?" выдала 3 варианта
const answers = [
  { text: "Сам разберись, не маленький.", helpful: false, polite: false, rude: true },
  { text: "Кошкам нельзя шоколад и лук.",   helpful: true,  polite: true,  rude: false },
  { text: "Ну, наверное, что-то нельзя.",   helpful: false, polite: true,  rude: false },
];

// Судья оценивает каждый вариант
let best = answers[0];
for (const a of answers) {
  if (judge(a) > judge(best)) best = a;
}

console.log("Оценки:", answers.map(judge));
console.log("Победитель:", best.text);

Вывод:

Оценки: [ -4, 8, 3 ]
Победитель: Кошкам нельзя шоколад и лук.

Грубый ответ ушёл в минус, обтекаемый получил немного, а полезный и вежливый победил. Во время RLHF модель миллионы раз попадает в такую ситуацию и постепенно учится сразу выдавать ответы, которые судья оценивает высоко. Заметь: ответ про кошку — это наш сквозной текстовый пример, только теперь модель не продолжает фразу, а старается помочь.

Пример 2. Модель подстраивается под оценки

Покажем сам момент «обучения». У модели есть склонность вести себя грубо — число от 0 до 1. После каждого ответа судья даёт награду, и если за грубость штрафуют, склонность к ней уменьшается.

// Насколько модель склонна грубить (0 = вежливо, 1 = хамит)
let rudeness = 0.8;

// Один шаг обучения: судья даёт награду, модель подстраивается
function trainStep(rudeness) {
  // Чем грубее ответ, тем ниже награда судьи
  const reward = -rudeness;        // грубость = штраф
  const step = 0.1 * reward;       // двигаемся в сторону награды
  let next = rudeness + step;
  if (next < 0) next = 0;          // ниже нуля не уходим
  return next;
}

// Прогоняем 5 раундов обучения
for (let i = 1; i <= 5; i++) {
  rudeness = trainStep(rudeness);
  console.log("Раунд " + i + ": склонность грубить = " + rudeness.toFixed(3));
}

Вывод:

Раунд 1: склонность грубить = 0.720
Раунд 2: склонность грубить = 0.648
Раунд 3: склонность грубить = 0.583
Раунд 4: склонность грубить = 0.525
Раунд 5: склонность грубить = 0.472

С каждым раундом модель грубит всё меньше: штраф за хамство толкает её к вежливости. В настоящем RLHF подстраивается не одно число, а миллиарды весов нейросети, но направление движения ровно такое же — в сторону того, что люди оценивают выше.

Пример 3. Почему просто «копировать хорошие ответы» мало

Можно спросить: зачем эта возня с оценками, если на этапе 2 модели уже показали хорошие ответы? Дело в том, что хороших ответов на свете гораздо больше, чем успеешь написать руками. Сравнивать («A лучше B») людям куда легче и быстрее, чем сочинять идеал с нуля.

// Человеку проще СРАВНИТЬ два ответа, чем написать идеальный
function whichIsBetter(a, b) {
  return a.score >= b.score ? "A" : "B";
}

const a = { text: "Шоколад и лук кошке нельзя.", score: 9 };
const b = { text: "Не корми её всякой ерундой.", score: 4 };

console.log("Человек выбирает вариант:", whichIsBetter(a, b));
console.log("Из таких сравнений и собирают данные для судьи.");

Вывод:

Человек выбирает вариант: A
Из таких сравнений и собирают данные для судьи.

Тысячи таких сравнений — и у нас есть, на чём обучить судью. Поэтому RLHF строится именно на сравнениях, а не на готовых эталонах: так дешевле собрать данные и легче охватить кучу разных вопросов.

Связь с ChatGPT: что ты видишь на самом деле

Когда ChatGPT вежливо отказывается помочь со взломом чужого аккаунта, аккуратно оговаривается «я могу ошибаться» или переспрашивает, что именно ты имел в виду, — это почти всегда следы RLHF. Вот за что отвечает этот этап.

Поведение ChatGPTОткуда оно
Отвечает по делу, а не продолжает твой текстЛюди выше оценивали ответы-помощь
Вежливый, спокойный тонЗа грубость в оценках штрафовали
Отказывается от опасных просьбОпасные ответы получали низкую оценку
Иногда говорит «я не уверен»Честность ценилась выше уверенного вранья

Важно понимать честно: RLHF не делает модель умнее и не добавляет ей знаний. Все факты она получила ещё на предобучении. RLHF меняет поведение — то, как модель распоряжается тем, что уже знает. Это как разница между «знать ответ» и «уметь вежливо и понятно его подать».

Частые ошибки и подводные камни

RLHF — мощный, но не волшебный. Вот где новички (да и не только они) делают неверные выводы.

  • «RLHF убирает галлюцинации». Нет. Галлюцинация — это уверенно звучащий выдуманный ответ. RLHF может приучить модель чаще оговариваться «я могу ошибаться», но придумывать факты она по-прежнему способна. Оценки людей чуть снижают риск, но не выключают его.
  • «Модель понимает добро и зло». Нет. Она просто запомнила, за какие ответы её хвалили. Это не совесть, а статистика оценок. Поменяй оценки — поменяется и «мораль» модели.
  • «Оценщики всегда правы». Люди-оценщики тоже ошибаются, устают и имеют свои вкусы. Если они систематически предпочитают длинные ответы, модель научится быть многословной — даже когда краткость была бы лучше. Перекосы оценщиков переезжают прямо в поведение модели.
  • «RLHF добавляет модели новые знания». Нет. Этот этап настраивает поведение, а не закачивает свежие факты. Если о событии не было в данных предобучения, никакой RLHF не научит модель о нём рассказать.
  • «Угодливость — это хорошо». Не всегда. Если оценщики любят, когда с ними соглашаются, модель может научиться поддакивать вместо того, чтобы поправить твою ошибку. Излишняя любезность — известный побочный эффект RLHF.

Мини-практика: побудь оценщиком

Лучший способ почувствовать RLHF — самому поработать судьёй. Возьми наш сквозной вопрос про кошку: «Что вредно давать кошке?»

  1. Придумай три разных ответа на этот вопрос: один полезный и вежливый, один грубый, один уклончивый-пустой.
  2. Расставь их по местам — от лучшего к худшему, как делает оценщик в RLHF.
  3. Теперь усложни: добавь четвёртый ответ — вежливый, но с выдуманным фактом (например, «кошкам нельзя огурцы, они от них болеют»). Куда ты его поставишь? Это и есть та самая ловушка: звучит мило, а внутри галлюцинация.
  4. Допиши функцию judge из первого примера так, чтобы она ещё и штрафовала за выдуманные факты (добавь поле made_up и вычитай за него очки). Прогони её на своих четырёх ответах.

Поймав себя на сомнении «а правда ли это» при оценке четвёртого ответа, ты буквально почувствуешь, почему обучить честности так сложно: даже человеку-судье трудно отличить уверенную выдумку от правды.

Итоги

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

Теперь ты прошёл весь путь от сырого интернета до вежливого помощника: предобучение дало знания, RLHF дал манеры. В следующих уроках мы посмотрим, как этим помощником пользоваться с умом — как писать хорошие промпты и не попадаться на его уверенные выдумки.

Проверьте себя
1. Чем главным образом отличается задача RLHF от предобучения?
AПредобучение учит продолжать текст, а RLHF — быть полезным помощником
BRLHF закачивает в модель новые факты из интернета
CПредобучение делает модель вежливой, а RLHF — умной
DЭто одно и то же, просто разные названия
2. Зачем в RLHF обучают отдельную модель-судью (модель награды)?
AЧтобы люди могли отдохнуть от работы навсегда
BЧтобы автоматически оценивать миллионы ответов вместо людей на каждом шаге
CЧтобы судья придумывал модели новые вопросы
DЧтобы судья хранил все факты вместо основной модели
3. Что в RLHF играет роль «награды», на которую подстраивается модель?
AКоличество слов в ответе
BСкорость генерации ответа
CОценки людей (а затем модели-судьи), показывающие, какой ответ лучше
DРазмер обучающего набора текстов
4. Почему RLHF строят на сравнениях ответов, а не на готовых идеальных образцах?
AСравнивать «A лучше B» людям проще и быстрее, чем писать идеал с нуля
BСравнения занимают больше места в памяти
CИдеальные ответы запрещены законом
DМодель не умеет читать готовые ответы
5. Какое утверждение про RLHF верно?
ARLHF полностью убирает галлюцинации
BRLHF даёт модели совесть и понимание добра и зла
CRLHF добавляет модели свежие факты о мире
DRLHF меняет поведение модели, но не добавляет знаний и не выключает галлюцинации полностью
6. Откуда у модели берётся «угодливость» — склонность поддакивать вместо того, чтобы поправить ошибку?
AЭто встроено в железо компьютера
BЕсли оценщики чаще хвалят ответы, с которыми соглашаются, модель учится именно так
CЭто случайный сбой, не связанный с обучением
DУгодливость появляется только на этапе предобучения