RLHF的改进算法DPO原理
DPO 优点
RLHF需要先利用偏好数据来训练一个RM,然后基于强化学习来最大化奖励,而不能偏离原始模型。DPO通过奖励函数和最优策略之间的映射,受限的奖励最大化问题可以使用单个阶段的策略来实现微调,无需训练RM,数据采样,训练更轻量;
DPO推导
Bradley-Terry模型
借助Bradley-Terry模型是来表达微调的目标函数:
 Bradley-Terry模型是一种用于比较成对对象并确定相对偏好或能力的方法。这种模型特别适用于对成对比较数据进行分析,从而对一组对象进行排序。
 
     
      
       
       
         P 
        
       
         ( 
        
       
         i 
        
       
         > 
        
       
         j 
        
       
         ) 
        
       
         = 
        
        
         
         
           α 
          
         
           i 
          
         
         
          
          
            α 
           
          
            i 
           
          
         
           + 
          
          
          
            α 
           
          
            j 
           
          
         
        
       
      
        P(i>j)=\frac{\alpha_i}{\alpha_i+ \alpha_j} 
       
      
    P(i>j)=αi+αjαi
 将reward r带入到 
     
      
       
       
         P 
        
       
      
        P 
       
      
    P中,得到loss函数:
 
 目标是优化LLM输出的 
     
      
       
        
        
          y 
         
        
          w 
         
        
       
      
        y_w 
       
      
    yw得分尽可能大于 
     
      
       
        
        
          y 
         
        
          l 
         
        
       
      
        y_l 
       
      
    yl的得分。
根据RLHF的优化目标推导出reward的表达式:
RLHF的优化目标:

 
 其中:
 
引入Z(x)将目标函数转换为 π ∗ \pi^* π∗与 π \pi π之间的kl散度最小化:
将第一项分母定义 
     
      
       
        
        
          π 
         
        
          ∗ 
         
        
       
      
        \pi^* 
       
      
    π∗:
 
  
     
      
       
        
        
          π 
         
        
          ∗ 
         
        
       
      
        \pi^* 
       
      
    π∗与 
     
      
       
       
         π 
        
       
      
        \pi 
       
      
    π之间的kl散度最小化:
 
 再根据该式与 
     
      
       
        
        
          π 
         
        
          ∗ 
         
        
       
      
        \pi^* 
       
      
    π∗推导出reward表达式
推导出reward表达式

将reward表达式带入到BT的loss函数中,就可以得到消除reward的loss函数,即DPO loss
这样模型的微调更新就不依赖于reward函数,而是只依赖于偏好数据对
 
IPO算法
IPO提出当偏好数据更优的确定性很大时,控制kl散度强度的参数不起作用,dpo可能会发生过拟合。IPO在DPO的损失函数上添加了一个正则项,从而即使偏好确定性很大时,最优的策略也可以靠近于 
     
      
       
        
        
          π 
         
         
         
           r 
          
         
           e 
          
         
           f 
          
         
        
       
      
        \pi_{ref} 
       
      
    πref,可以不使用early stopping技巧就可以使模型收敛。
 
参考:
- DPO(Direct Preference Optimization)论文
- 算法学习笔记:https://blog.csdn.net/Ever_____/article/details/139304624
- 代码介绍:https://www.cnblogs.com/lemonzhang/p/17910358.html
- dpo改进方法介绍:https://blog.csdn.net/beingstrong/article/details/138973997
- 源码:https://hub.yzuu.cf/huggingface/trl/blob/main/trl/trainer/dpo_trainer.py
