Что такое DPO в обучении ИИ? Объясняем простыми словами с примерами

От NP_Article

ИИ-технолог

Обучение управлению ИИ с 0 до мастерского уровня

250+ уроков Начато наполнение Без инфоцыган и воды

Обучение базовой языковой модели не заканчивается на загрузке в нее гигабайтов текста. Чтобы нейросеть отвечала полезно, безопасно и в нужном тоне, ее нужно адаптировать под ожидания человека. DPO (Direct Preference Optimization, или прямая оптимизация предпочтений) – это алгоритм, который позволяет “выровнять” поведение модели напрямую, без создания сложных промежуточных систем оценки.

Что разберем Что это даст
Как работает DPO на практике Поймете, подходит ли этот метод для дообучения вашей модели
Как правильно собрать датасет Сможете подготовить данные так, чтобы модель действительно стала лучше
Типичные ошибки разметки Не потратите время на обучение, которое только испортит нейросеть

Суть метода DPO простыми словами

Обычно после базового обучения модель умеет генерировать текст, но не понимает, какой ответ хороший, а какой – плохой. Чтобы это исправить, раньше использовали метод RLHF (обучение с подкреплением на основе отзывов людей). Для RLHF нужно было создать отдельную нейросеть-оценщика, которая ставила бы баллы основной модели.

Метод DPO убирает лишнее звено. Вы просто показываете модели промпт (запрос) и два варианта ответа: один хороший, второй плохой. Алгоритм математически настраивает веса нейросети так, чтобы она увеличивала вероятность генерации хорошего ответа и снижала вероятность генерации плохого.

Формула применения: Запрос + Предпочтительный ответ (Chosen) + Отклоненный ответ (Rejected).

Какой метод выбрать: SFT, DPO или RLHF

Выбор алгоритма зависит от того, на каком этапе находится ваша модель и какую задачу вы решаете. DPO не заменяет другие подходы, а применяется на конкретном этапе.

Supervised Fine-Tuning (SFT)

Когда использовать: Когда модель вообще не умеет отвечать в нужном формате или не знает специфики вашей задачи.

Пример: Вы хотите, чтобы модель писала SQL-запросы. Вы собираете тысячи пар “Вопрос – Правильный SQL-код”. Модель учится синтаксису и структуре.

Ограничение: SFT учит модель “как отвечать”, но не учит “как отвечать лучше”.

Direct Preference Optimization (DPO)

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

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

Ограничение: DPO не вложит в модель новые фактические знания, если их там не было.

RLHF

Когда использовать: Когда вы обучаете фундаментальную модель уровня GPT-4 или YandexGPT и у вас есть ресурсы на содержание команды разметчиков из сотен человек и вычислительные мощности для обучения нескольких моделей одновременно.

Пример: Создание универсального чат-бота для миллионов пользователей с десятками критериев безопасности.

Ограничение: Слишком дорого и сложно для 99% прикладных бизнес-задач.

Как собрать датасет для DPO

Для запуска DPO вам потребуется набор данных в формате JSONL, где каждая строка содержит три элемента: prompt, chosen и rejected.

Пример структуры данных для обучения бота службы доставки:

Элемент Содержание Почему это работает
Prompt Курьер опоздал на два часа, где моя пицца?! Реальный пользовательский запрос с негативной эмоцией.
Chosen Простите за эту ситуацию. Давайте я прямо сейчас свяжусь с курьером и узнаю, где он, а вам оформлю промокод на следующий заказ. Ответ решает проблему и снижает градус конфликта (целевое поведение).
Rejected Согласно правилам сервиса, задержка доставки возможна из-за погодных условий. Ожидайте. Ответ формально верный, но токсичный для клиента (поведение, от которого нужно отучить).

Частые ошибки при подготовке DPO-датасета

Качество DPO напрямую зависит от разницы между хорошим и плохим ответом. Если собрать данные неправильно, модель научится не тому, что вы задумывали.

Ошибка 1: Разная длина ответов

В чем проблема: Разметчики часто пишут подробный хороший ответ (Chosen) и короткий плохой (Rejected). Алгоритм находит самую простую закономерность и решает: “Хороший ответ – это длинный ответ”.

К чему приводит: Модель начинает лить воду, выдавая огромные тексты на простые вопросы, вроде “Как сбросить пароль?”.

Как избежать: Требуйте от разметчиков, чтобы длины Chosen и Rejected были примерно одинаковыми. Плохой ответ должен быть плохим по смыслу или тону, а не по количеству символов.

Ошибка 2: Использование DPO для внедрения фактов

В чем проблема: Попытка научить модель новым знаниям (например, актуальным тарифам компании) через механизм предпочтений.

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

Как избежать: Если нужно добавить знания – используйте RAG (поиск по базе знаний) или дообучайте модель через SFT. DPO используйте только для полировки формата, стиля и безопасности.

Ошибка 3: Одинаковое начало в обоих вариантах

В чем проблема: И хороший, и плохой ответы начинаются с одной и той же шаблонной фразы (например, “Спасибо за ваш вопрос…”).

К чему приводит: На этапе обучения алгоритму сложнее вычислить градиент, так как первые токены идентичны. Модель медленнее учится различать качество ответов.

Как избежать: Диверсифицируйте структуру ответов. Плохой ответ должен отличаться от хорошего с самых первых слов.

Ошибка 4: Слишком очевидные “плохие” ответы

В чем проблема: В качестве Rejected используется откровенный бред или набор случайных слов.

К чему приводит: Модель не учится тонким различиям. Она легко понимает, что осмысленный текст лучше бессмысленного, но в реальной работе продолжит выдавать посредственные ответы.

Как избежать: Плохой ответ (Rejected) должен быть правдоподобным. Это должен быть ответ, который логически возможен, но не устраивает вас по стилю, точности формулировок или уровню эмпатии.

Ограничения метода

Не используйте DPO, если:

  • Ваша базовая модель еще не прошла SFT. DPO не учит разговаривать, оно учит выбирать лучшее из того, что модель уже умеет. Накатывать DPO на сырую базовую модель (Base) бессмысленно.
  • У вас нет четких критериев качества. Если два эксперта в вашей команде не могут договориться, какой из двух ответов лучше, алгоритм тоже не сможет. Данные для DPO требуют однозначности.
  • Задача требует строгой бинарной логики. Если в задаче есть только один абсолютно верный ответ (например, математическое вычисление), DPO избыточен. Достаточно SFT.

Коротко о главном

  • DPO – это способ отучить модель от нежелательных ответов и приучить к желаемым без создания отдельной нейросети-оценщика.
  • Метод применяется только после того, как модель прошла базовое дообучение (SFT) и уже умеет генерировать релевантный текст.
  • Для работы нужен датасет из троек: запрос, хороший вариант, плохой вариант.
  • Следите за тем, чтобы плохие и хорошие варианты были одинаковой длины, иначе модель просто научится писать длинные тексты.
  • DPO правит стиль, тон, безопасность и формат, но не подходит для загрузки в модель новых фактов.
Бесплатно с ИИ Claude · ChatGPT
Баланс запросов: —