当前位置: 首页 > news >正文

【LLM】一文学会SPPO

博客昵称:沈小农学编程

作者简介:一名在读硕士,定期更新相关算法面试题,欢迎关注小弟!

PS:哈喽!各位CSDN的uu们,我是你的小弟沈小农,希望我的文章能帮助到你。欢迎大家在评论区唠嗑指正,觉得好的话别忘了一键三连哦!😘

SPPO是强化学习的一种,据猜测今年9月OpenAI最新的大模型O1使用该方法进行微调。SPPO,英文全称Self-Play Preference Optimization,中文为自博弈偏好优化。其受到了纳什均衡的冯·诺依曼两人常和博弈公式以及RLHF+PPO框架的启发,而设计出来。下面本文将讲解SPPO的损失函数、策略梯度更新以及算法框架。

目录

1 策略梯度更新公式

2 损失函数

3 算法流程图

参考文献


1 策略梯度更新公式

常和博弈的纳什均衡公式如下所示:


eq?%28%5Cpi%20%5E*%2C%5Cpi%20%5E*%29%3D%5Carg%5Cmax_%5Cpi%5Cmin_%7B%5Cpi%27%7D%5Cmathbb%20E_%7Bx%5Csim%20X%7D%5B%5Cmathbb%20E_%7By%5Csim%20%5Cpi%28%B7%7Cx%29%2Cy%27%5Csim%20%5Cpi%27%28%B7%7Cx%29%7D%5B%5Cmathbb%20P%28y%3Ey%27%7Cx%29%5D%5D.
 

现在让我们一步步从常和博弈的纳什均衡公式的一般形式推导出 SPPO 算法的策略梯度更新公式。

使用Freund和Schapire(1999)建立一个迭代框架,该框架可以平均渐进收敛到最优策略。


eq?%5Cpi_%7Bt+1%7D%28y%7Cx%29%5Cpropto%5Cpi_t%28y%7Cx%29%5Cexp%28%5Ceta%5Cmathbb%20P%28y%3E%5Cpi_t%7Cx%29%29%2C%5C%20for%5C%20t%3D1%2C2%2C%5Ccdots
 

上面的框架具体后,写为


eq?%5Cpi_%7Bt+1%7D%28y%7Cx%29%3D%5Cfrac%7B%5Cpi_t%28y%7Cx%29%5Cexp%28%5Ceta%5Cmathbb%20P%28y%3E%5Cpi_t%7Cx%29%29%7D%7BZ_%7B%5Cpi_t%7D%28x%29%7D
 

归一化因子为


eq?Z_%7B%5Cpi_t%7D%28x%29%3D%5Csum_y%5Cpi_t%28y%7Cx%29%5Cexp%28%5Ceta%5Cmathbb%20P%28y%3E%5Cpi_t%7Cx%29%29
 

对上式两边取对数,左右平移变化得


eq?%5Clog%28%5Cfrac%7B%5Cpi_%7Bt+1%7D%28y%7Cx%29%7D%7B%5Cpi_t%28y%7Cx%29%7D%29%3D%5Ceta%B7%5Cmathbb%20P%28y%3E%5Cpi_t%7Cx%29-%5Clog%20Z_%7B%5Cpi_t%7D%28x%29.
 

为了简化计算,使用L2距离公式来近似上面的公式计算,得到下面的公式


eq?%5Cpi_%7Bt+1%7D%3D%5Carg%5Cmin_%5Cpi%5Cmathbb%20E_%7Bx%5Csim%20X%2Cy%5Csim%5Cpi_t%28%B7%7Cx%29%7D%28%5Clog%28%5Cfrac%7B%5Cpi%28y%7Cx%29%7D%7B%5Cpi_t%28y%7Cx%29%7D%29-%28%5Ceta%5Cmathbb%20P%28y%3E%5Cpi_t%7Cx%29-%5Clog%20Z_%7B%5Cpi_%7B%5Ctheta_t%7D%7D%28x%29%29%29%5E2.
 

到这里,策略更新公式就推导出来了。不过这是针对连续数据的。下面我们来推导该公式以应用到离散数据上,同时进一步简化计算。

可能性估计:可以用有限的样本来近似策略更新公式。对于每个提示eq?x,我们选取eq?K个回答eq?y_1%2Cy_2%2C%5Ccdots%2Cy_k%5Csim%20%5Cpi_t%28%B7%7Cx%29作为样本,用eq?%5Chat%20%5Cpi_t%5EK表示经验分布。有限样本优化问题可以近似为:


eq?%5Cpi_%7Bt+1%7D%3D%5Carg%5Cmin_%5Cpi%5Cmathbb%20E_%7Bx%5Csim%20X%2Cy%5Csim%20%5Cpi_t%28%B7%7Cx%29%7D%28%5Clog%20%28%5Cfrac%7B%5Cpi%28y%7Cx%29%7D%7B%5Cpi_t%28y%7Cx%29%7D%29-%28%5Ceta%5Cmathbb%20P%28y%3E%5Chat%20%5Cpi_t%5EK%7CX%29-%5Clog%20Z_%7B%5Chat%20%5Cpi_t%5EK%28x%29%7D%29%29%5E2.
 

具体来说,Keq?Z_%7B%5Chat%20%5Cpi_t%5EK%28x%29%7D%3D%5Cmathbb%20E_%7By%5Csim%20%5Cpi_t%28%B7%7Cx%29%7D%5B%5Cexp%28%5Ceta%5Cmathbb%20P%28y%3E%5Chat%20%5Cpi_t%5EK%7Cx%29%29%5Deq?Z_%7B%5Chat%20%5Cpi_t%5EK%7D%28x%29被视作一种期望,可以通过在偏好项eq?%5Cmathbb%20P的总共eq?O%28KB%29个序列中的eq?B个新样本来估计。

我们可以用基于人类偏好模型的常数替换eq?%5Clog%20Z_%7B%5Chat%20%5Cpi_t%5EK%7D%28x%29来进一步简化计算。具体来说,用2替换eq?%5Clog%20Z_%7B%5Chat%20%5Cpi_t%5EK%7D%28x%29。假设在任意给定的对中赢的概率是同等机会的,1或者0,当eq?K%5Cto%20%5Cinfty,我们能得到2%7D


eq?%5Cpi_%7Bt+1%7D%3D%5Carg%5Cmin_%5Cpi%5Cmathbb%20E_%7Bx%5Csim%20X%2Cy%5Csim%20%5Cpi_t%28%B7%7Cx%29%7D%28%5Clog%28%5Cfrac%7B%5Cpi%28y%7Cx%29%7D%7B%5Cpi_t%28y%7Cx%29%7D%29-%5Ceta%28%5Cmathbb%20P%28y%3E%5Chat%20%5Cpi_t%5EK%7Cx%29-%5Cfrac%7B1%7D%7B2%7D%29%29%5E2.
 

至此,SPPO的策略更新公式推导完成。

下面让我们来得到策略梯度更新公式

改写上面的公式为:


eq?%5Ctheta_%7Bt+1%7D%20%3D%20%5Carg%5Cmin_%5Ctheta%5Cmathbb%20E_%7Bx%20%5Csim%20X%2Cy%20%5Csim%20%5Cpi_%7B%5Ctheta_t%7D%28%B7%7Cx%29%7D%5B%28P%28y%3E%5Cpi_%7B%5Ctheta_t%7D%7Cx%29-%5Ceta%5E%7B-1%7D%5Clog%20%28%5Cfrac%7B%5Cpi_%5Ctheta%28y%7Cx%29%7D%7B%5Cpi_%7B%5Ctheta_t%7D%28y%7Cx%29%7D%29-%5Ceta%5E%7B-1%7D%5Clog%20Z_%7B%5Cpi_%7B%5Ctheta_t%7D%28x%29%7D%29%5E2%5D.
 

RLHF的策略梯度更新公式为:


eq?%5Cnabla%20J%28%5Ctheta%29%3D%5Cmathbb%20E_%7Bx%5Csim%20X%2Cy%5Csim%20%5Cpi_%5Ctheta%28%B7%7Cx%29%7D%5B%28r%28y%3Bx%29-%5Ceta%5E%7B-1%7D%5Clog%5Cfrac%7B%5Cpi_%5Ctheta%28y%7Cx%29%7D%7B%5Cpi_%7Bref%7D%28y%7Cx%29%7D-b%28x%29%29%5Cnabla%5Clog%5Cpi_%5Ctheta%28y%7Cx%29%5D%20%5C%5C%20%3D%5Ceta%5Cmathbb%20E_%7Bx%5Csim%20X%2Cy%5Csim%20%5Cpi_%5Ctheta%28%B7%7Cx%29%7D%5B-%5Cnabla%28r%28y%3Bx%29-%5Ceta%5E%7B-1%7D%5Clog%5Cfrac%7B%5Cpi_%5Ctheta%28y%7Cx%29%7D%7B%5Cpi_%7Bref%7D%28y%7Cx%29%7D-b%28x%29%29%5E2%5D
 

对比发现上面的公式本质上是策略梯度更新公式,至此推导完成。

2 损失函数

SPPO的损失函数如下:


eq?%5Cmathcal%20L_%7BSPPO%7D%28x%2Cy_w%2Cy_l%3B%5Ctheta%3B%5Cpi_%7Bref%7D%29%3A%3D%28%5Clog%28%5Clog%20%5Cfrac%7B%5Cpi_%5Ctheta%28y_w%7Cx%29%7D%7B%5Cpi_%7Bref%7D%28y_w%7Cx%29%7D%29-%5Ceta%5E%7B-1%7D%28P%28y_w%3Ey_l%7Cx%29-%5Cfrac%7B1%7D%7B2%7D%29%29%5E2

公式通过胜者策略得分与输者策略得分的平方和,能更全面地评价模型。我们可以进一步简化公式,我们令胜者对输者的胜率为1,输者对胜者的胜率为0,则损失函数可以简化为:


eq?%5Cmathcal%20L_%7BSPPO%7D%28x%2Cy_w%2Cy_l%3B%5Ctheta%3B%5Cpi_%7Bref%7D%29%3A%3D%28%5Clog%28%5Clog%20%5Cfrac%7B%5Cpi_%5Ctheta%28y_w%7Cx%29%7D%7B%5Cpi_%7Bref%7D%28y_w%7Cx%29%7D%29-%5Cfrac%7B1%7D%7B2%5Ceta%7D%29%5E2%20%5C%5C%20+%28%5Clog%28%5Clog%20%5Cfrac%7B%5Cpi_%5Ctheta%28y_l%7Cx%29%7D%7B%5Cpi_%7Bref%7D%28y_l%7Cx%29%7D%29+%5Cfrac%7B1%7D%7B2%5Ceta%7D%29%5E2
 

3 算法流程图

d255595dc2944369af290dc0b20c4e92.jpeg

参考文献

《Self-Play Preference Optimization for Language Model Alignment》

相关文章:

【LLM】一文学会SPPO

博客昵称:沈小农学编程 作者简介:一名在读硕士,定期更新相关算法面试题,欢迎关注小弟! PS:哈喽!各位CSDN的uu们,我是你的小弟沈小农,希望我的文章能帮助到你。欢迎大家在…...

如何通过ChatGPT提高自己的编程水平

在编程学习的过程中,开发者往往会遇到各种各样的技术难题和学习瓶颈。传统的学习方法依赖书籍、教程、视频等,但随着技术的不断发展,AI助手的崛起为编程学习带来了全新的机遇。ChatGPT,作为一种强大的自然语言处理工具&#xff0c…...

NVR管理平台EasyNVR多品牌NVR管理工具的流媒体视频融合与汇聚管理方案

随着信息技术的飞速发展,视频监控已经成为现代社会安全管理和业务运营不可或缺的一部分。无论是智慧城市、智能交通、还是大型企业、校园安防,视频监控系统的应用都日益广泛。NVR管理平台EasyNVR,作为功能强大的流媒体服务器软件,…...

python之使用django框架开发web项目

本问将对django框架在python的web项目中的使用进行介绍,有不对之处,烦请指正。 首先使用创建一个django工程(本示例中使用pycharm2024+python3.12),名称和项目保存路径根据自己的需要自行修改,新手直接默认本机环境就好(关于conda将会另开一篇进行讲解。),最后点击cre…...

ChatGPT 桌面版发布了,如何安装?

本章教程教大家如何进行安装。 一、下载安装包 官网地址地址:https://openai.com/chatgpt/desktop/ 支持Windows和MacOS操作系统 二、安装步骤 Windows用户下载之后,会有一个exe安装包,点击运行安装即可。 注意事项,如果Windows操…...

ubuntu 配置 多个 git 客户端 账户

Git配置两个或多个账户 https://blog.csdn.net/mainking2003/article/details/134711865 git 提交 不用输入用户名、密码的方法(GIT免密提交) https://blog.csdn.net/wowocpp/article/details/125797263 git config 用法 https://blog.csdn.net/blueb…...

React Native的界面与交互

React Native (RN) 是一个由 Facebook 开发的开源框架,用于构建跨平台的移动应用程序。它允许开发者使用 JavaScript 和 React 来创建原生 iOS 和 Android 应用。RN 的出现极大地简化了移动应用的开发过程,使得开发者可以更快速、更高效地构建高质量的应…...

autogen+ollama+litellm实现本地部署多代理智能体

autogen 是一个专门为大语言模型 (LLMs) 驱动的自治代理 (autonomous agents) 设计的 Python 库,由 Microsoft 开发和维护。它通过高度模块化和可扩展的架构,支持用户快速构建和运行多代理系统,这些代理可以在没有明确人类干预的情况下协作完成复杂任务。AutoGen 支持以最少…...

InstantStyle容器构建指南

一、介绍 InstantStyle 是一个由小红书的 InstantX 团队开发并推出的图像风格迁移框架,它专注于解决图像生成中的风格化问题,旨在生成与参考图像风格一致的图像。以下是关于 InstantStyle 的详细介绍: 1.技术特点 风格与内容的有效分离 &a…...

百度主动推送可以提升抓取,它能提升索引量吗?

站长在建站SEO的时候,需要用到百度站长平台(资源平台)的工具,在站长工具中【普通收录】-【资源提交】-【API提交】这个功能,对网站的抓取进行一个提交。 这里估计很多站长就有疑问,如果我主动推送&#xf…...

A045-基于spring boot的个人博客系统的设计与实现

🙊作者简介:在校研究生,拥有计算机专业的研究生开发团队,分享技术代码帮助学生学习,独立完成自己的网站项目。 代码可以查看文章末尾⬇️联系方式获取,记得注明来意哦~🌹 赠送计算机毕业设计600…...

JavaEE 【知识改变命运】02 多线程(1)

文章目录 线程是什么?1.1概念1.1.1 线程是什么?1.1.2 为什么要有线程1.1.3 进程和线程的区别1.1.4 思考:执行一个任务,是不是创建的线程或者越多是不是越好?(比如吃包子比赛)1.1.5 ) Java 的线程…...

Pytorch使用手册-Transforms(专题四)

Transforms(变换) 在 PyTorch 数据处理中的重要性和使用方法,特别是如何通过 torchvision.transforms 模块对数据进行预处理和变换,使其适合用于训练机器学习模型。以下是具体的内容解读: 什么是 Transforms? 数据通常在收集后并非直接适合用于训练机器学习模型,需要通…...

【Android】ARouter的使用及源码解析

文章目录 简介介绍作用 原理关系 使用添加依赖和配置初始化SDK添加注解在目标界面跳转界面不带参跳转界面含参处理返回结果 源码基本流程getInstance()build()navigation()_navigation()Warehouse ARouter初始化init帮助类根帮助类组帮助类 completion 总结 简介 介绍 ARouter…...

ValueError: bbox_params must be specified for bbox transformations

错误 ValueError: bbox_params must be specified for bbox transformations 是因为使用了需要处理边界框(bboxes)的增强操作,但在 albumentations.Compose 中没有正确设置bbox_params 参数。 bbox_params 是用来指定如何处理边界框的配置。…...

挂壁式空气净化器哪个品牌的质量好?排名top3优秀产品测评分析

随着挂壁式空气净化器市场的不断扩大,各类品牌与型号琳琅满目。但遗憾的是,一些跨界网红品牌过于追求短期效益,导致产品在净化效果与去除异味方面表现平平,使用体验不佳,甚至可能带来二次污染风险,影响人体…...

钉钉数据如何高效集成到金蝶云星空系统

钉钉数据集成到金蝶云星空的技术案例分享 在企业日常运营中,办公用品采购流程的高效管理至关重要。为了实现这一目标,我们采用了轻易云数据集成平台,将钉钉中的采购申请单数据无缝对接到金蝶云星空系统中。本次案例将详细解析【办公用品采购…...

躺平成长-腾讯云数据库(又消失了一次)

开源竞争: 当你无法彻底掌握技术的时候,你就开源这个技术,形成更多的技术依赖,你会说 这不就是在砸罐子吗?一个行业里面总会有人砸罐子的,你不如先砸罐子,还能听个响声。 数据库的里面清洁的数据…...

初学 flutter 问题记录

windows搭建flutter运行环境 一、运行 flutter doctor遇到的问题 Xcmdline-tools component is missingRun path/to/sdkmanager --install "cmdline-tools;latest"See https://developer.android.com/studio/command-line for more details.1)cmdline-to…...

Hadoop的MapReduce详解

文章目录 Hadoop的MapReduce详解一、引言二、MapReduce的核心概念1、Map阶段1.1、Map函数的实现 2、Reduce阶段2.1、Reduce函数的实现 三、MapReduce的执行流程四、MapReduce的使用实例Word Count示例1. Mapper类2. Reducer类3. 执行Word Count 五、总结 Hadoop的MapReduce详解…...

DeepSeek-R1补全能力封测倒计时(仅剩72小时开放API灰度权限):这份内部测试SOP已被3家头部科技公司紧急采购

更多请点击: https://intelliparadigm.com 第一章:DeepSeek-R1代码补全能力封测全景概览 DeepSeek-R1 是深度求索(DeepSeek)推出的高性能开源推理模型,在代码补全场景中展现出显著的上下文理解力与多语言泛化能力。本…...

基于ATmega2560与ISD1700的智能语音时钟:硬件选型、软件架构与避坑指南

1. 项目概述与核心价值去年折腾那个用ATMega328驱动三块显示屏的时钟时,我主要精力都花在了如何在320x240的TFT屏幕上把时间、日期和图标画得又准又好看上。项目在《Elektor》杂志上发表后,一位热心的读者给我提了个新想法:能不能做个会“说话…...

1901-2022年中国气温变化分析实战:用这份1km栅格数据我们能发现什么?

1901-2022年中国气温变化分析实战:如何从1km栅格数据中挖掘气候演变规律当一份覆盖122年、分辨率精确到1公里的气温栅格数据摆在面前时,我们看到的不仅是数字矩阵,更是一部写在经纬度坐标里的气候变迁史诗。这份由逐月数据聚合生成的逐年气温…...

神经网络与深度学习 第3周课程总结

深度学习视觉应用课程总结 一、常用计算机视觉数据集数据集名称发布方/年份规模图像规格类别数主要用途核心特点MNIST美国国家标准与技术研究院60k训练10k测试2828灰度图10类(0-9手写数字)入门级图像分类最经典的手写数字识别基准数据集Fashion-MNISTZalando(2017)60k训练10k测…...

Python UiAutomation实战:从网页数据抓取到桌面应用,一个库打通数据采集全链路

Python UiAutomation实战:打通数据采集全链路的智能解决方案 在数据驱动的商业环境中,企业常常面临跨平台数据采集的挑战——财务系统里的交易记录需要与网站后台的报表进行交叉分析,销售数据要从桌面软件导出后上传到云端处理系统。传统的人…...

LizzieYzy:你的智能围棋教练,让AI分析变得简单有趣 [特殊字符]

LizzieYzy:你的智能围棋教练,让AI分析变得简单有趣 🎯 【免费下载链接】lizzieyzy LizzieYzy - GUI for Game of Go 项目地址: https://gitcode.com/gh_mirrors/li/lizzieyzy 还在为复盘找不到关键点而烦恼吗?想提升棋力却…...

PCL 法向量夹角剔除错误匹配点对【2026最新版】

目录 一、 算法简介 1、主要函数 2、参考文献 二、 代码实现 三、 结果展示 四、 参考链接 博客长期更新,本文最新更新时间为:2026年5月24日。代码在PCL1.15.1中测试通过 一、 算法简介 在三维点云配准中,对应点(correspondence)的准确性直接决定了配准算法的精度和鲁棒性…...

如何快速解锁中兴光猫权限:zteOnu工具完整使用指南

如何快速解锁中兴光猫权限:zteOnu工具完整使用指南 【免费下载链接】zteOnu A tool that can open ZTE onu device factory mode 项目地址: https://gitcode.com/gh_mirrors/zt/zteOnu 中兴光猫作为家庭网络的核心设备,其强大的硬件性能常常被默认…...

什么情况下会核销贷款

贷款核销的核心前提是:贷款被认定为 “损失类” 且经 “穷尽追偿” 仍无法收回,银行按监管与会计规则从账面冲销,但债权不消灭、仍可追偿。一、核心认定条件(满足其一即可)破产 / 注销 / 吊销:借款人和担保…...

DeepSeek重复代码识别失效了?5个被90%团队忽略的AST解析盲区及修复清单

更多请点击: https://codechina.net 第一章:DeepSeek代码重复检测失效的真相与影响 DeepSeek-R1 模型在代码理解任务中表现出色,但其内置的代码重复检测机制在特定场景下存在系统性失效。根本原因在于模型对语义等价但语法结构差异显著的代…...