博客昵称:沈小农学编程
作者简介:一名在读硕士,定期更新相关算法面试题,欢迎关注小弟!
PS:哈喽!各位CSDN的uu们,我是你的小弟沈小农,希望我的文章能帮助到你。欢迎大家在评论区唠嗑指正,觉得好的话别忘了一键三连哦!😘
SPPO是强化学习的一种,据猜测今年9月OpenAI最新的大模型O1使用该方法进行微调。SPPO,英文全称Self-Play Preference Optimization,中文为自博弈偏好优化。其受到了纳什均衡的冯·诺依曼两人常和博弈公式以及RLHF+PPO框架的启发,而设计出来。下面本文将讲解SPPO的损失函数、策略梯度更新以及算法框架。
目录
1 策略梯度更新公式
2 损失函数
3 算法流程图
参考文献
1 策略梯度更新公式
常和博弈的纳什均衡公式如下所示:
现在让我们一步步从常和博弈的纳什均衡公式的一般形式推导出 SPPO 算法的策略梯度更新公式。
使用Freund和Schapire(1999)建立一个迭代框架,该框架可以平均渐进收敛到最优策略。
上面的框架具体后,写为
归一化因子为
对上式两边取对数,左右平移变化得
为了简化计算,使用L2距离公式来近似上面的公式计算,得到下面的公式
到这里,策略更新公式就推导出来了。不过这是针对连续数据的。下面我们来推导该公式以应用到离散数据上,同时进一步简化计算。
可能性估计:可以用有限的样本来近似策略更新公式。对于每个提示,我们选取个回答作为样本,用表示经验分布。有限样本优化问题可以近似为:
具体来说,和。被视作一种期望,可以通过在偏好项的总共个序列中的个新样本来估计。
我们可以用基于人类偏好模型的常数替换来进一步简化计算。具体来说,用替换。假设在任意给定的对中赢的概率是同等机会的,1或者0,当,我们能得到。
至此,SPPO的策略更新公式推导完成。
下面让我们来得到策略梯度更新公式。
改写上面的公式为:
RLHF的策略梯度更新公式为:
对比发现上面的公式本质上是策略梯度更新公式,至此推导完成。
2 损失函数
SPPO的损失函数如下:
公式通过胜者策略得分与输者策略得分的平方和,能更全面地评价模型。我们可以进一步简化公式,我们令胜者对输者的胜率为1,输者对胜者的胜率为0,则损失函数可以简化为:
3 算法流程图
参考文献
《Self-Play Preference Optimization for Language Model Alignment》