RuleR: Improving LLM Controllability by Rule-based Data Recycling
- 前言
 - Abstract
 - Motivation
 - Solution
 - Method
 - Experiments
 - Conclusion
 
前言
一篇关于提升LLMs输出可控性的短文,对SFT数据以规则的方式进行增强,从而提升SFT数据的质量,进而间接帮助提升LLM的可控性。这种基于规则的方式确实可以去除人力和额外的LLM资源的开销,但是在某种程度上可能不能真正泛化到具体的数据上。| Paper | https://arxiv.org/abs/2406.15938 | 
|---|---|
| Code | https://github.com/MingLiiii/RuleR | 
Abstract
LLMs缺乏稳定可控的输出,这对产品表现和用户体验不利。然而现有的用于提升LLMs可控性的SFT数据集经常依赖人类经验或者大模型,需要付出额外的成本。相比于从头构建新数据集,RuleR对现有的数据集进行重新利用,对其输出注入基于规则的编辑,并将基于规则的指令append到原始的指令中。实验表明RuleR可以高效提升LLM的可控性,同时不降低模型通用性能。
Motivation
当前如何最大化利用LLMs的能力是一个重要问题,其关键在于让LLMs的输出遵循用户的要求。但是如果对输出没有约束,生成的结果很难有实际效用。
 
 然而现有的方法通过构建SFT数据集,但是这种方法只能关注到通用的指令,忽略了用户特定的约束。一个可行的解决方法是通过模型或者人类改写指令,但成本高。
 能不能通过重新利用现有SFT数据集,在不采用人力和模型的情况下,为其赋予不同类型的约束,从而进行可控微调?
Solution
本文提出Rule-based Data Recycling (RuleR),可以自动化编辑现有的SFT数据,用于提升LLM的可控性。其核心是利用各种预定义的约束规则来代替人力和模型。预定义的规则cover广泛的约束,从high-level到lower-level。对于每个规则,包括:
- 一组约束模板。
 - 交替编辑指令和Response以以使他们align。
 
上图的下面部分是一个例子。
Method
在没有人类或者LLM引导的情况下,直接添加任意约束到原始的指令中是不合适的。为此,本文提出只添加和原始数据吻合的约束。具体来说,作者提出基于规则的RuleR方法来增强LLM的可控性,其中用于重新制定的规则和约束由原始数据来确定,确保指令和响应之间的一致性。下表是完整的规则列表:
 
 在方法实施时,作者将每个预定义的规则实例化为一个元组:
  
     
      
       
       
         ( 
        
        
        
          S 
         
        
          k 
         
        
       
         , 
        
        
        
          f 
         
        
          k 
         
        
       
         , 
        
        
        
          g 
         
        
          k 
         
        
       
         ) 
        
       
      
        (\mathbf{S} _k,f_k,g_k) 
       
      
    (Sk,fk,gk) 
 其中 
     
      
       
        
        
          S 
         
        
          k 
         
        
       
      
        \mathbf{S} _k 
       
      
    Sk表示第k条规则对应的指令模板集, 
     
      
       
        
        
          f 
         
        
          k 
         
        
       
      
        f _k 
       
      
    fk和 
     
      
       
        
        
          g 
         
        
          k 
         
        
       
      
        g_k 
       
      
    gk分别表示重构指令的函数和可选修改response的函数。对于样本 
     
      
       
       
         ( 
        
        
        
          x 
         
        
          i 
         
        
       
         , 
        
        
        
          y 
         
        
          i 
         
        
       
         ) 
        
       
      
        (x_i,y_i) 
       
      
    (xi,yi),增强指令会由如下公式获取:
  
     
      
       
        
        
          x 
         
         
         
           i 
          
         
           , 
          
         
           a 
          
         
           u 
          
         
           g 
          
         
        
       
         = 
        
        
        
          f 
         
        
          k 
         
        
        
        
          ( 
         
         
         
           x 
          
         
           i 
          
         
        
          , 
         
         
         
           y 
          
         
           i 
          
         
        
          , 
         
         
         
           S 
          
         
           k 
          
         
        
          ) 
         
        
       
      
        x_{i, a u g}=f_{k}\left(x_{i}, y_{i}, \mathbf{S}_{k}\right) 
       
      
    xi,aug=fk(xi,yi,Sk)
 具体来说,随机抽取一个规则指令模板,并填充相应的特征,作为对原始指令的附加约束。然后,规则指令与原始指令连接成为增强指令。对于标签y,也可以类似的选择性修改:
  
     
      
       
        
        
          y 
         
         
         
           i 
          
         
           , 
          
         
           a 
          
         
           u 
          
         
           g 
          
         
        
       
         = 
        
        
        
          g 
         
        
          k 
         
        
        
        
          ( 
         
         
         
           x 
          
         
           i 
          
         
        
          , 
         
         
         
           y 
          
         
           i 
          
         
        
          , 
         
         
         
           S 
          
         
           k 
          
         
        
          ) 
         
        
       
      
        y_{i, a u g}=g_{k}\left(x_{i}, y_{i}, \mathbf{S}_{k}\right) 
       
      
    yi,aug=gk(xi,yi,Sk)
 对于某些规则,无需对response进行修改。
Experiments
作者在一系列开源模型和开源SFT数据集上进行实验,实验结果如下:
 
 结果显著,一些数据集上提点能够达到10%。
 下表是消融实验结果。Single Temp意味一个规则使用一个模板,Diverse Temp意味一个规则对应多个模板,Max Rule 表示每个原始数据样本上最多可以采样和利用x个不同规则的设置。结果显示在一个样本中使用太多的规则可能会损害模型的性能。Aug Rate指的是将增强应用于每个样本的概率,可以看到,随着Aug Rate的增加,LLM可控性越好,但是对一般指令的跟踪能力有所下降。IF Eval的变化大,说明方法主要还是和可控性有关。
 
Conclusion
本文提出一个新颖的方法,即基于规则的数据回收方法RuleR,它利用从现有数据派生的约束来增强数据集,并将这些约束纳入训练过程,从而提高LLM的多约束可控性。这种方法为开发 SFT 增强方法以提高 LLM 的可控性提供了一个有前途的方向,为 LLM 更有效的进步铺平了道路。
 这篇工作简单易懂,且效果显著,但是我也有一些额外的想法:
- 方法中提到“we propose to only incorporate constraints that are compatible with the original data sample.”但是注入规则时却是随机抽取一个规则指令模板,我很难将随机采样和“compatible with the original data sample”理解到一起。
 - 基于规则的增强过程在文章中的描述过于泛泛,具体来说, f k f _k fk和 g k g_k gk这两个函数具体是怎么执行的没有详细说明,导致不是很好理解,也许对于这两个函数举出特定的一两个例子会更好。
 - 基于规则的方法真的可以泛化到每一个特定的样本上吗,我不是很能确定。
 - 图一中作者方法部分列举的例子让我感到困惑,Response和New Response内容一样,虽然文中提到remains unchanged,但是这个例子显然不能说明Modification的作用。
 



















