显然,clip在优势函数A>0且重采样比例过大时截断了上限,在优势函数A<0且重采样比例过小时也截断了负值的上限。
我以第一种情况解释clip的作用。
首先,所有选择的action都是RL中你希望增大概率的action。
当A>0时,说明这个action本来就很好,不需要我们调,SFT model大概率已经给了它高概率,因此我们甚至容许它概率缩小一点,使得最终重采样比例>1,如果一切如我们所愿,则重采样比例应该<1。然而训练时出现了>1+ε的情况,这就缩得离谱了,说明RL训练出了错误。怎么办呢?clip选择截断到1+ε,这等于是人为地增大了RL训练后的策略选中该action的概率(这就是说它等于KL散度的原因),也等于减小了目标函数R的值,反向凸显了其他采样里导致负A的action,彼消,此就涨,就能让RL后的策略选择正确action的概率回上来。
当A<0时,说明action在原本SFT里不好,SFT肯定给了这个action一个小概率值。可是我们RL喂的数据肯定是我们希望生成的,所以还是希望它尽量能概率大点。假设SFT给action的概率是0.1,你这边RL稍微训练一下就变成0.2了,只增加了0.1,但是倍率上可是2倍。这肯定不合理,不能因为你要求这样生成,就把原本合理的生成概率给破坏了。于是希望你增加,但是别太狠,就给你增加的量上设个限制,最多上涨一点,就有了负A时重采样比例<1-ε的说法,这样就能继续让这个action提供大比例的负A,打压目标函数R,R就会持续地缩小该action的概率。
这时候一定有问题:A>0为什么不设下限?A<0为什么不设上限?不是说好了KL散度吗,怎么只堵一边?另一边不管了?
对,还真就不管了。想一下,对于A>0且重采样比例<1-ε,说明什么?说明目的达成了呀,action的概率真的被提高了。对于A<0且重采样比例>1+ε呢?本来没调RL的时候概率就没多少(只要SFT没毛病,肯定是这样),RL后概率就算再小能小到哪去,真训不大就算了,不纠结那个,不如大过头了有危害。