GPT3.5的PPO目标函数怎么来的:From PPO to PPO-ptx

2024-06-17 21:12
文章标签 函数 怎么 目标 ppo gpt3.5 ptx

本文主要是介绍GPT3.5的PPO目标函数怎么来的:From PPO to PPO-ptx,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

给定当前优化的大模型 π \pi π,以及SFT模型 π S F T \pi_{SFT} πSFT

原始优化目标为: max ⁡ E ( s , a ) ∼ R L [ π ( s , a ) π S F T ( s , a ) A π S F T ( s , a ) ] \max E_{(s,a)\sim RL}[\frac{\pi(s,a)}{\pi_{SFT}(s,a)}A^{\pi_{SFT}}(s,a)] maxE(s,a)RL[πSFT(s,a)π(s,a)AπSFT(s,a)]

假设型 π \pi π,以及SFT模型 π S F T \pi_{SFT} πSFT的KL散度很小即 π ( s , a ) π S F T ( s , a ) = 1 \frac{\pi(s,a)}{\pi_{SFT}(s,a)}=1 πSFT(s,a)π(s,a)=1

给定奖励模型 r ( s , a ) ∈ [ 0 , 1 ] r(s,a)\in [0,1] r(s,a)[0,1],

假设整个事件的时间范围就1步所以 Q ( s , a ) = R ( s , a ) = r ( s , a ) Q(s,a)=R(s,a)=r(s,a) Q(s,a)=R(s,a)=r(s,a)

可以得到:

max ⁡ E ( s , a ) ∼ R L [ π ( s , a ) π S F T ( a ∣ s ) A π S F T ( a ∣ s ) ] = max ⁡ E ( s , a ) ∼ R L [ π ( a ∣ s ) π S F T ( a ∣ s ) ( Q π S F T ( s , a ) − V π S F T ( s ) ) ] = max ⁡ E ( s , a ) ∼ R L [ π ( a ∣ s ) π S F T ( a ∣ s ) ( r ( s , a ) − V π S F T ( s ) ) ] = max ⁡ E ( s , a ) ∼ R L [ r ( s , a ) − π ( a ∣ s ) π S F T ( a ∣ s ) V π S F T ( s ) ] = max ⁡ E ( s , a ) ∼ R L [ r ( s , a ) − π ( a ∣ s ) π S F T ( a ∣ s ) ∫ a ∈ [ 0 , 1 ] Q π S F T ( s , a ) ] = max ⁡ E ( s , a ) ∼ R L [ r ( s , a ) − π ( a ∣ s ) π S F T ( a ∣ s ) ∫ a ∈ [ 0 , 1 ] r ( s , a ) ] = max ⁡ E ( s , a ) ∼ R L [ r ( s , a ) − π ( a ∣ s ) π S F T ( a ∣ s ) ] \max E_{(s,a)\sim RL}[\frac{\pi(s,a)}{\pi_{SFT}(a|s)}A^{\pi_{SFT}}(a|s)] \\=\max E_{(s,a)\sim RL}[\frac{\pi(a|s)}{\pi_{SFT}(a|s)}(Q^{\pi_{SFT}}(s,a)-V^{\pi_{SFT}}(s))]\\=\max E_{(s,a)\sim RL}[\frac{\pi(a|s)}{\pi_{SFT}(a|s)}(r(s,a)-V^{\pi_{SFT}}(s))]\\=\max E_{(s,a)\sim RL}[r(s,a)-\frac{\pi(a|s)}{\pi_{SFT}(a|s)} V^{\pi_{SFT}}(s)]\\=\max E_{(s,a)\sim RL}[r(s,a)-\frac{\pi(a|s)}{\pi_{SFT}(a|s)}\int_{a\in[0,1]} Q^{\pi_{SFT}}(s,a)]\\=\max E_{(s,a)\sim RL}[r(s,a)-\frac{\pi(a|s)}{\pi_{SFT}(a|s)}\int_{a\in[0,1]} r(s,a)]\\=\max E_{(s,a)\sim RL}[r(s,a)-\frac{\pi(a|s)}{\pi_{SFT}(a|s)}] maxE(s,a)RL[πSFT(as)π(s,a)AπSFT(as)]=maxE(s,a)RL[πSFT(as)π(as)(QπSFT(s,a)VπSFT(s))]=maxE(s,a)RL[πSFT(as)π(as)(r(s,a)VπSFT(s))]=maxE(s,a)RL[r(s,a)πSFT(as)π(as)VπSFT(s)]=maxE(s,a)RL[r(s,a)πSFT(as)π(as)a[0,1]QπSFT(s,a)]=maxE(s,a)RL[r(s,a)πSFT(as)π(as)a[0,1]r(s,a)]=maxE(s,a)RL[r(s,a)πSFT(as)π(as)]
此外为了约束模型 π \pi π π S F T \pi_{SFT} πSFT之间不要差得太远还需要使用SFT的数据训练 π \pi π,等价于 max ⁡ E ( s , a ) ∼ π S F T [ π ( a ∣ s ) ] \max E_{(s,a)\sim \pi_{SFT}}[\pi(a|s)] maxE(s,a)πSFT[π(as)]。因此优化目标就变成了:
max ⁡ E ( s , a ) ∼ R L [ r ( s , a ) − π ( a ∣ s ) π S F T ( a ∣ s ) ] + E ( s , a ) ∼ π S F T [ π ( a ∣ s ) ] \max E_{(s,a)\sim RL}[r(s,a)-\frac{\pi(a|s)}{\pi_{SFT}(a|s)}]+E_{(s,a)\sim \pi_{SFT}}[\pi(a|s)] maxE(s,a)RL[r(s,a)πSFT(as)π(as)]+E(s,a)πSFT[π(as)]
这一项和GPT3.5的优化目标基本一致:
在这里插入图片描述

这篇关于GPT3.5的PPO目标函数怎么来的:From PPO to PPO-ptx的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1070499

相关文章

qt5cored.dll报错怎么解决? 电脑qt5cored.dll文件丢失修复技巧

《qt5cored.dll报错怎么解决?电脑qt5cored.dll文件丢失修复技巧》在进行软件安装或运行程序时,有时会遇到由于找不到qt5core.dll,无法继续执行代码,这个问题可能是由于该文... 遇到qt5cored.dll文件错误时,可能会导致基于 Qt 开发的应用程序无法正常运行或启动。这种错

电脑提示xlstat4.dll丢失怎么修复? xlstat4.dll文件丢失处理办法

《电脑提示xlstat4.dll丢失怎么修复?xlstat4.dll文件丢失处理办法》长时间使用电脑,大家多少都会遇到类似dll文件丢失的情况,不过,解决这一问题其实并不复杂,下面我们就来看看xls... 在Windows操作系统中,xlstat4.dll是一个重要的动态链接库文件,通常用于支持各种应用程序

Python中help()和dir()函数的使用

《Python中help()和dir()函数的使用》我们经常需要查看某个对象(如模块、类、函数等)的属性和方法,Python提供了两个内置函数help()和dir(),它们可以帮助我们快速了解代... 目录1. 引言2. help() 函数2.1 作用2.2 使用方法2.3 示例(1) 查看内置函数的帮助(

C++ 函数 strftime 和时间格式示例详解

《C++函数strftime和时间格式示例详解》strftime是C/C++标准库中用于格式化日期和时间的函数,定义在ctime头文件中,它将tm结构体中的时间信息转换为指定格式的字符串,是处理... 目录C++ 函数 strftipythonme 详解一、函数原型二、功能描述三、格式字符串说明四、返回值五

Python中bisect_left 函数实现高效插入与有序列表管理

《Python中bisect_left函数实现高效插入与有序列表管理》Python的bisect_left函数通过二分查找高效定位有序列表插入位置,与bisect_right的区别在于处理重复元素时... 目录一、bisect_left 基本介绍1.1 函数定义1.2 核心功能二、bisect_left 与

java中BigDecimal里面的subtract函数介绍及实现方法

《java中BigDecimal里面的subtract函数介绍及实现方法》在Java中实现减法操作需要根据数据类型选择不同方法,主要分为数值型减法和字符串减法两种场景,本文给大家介绍java中BigD... 目录Java中BigDecimal里面的subtract函数的意思?一、数值型减法(高精度计算)1.

C++/类与对象/默认成员函数@构造函数的用法

《C++/类与对象/默认成员函数@构造函数的用法》:本文主要介绍C++/类与对象/默认成员函数@构造函数的用法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录名词概念默认成员函数构造函数概念函数特征显示构造函数隐式构造函数总结名词概念默认构造函数:不用传参就可以

C++类和对象之默认成员函数的使用解读

《C++类和对象之默认成员函数的使用解读》:本文主要介绍C++类和对象之默认成员函数的使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、默认成员函数有哪些二、各默认成员函数详解默认构造函数析构函数拷贝构造函数拷贝赋值运算符三、默认成员函数的注意事项总结一

Python函数返回多个值的多种方法小结

《Python函数返回多个值的多种方法小结》在Python中,函数通常用于封装一段代码,使其可以重复调用,有时,我们希望一个函数能够返回多个值,Python提供了几种不同的方法来实现这一点,需要的朋友... 目录一、使用元组(Tuple):二、使用列表(list)三、使用字典(Dictionary)四、 使

Mac备忘录怎么导出/备份和云同步? Mac备忘录使用技巧

《Mac备忘录怎么导出/备份和云同步?Mac备忘录使用技巧》备忘录作为iOS里简单而又不可或缺的一个系统应用,上手容易,可以满足我们日常生活中各种记录的需求,今天我们就来看看Mac备忘录的导出、... 「备忘录」是 MAC 上的一款常用应用,它可以帮助我们捕捉灵感、记录待办事项或保存重要信息。为了便于在不同