Как учить 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 потому что иначе расходиться, просто забейте
Два движенья, опа опа, пушка для leetcode готова (CodeRL: Mastering Code Generation through Pretrained Models and Deep Reinforcement Learning)
- Берем CodeT5, суем задачу, полученный код гоняем по UNIT tests и по решению UNIT test награждаем. Как по мне - звучит как топ10 способов по созданию эффективного агента по взлому собеса
- Так же добавили критика который смотрел на код и мог отправить на перегенарацию если предсказывал ошбику/ OOM/ что либо
- Реварды были дискретными и выглядили так:
Схема обучения это прям кайф, оч круто, минусы- нихуя не понятно
Неважно сколько у тебя параметров, важно как ими пользуешься