alterna ai
ALTERNA AI / ГЛАВА 16 · 05

16.5 Учимся по сравнению двух ответов

На предыдущей странице: учебные примеры вопроса и ответа.

Данные могут говорить, какой из двух ответов предпочли. Это отдельный критерий обучения, а не доказательство истинности выбранного ответа.

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

Сравниваем ответы относительно reference policy

Preference dataset содержит prompt и пару ответов: chosen/rejected по некоторому процессу разметки. DPO использует разность log-ratios текущей и reference policies и binary logistic loss. Положительный margin означает, что policy усилила chosen относительно rejected сильнее, чем reference. F03, F04.

Δ=[log⁡πθ(y+∣x)−log⁡πθ(y−∣x)]−[log⁡πref(y+∣x)−log⁡πref(y−∣x)],LDPO=−log⁡σ(βΔ).\Delta=\left[\log\pi_\theta(y^+|x)-\log\pi_\theta(y^-|x)\right] -\left[\log\pi_{ref}(y^+|x)-\log\pi_{ref}(y^-|x)\right], \quad L_{DPO}=-\log\sigma(\beta\Delta).

Log-probability ответа является суммой masked token log-probabilities под одним и тем же prompt/template. Reference frozen. Параметр beta масштабирует предпочтение; он не является «процентом человечности». RLHF с reward model и policy optimization — другой pipeline: сводить весь alignment к одной формуле DPO нельзя.

Что показывает модель. Модель показывает четыре sequence log-probabilities, две внутри-policy разности и итоговый margin. Простая вероятность chosen у policy недостаточна: objective оценивает относительное изменение против reference. Ties, disagreement annotators и position bias должны оставаться наблюдаемыми метаданными.

Граница применимости. Preference не равна истине и может конфликтовать между пользователями. Pairwise dataset плохо покрывает редкие риски, а reward hacking возможен и без явного reward model. Offline improvement по preference loss не заменяет red-team, factual evaluation и мониторинг реального distribution shift.

from math import exp,log
policy_chosen_16e,policy_rejected_16e=-1.2,-2.0
ref_chosen_16e,ref_rejected_16e,beta_16e=-1.0,-1.5,0.5
margin_16e=(policy_chosen_16e-policy_rejected_16e)-(ref_chosen_16e-ref_rejected_16e)
pair_prob_16e=1/(1+exp(-beta_16e*margin_16e)); dpo_loss_16e=-log(pair_prob_16e)
assert abs(margin_16e-0.3)<1e-12 and abs(dpo_loss_16e-0.6209570477895321)<1e-12

Код повторяет только что разобранные операции. Полный проверяемыйPython-пример главы доступен отдельным файлом; показанный короткий фрагмент не заменяет его реализацию.

Pairwise loss подгоняется под наблюдённые chosen/rejected labels и frozen reference contract.

Небольшая добавка к большой таблице. Как этот вопрос продолжает полученный результат?

Python-примеры главы 16 Академическая база →