Обычное дообучение учит модель воспроизводить эталонные ответы. У этого есть незаметное ограничение: оно показывает, что делать, но никогда — чего не делать. Модель видит только хорошие примеры и не знает, от какой именно альтернативы вы их отличали.
Обучение на предпочтениях снимает это ограничение — ценой данных, которых у вас, скорее всего, нет.
#Короткий ответ
Вместо пар «вопрос — эталон» модели показывают тройки: вопрос, выбранный ответ и отвергнутый ответ. Обучение сдвигает модель так, чтобы выбранный вариант становился вероятнее отвергнутого.
DPO — метод, который делает это напрямую, без отдельной модели-оценщика. ORPO — вариант, который объединяет обычное дообучение и обучение на предпочтениях в один проход.
Практическая проблема одна и она серьёзная: отвергнутые ответы обычно не сохраняют. Вы отметили ответ минусом и закрыли диалог; текст, который вам не понравился, никуда не записался. Без него этот путь закрыт.
#Как это устроено
Разберём различие на одном примере.
Обычное дообучение. Есть вопрос «оцени мой слоган» и эталонный ответ — прямой, с конкретной критикой. Модель учится порождать такой текст. Про то, что альтернативой была вежливая похвала, она не узнаёт ничего.
Обучение на предпочтениях. Есть тот же вопрос, тот же выбранный ответ и рядом отвергнутый — та самая вежливая похвала. Обучение сдвигает модель в сторону первого относительно второго. Она учится не тексту, а различию между двумя способами ответить.
Разница важна именно для персонализации. Ваш стиль обычно описывается не тем, что вы пишете, а тем, чем вы это предпочли: коротко вместо развёрнуто, прямо вместо мягко, вывод сначала вместо вывода в конце. Пара «лучше — хуже» кодирует это различие напрямую, а одиночный эталон — только косвенно.
Историческая рамка. Раньше предпочтения использовали через обучение с подкреплением: сначала обучали отдельную модель-оценщика, потом ею вели обучение основной. Это дорого и неустойчиво. DPO показал, что для той же цели отдельный оценщик не нужен — предпочтения можно использовать напрямую. Именно это сделало метод доступным частному человеку. Общая рамка подхода — в справке про обучение с подкреплением и RLHF.
#Схема пары предпочтений
Одна запись выглядит так:
{
"prompt": "Оцени мой слоган: «Мы — лучшие на рынке!»",
"chosen": "Честно — слабый. «Лучшие на рынке» говорят все, это не подкреплено и не отличает вас. Сформулируйте, какую задачу клиента вы снимаете лучше других.",
"rejected": "Отличный слоган! Он звучит уверенно и запоминается. Возможно, стоит добавить немного конкретики."
}
Требования к таким данным жёстче, чем к обычному датасету:
- Оба ответа на один и тот же вопрос. Не похожий, а тот же самый.
- Оба ответа правдоподобны. Пара «хороший ответ против бессмыслицы» ничему не учит: различие слишком очевидно и не несёт информации о вашем предпочтении.
- Различие проходит по одному признаку. Если отвергнутый ответ хуже сразу по пяти параметрам, модель не поймёт, какой из них вы имели в виду.
- Предпочтение последовательно. Если в одной паре вы выбрали краткость, а в другой при прочих равных развёрнутость, вы обучаете противоречию.
Третий пункт — самый нарушаемый. Идеальная пара отличается ровно одним: тоном, или длиной, или порядком изложения.
#Сравнение с обычным дообучением
| Критерий | Обычное дообучение | Обучение на предпочтениях |
|---|---|---|
| Что нужно | вопрос + эталон | вопрос + выбранный + отвергнутый |
| Что учит | воспроизводить ответ | различать два способа ответить |
| Данные из повседневной работы | накапливаются сами | отвергнутые не сохраняются |
| Чувствительность к противоречиям | высокая | ещё выше |
| Порядок применения | первым | после обычного дообучения |
| Риск | заучивание датасета | сдвиг к «не как в отвергнутом» вместо «как в выбранном» |
Последняя строка описывает специфический провал этого метода: модель может научиться избегать признаков отвергнутых ответов, не приобретя признаков выбранных. Внешне это выглядит как обеднение — ответы становятся короче и осторожнее, но не ближе к вашему стилю.
#Что из этого следует на практике
Собирайте отвергнутые ответы заранее. Это единственное действие, которое надо начать делать сегодня, чтобы через полгода этот путь был открыт. Механика простая: когда ответ вам не понравился и вы переформулировали вопрос, сохраните обе версии. Как встроить это в разметку — в статье про разметку хороших ответов.
Не начинайте с предпочтений. Порядок такой: сначала обычное дообучение на эталонах, потом, если манера всё ещё не та, обучение на предпочтениях поверх. Начинать с предпочтений на пустом месте — способ получить модель, которая знает, чего не делать, и не знает, что делать.
Пар нужно меньше, чем эталонов, но качество жёстче. Порядок величины сопоставим с обычным датасетом — ориентиры по целям в статье сколько примеров нужно для дообучения. Но одна противоречивая пара вредит сильнее, чем один противоречивый эталон.
Можно построить пары искусственно. Взять свой эталонный ответ как выбранный, а ответ базовой модели на тот же вопрос — как отвергнутый. Это работает, если базовая модель действительно отвечает не так, как вы хотите; если её ответ приемлем, пара ничему не учит.
#Где интуиция подводит
«Дизлайк — это уже отвергнутый ответ». Только если сам текст сохранён. Оценка без текста — это метка темы, а не обучающий сигнал. Проверьте, что ваш инструмент хранит именно ответ, а не только его оценку. Откуда вообще берутся такие данные в повседневной работе — в гайде как собрать датасет из своих оценок.
«Это замена обычному дообучению». Не замена, а следующий слой. ORPO объединяет оба в один проход, но и он предполагает, что у вас есть и эталоны, и пары.
«Больше пар — лучше». До определённого предела. Метод чувствителен к противоречиям сильнее обычного дообучения: две пары с противоположным предпочтением на похожих вопросах гасят друг друга и добавляют шум.
«Модель научится не врать». Не научится. Предпочтения учат манере выбора между вариантами, а не фактической точности. Уверенная выдумка, поданная в предпочитаемом вами стиле, останется выдумкой.
Общая рамка маршрута — что даёт дообучение и чего от него ждать — в пилларе про свою модель и дообучение под себя.
#Частые вопросы
#Чем DPO отличается от ORPO?
DPO работает как отдельный этап поверх уже дообученной модели: сначала обычное обучение на эталонах, потом сдвиг по предпочтениям. ORPO объединяет оба сигнала в одном проходе, что экономит цикл. Для первого проекта разница второстепенна — сначала нужны данные.
#Нужна ли для DPO отдельная модель-оценщик?
Нет, и в этом его практическая ценность. Более ранний подход требовал сначала обучить оценщика, а потом вести им обучение основной модели — дорого и неустойчиво. DPO использует пары предпочтений напрямую.
#Сколько пар нужно?
Порядок сопоставим с обычным датасетом — сотни для сдвига манеры. Но требования к согласованности жёстче: лучше двести выверенных пар, отличающихся одним признаком, чем тысяча собранных на автомате.
#Можно ли сгенерировать отвергнутые ответы моделью?
Можно, и это распространённый обходной путь: ответ базовой модели берётся как отвергнутый, ваш эталон — как выбранный. Условие одно — ответ базовой модели должен быть действительно неподходящим. Если он приемлем, пара учит различию, которого нет.
#Стоит ли это того для личной модели?
Стоит, если обычное дообучение уже дало результат и вам не хватает именно тонкой настройки предпочтений. Если вы ещё не прошли базовый маршрут — нет: сначала эталоны, потом предпочтения. И начните сохранять отвергнутые ответы уже сейчас, иначе через полгода данных всё так же не будет.
#Вывод
Обучение на предпочтениях кодирует то, что обычное дообучение выражает лишь косвенно: не «как отвечать», а «что вы предпочли и чему». Для персонализации это точнее.
Практический барьер не в методе, а в данных. Отвергнутые ответы никто не хранит, и первое, что стоит сделать, — начать их сохранять. Метод подождёт; данные без сохранения не появятся никогда.