大模型的拒绝采样和RLHF,以及DPO越来越像SFT了,感觉SimPO就是SFT

SFT在理论上是对当前token的loss回传的学习,理论上,对单个token学习的SFT不具备任何远见,即它的loss不与未来token有关,因此它被认为是贪心的,而贪心算法很致命,特别是在大模型推理时,局部token的贪心会让整个句子的生成概率大大降低。一个简单的解决办法是beam search,也就是我一次多贪心几个分支。这仍然无法彻底解决局部的贪心。
因此有拒绝采样reject sampling这个东西,从头到尾地多次采样K个句子,然后看谁概率高。看起来和正统reject sampling的解释差了十万八千里,但它就是这样。
拒绝采样在训练里也能用,基本是用来获得高质量数据or多样性数据。对于高质量数据,所谓的拒绝采样就是SFT后的模型一次吐出K个句子,然后用reward model评,拿其中最好的来做第二轮SFT,之后再去做PPO,这是llama2的做法。
对于生成多样性数据,使用拒绝采样就更贴近原版定义了。举个例子,我有一个句子 the cat sat on the chair,我上哪儿能丰富一些类似的句子呢?我会拿一个只有3个token输入的model来,我就把它的输出当作拒绝采样里的所谓“简单分布”。可复杂分布是什么呢?其实就是现实文本的分布,这个分布我们希望采样它,又不知道它长什么样。问题是原版拒绝采样里还有个拒绝的过程,是要知道复杂分布里某句子的概率的,这怎么办?我们退而求其次,只要能有所谓的“拒绝”规则就行,例如生成的新句子符合语法,或者reward model评分后分数很高,都是拒绝规则。

总之,大模型里用的拒绝采样以及把“拒绝”规则变得面目全非了,一点数学的美感都没了,抛掉这个名字,按llama2里的描述,那不就是从一堆SFT后的推理数据里找人类评分高的再训一遍嘛,相比于instructGPT里写的,不就是这K个数据不用来训练PPO,而去训练SFT嘛。。。 神神叨叨的。。。

————————————————————

最前面提了一嘴SFT“理论上”是贪心。实际上,看loss也能看出来,训的时候整个训练数据的token loss被加和平均了。请问此时,对于某个位置i上loss小而其他位置loss大这种情况,i会因为自己表现很好,就不训自己了吗?所以这个加和平均是掺了“过去”和“未来”的影响了,而“未来”影响“现在”正是RL的目的,未来表现不好?那我就要给你个大loss,即使你自己表现很好。
但是这里面还掺了“过去”,我不喜欢。

看DPO的话,挖掉负例loss,它的目标和SFT也没啥区别,都是把正例的概率往高了训,只不过此时不是绝对的概率来算,而是相对的概率变化。后面的SimPO直接把ref model strategy干没了,直接就是尼玛以前那些对比loss了,还是一整句的概率往上搂,训得稳就怪了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值