Обучение с подкреплением и выравнивание
DPO
Обратить формулу оптимума — и обучать политику предпочтениями напрямую
Вывод в три строки
Из урока 120 известно решение KL-регуляризованной задачи:
Обычно это читают слева направо: есть награда — вот политика. Прочитаем справа налево и выразим награду:
Теперь подставим это в модель Брэдли–Терри из урока 130. Там стоит разность наград двух
ответов на один и тот же запрос — и
Максимизируем правдоподобие — получаем функцию потерь DPO:
Всё. Ни модели награды, ни RL, ни генерации в цикле обучения — обычная классификация пар.
Что исчезло и почему
Стоит проследить, куда делся каждый кусок конвейера.
| компонент RLHF | что с ним стало |
|---|---|
| модель награды | стала неявной — это |
| нормировка | сократилась в разности |
| PPO со всеми деталями | не нужен |
| генерация в цикле | не нужна: данные фиксированы |
| опорная модель | осталась — нужна для отношения |
Второе — ключевое место вывода. — сумма по всем возможным ответам, невычислимая в принципе. Она исчезает не потому, что мы её оценили, а потому, что модель предпочтений смотрит на разность.
Тот же приём встречался в блоке 3 (score не зависит от нормировки) и в ветке A (урок 040). Приём один: работать с разностями или градиентами логарифма, где неизвестная константа не выживает.
Сравнение
| RLHF | DPO | |
|---|---|---|
| моделей при обучении | 3 (политика, награда, опорная) | 2 (политика, опорная) |
| генерация в цикле | нужна | нет |
| данные | можно собирать по ходу | фиксированный набор |
| настройка | много (PPO) | мало () |
| оптимизирует | выученную награду | предпочтения напрямую |
Четвёртая строка — не только преимущество. Фиксированный набор означает, что DPO работает off-policy на данных, собранных чужой политикой, со всеми последствиями урока 090. RLHF может собирать свежие сравнения на текущей политике; DPO — нет, если только не запускать её итеративно.
Чего DPO не решает
Стоит быть точным, потому что вывод элегантен и от этого возникает завышенное ожидание.
Смещения разметки остаются. DPO обучается на тех же сравнениях. Если разметчики предпочитают длинные ответы, DPO выучит длину — не хуже и не лучше, чем RLHF.
Overoptimisation остаётся, в другой форме. У неявной награды нет отдельной модели, которую можно переоптимизировать, но давление на разность логарифмов есть, и оно может уводить модель в области с малой вероятностью у .
Предположение Брэдли–Терри остаётся. Оно постулирует, что предпочтения порождены скалярной латентной наградой и транзитивны. Реальные предпочтения людей нетранзитивны, и разбор Azar и др. показывает, где это вредит.
Появляется своя проблема. Функция потерь снижается и тогда, когда вероятность обоих ответов падает — важна лишь разность. На практике наблюдают, что уменьшается вместе с , просто медленнее. Отсюда варианты вроде IPO и добавление SFT-члена.
ответ вероятность
- средняя награда
- 0.8252
- KL от опорной
- 0.3546
- значение цели
- 0.6479
- β·log Z
- 0.6479
Итог
- DPO получается обращением формулы оптимума и подстановкой в Брэдли–Терри.
- Невычислимая нормировка сокращается в разности — тот же приём, что со score в ветке A.
- Остаются две модели вместо трёх, обучение становится обычной классификацией пар.
- Не решаются: смещения разметки, предположение Брэдли–Терри, давление на маловероятные области.
- Появляется своя проблема: потери падают и при снижении вероятности обоих ответов.
Источники
- Rafailov и др. — Direct Preference Optimization — Вывод и эксперименты
- Azar и др. — A General Theoretical Paradigm to Understand Learning from Preferences — Разбор предположений DPO и её слабых мест
Проверки
0 из 2Что сокращается и что остаётся
Отметьте все верные утверждения о DPO.
Функция потерь DPO
Реализуйте
dpo_loss(p_win, p_lose, ref_win, ref_lose, beta), где четыре первых аргумента — вероятности предпочтённого и отвергнутого ответов у текущей и у опорной модели. Верните[logit, loss, probability, implicit_reward_win]:logit= ;loss= ;probability= ;implicit_reward_win= — та самая неявная награда, ради которой всё затевалось.
Проверить себя можно так: если текущая модель совпадает с опорной,
logitравен нулю, а потери — . Обучение стартует ровно оттуда.Загрузка редактора…
Ctrl/⌘ + Enter