Кратко про RL-like методы в обучении языковых моделей.



Proximal Policy Optimization (PPO)

https://arxiv.org/abs/2203.02155

Дед всех методов ниже 👍

- Изобретен в OpenAI 7 лет назад вообще не для текстов, для языковых моделей применен 2 года 5 лет назад. Ни у кого, кроме OpenAI, не работает.

- Требует reward-модель, которая по паре промпт-ответ предсказывает качество ответа.

- Главная задача тут передать знания из reward-модели в основную. Но языковые модели генерируют дискретные токены, поэтому лосс недифференцируем, поэтому и нужна чёрная магия PPO. На ней мы останавливаться не будем, тут важно только то, что мы заставляем модель максимизировать награду в сгенерированных ответах, не слишком сильно отдаляясь от оригинальной SFT-модели (с помощью KL-штрафа).

- Единственный настоящий RL в этом списке.



Direct Preference Optimization (DPO)

https://arxiv.org/abs/2305.18290

Сын PPO и батя всех методов ниже 💃

- Учимся на тройках-предпочтениях: (промпт, хороший ответ, плохой ответ).

- Выводим финальный лосс из PPO. Выкидываем reward-модель, пусть сама языковая модель и моделирует награду. Заодно избавляемся от недифференцируемости.

- В итоге увеличиваем правдоподобие хорошего ответа, уменьшаем правдоподобие плохого. С весом, который зависит от неявной reward-модели.

- Из-за того, как устроена неявная награда, нужно хранить ещё и изначальную языковую модель 😣



Kahneman-Tversky Optimization (KTO)

https://arxiv.org/abs/2402.01306

- Учимся на тройках: (промпт, ответ, хороший = 1 или плохой = 0). Это и есть основная плюшка, можно учиться на лайках и дизлайках 👍

- Заменяем модель предпочтений Брэдли–Терри на модель из теории перспектив. На практике это означает добавление точки отсчета в виде среднего KL-отколнения в батче с перемешанными входами и выходами (поэтому, кстати, батч должен быть приличного размера) и добавление сигмоиды.



Odds Ratio Preference Optimization (ORPO)

https://arxiv.org/abs/2403.07691

- Учимся на тройках-предпочтениях: (промпт, хороший ответ, плохой ответ), как в DPO.

- К SFT лоссу добавляем отношение шансов на плохой ответ к шансам на хороший ответ (с определенным весом).

- Не нужно хранить изначальную языковую модель