April 25, 2023

Как учить GPT с RL и (не) обосраться

Что такое PPO

Википедия и быстрый гуглеж даст вам вот такую матешу и примерно такую интуцию:
1)PPO является актор-критик алгоритмом(одна часть генерит шаги, другая выебываться что актор не прав)

2) Это градиентный метод, те мы используем честный backprop;

3) БОНУС: оно довольно стабильное(нет) в сравнении с Qlearning

и куда это совать, как это ебать

Нихуя не поняли? Поздравляю, у вас еще есть шансы интегрироваться в общество и пойти на завод

(1)Траектории - генерации - то что оцениваем

Простыми словами - это то какую последовательность действий мы будем оценивать критиком, при этом enviroment это вообще что угодно, в контексте GPT это будет выглядеть так:
{Prompt/question/task} {тут мы что то генерируем в ответ и это оцениваем}

(4-5)Rewards - награды

Нам не особо важно что тут будет в качестве награды, суть

(4) Reward-to-go - это функция, которая вычисляет общую награду, которую получает агент в игре. Обычно, чтобы вычислить reward-to-go, нужно начать с конца игры, следить за суммой полученных наград, умножать эту сумму на коэффициент дисконтирования (gamma) на каждом шаге, добавлять к этой сумме текущую награду и сохранять результаты в массиве. Формула для вычисления reward-to-go выглядит так:

где G - это функция reward-to-go, sₖ - это состояние на шаге k, T - это количество шагов в игре, γ - коэффициент дисконтирования, а R(sᵢ) - это награда за состояние sᵢ.

В контексте обучения GPT с PPO это выглядит так:
- Вычисляются преимущества (advantages) - это разница между ожидаемыми и фактическими значениями функции ценности (value function) в каждой точке траектории обучения. - те как сильно у нас отличается то что мы сгенерили на DELTA = REWARD
- Вычисляются взвешенные преимущества (advantages), учитывая маску (mask), которая указывает, какие шаги траектории являются реальными, а какие - пустыми. - падинги не смотрим
- Вычисляются ожидаемые значения функции ценности (returns) - это сумма преимуществ и фактических значений функции ценности в каждой точке траектории.
- Вычисляются значения функции ценности (values) и прогнозы функции ценности (vpreds) для каждой точки траектории.
- Вычисляются потери для функции ценности (vf_loss) и функции политики (pg_loss), а также коэффициенты обрезки (vf_clipfrac и pg_clipfrac).
- Вычисляются средние значения для возвращаемости (return_mean), дисперсии возвращаемости (return_var), средние значения функции ценности (value_mean) и дисперсии функции ценности (value_var).
- Вычисляются также значение энтропии (entropy), приблизительное расстояние Кульбака-Лейблера (approxkl) и расстояние Кульбака-Лейблера для функции политики (policykl).

KL - нужен нам для ppo с gpt потому что иначе расходиться, просто забейте

бэкпропаем мы дальше по loss очевидно

код отсюда

Два движенья, опа опа, пушка для leetcode готова (CodeRL: Mastering Code Generation through Pretrained Models and Deep Reinforcement Learning)


рил все что нужно знать
  • Берем CodeT5, суем задачу, полученный код гоняем по UNIT tests и по решению UNIT test награждаем. Как по мне - звучит как топ10 способов по созданию эффективного агента по взлому собеса
  • Так же добавили критика который смотрел на код и мог отправить на перегенарацию если предсказывал ошбику/ OOM/ что либо
  • Реварды были дискретными и выглядили так:


Схема обучения это прям кайф, оч круто, минусы- нихуя не понятно

Неважно сколько у тебя параметров, важно как ими пользуешься

ARXIV

Github