- 文献阅读:The Unreasonable Effectiveness of Easy Training Data for Hard Tasks
- 1. 文章简介
- 2. 方法介绍
- 1. 数据集难易度分析
- 2. 模型训练前后变化
- 3. 实验考察 & 结论
- 1. 实验设计
- 1. 使用数据集
- 2. 使用模型
- 2. 实验结果
- 1. 数据集难度分析
- 2. 在Easy数据集下训练模型在Hard数据集下的表现
- 3. hard data与easy data之间的trade-off
- 4. EasyToHard方法的稳定性
- 1. 实验设计
- 4. 总结 & 思考
- 文献链接:https://arxiv.org/abs/2401.06751
- GitHub链接:https://github.com/allenai/easy-to-hard-generalization
1. 文章简介
这篇文章是今年一月的一个工作,讲的是LLM的finetune方面的内容,具体来说是finetune时候的数据来源问题。
众所周知,模型训练的时候,优质数据非常重要,但是好的优质数据非常难以获得,当前的预训练大模型的路子虽然通过自监督的方法一定程度上缓解了上述问题,但是现在的Instruction Tuning以及RLHF等方法其实还是走回了SFT的路子,还是需要一定的标注数据进行训练。
因此,我们又回到了数据的获取问题上,而且,随着LLM效果变得越来越好,我们令LLM处理的问题难度也越来越高,对应的标注难度也越来越高,不但标注成本更高,标注质量也会有所下降,因为很多问题即使是专业人员也往往无法每次都给出准确的回答。
而文中则是另辟蹊径,选择了另外一条路,即放弃这些高难度的数据,直接使用相对容易获得的简单数据集来对模型进行finetune,然后在实际的hard数据集上进行考察,发现在这种情况下,模型效果也能够获得提升,且效果和真正在hard数据集上进行finetune的模型效果也相差不远。
下面,我们就来看一下文中的具体方法和考察内容。
2. 方法介绍
首先,我们来看一下文中的Easy To Hard Generalization方法。
这个其实并不需要太多的进行展开,因为顾名思义,这个方法的核心就是让模型在同类型任务的简单数据集下进行finetune即可。
文中给出了一个简单的case,即让模型分别在不同年级的数据下进行训练,然后统一在大学测试集下进行考察。
因此,这里与其说要对文中的方法进行说明,其实反而更需要说明以下两个问题:
- 如何来评估数据集的难易度
- 如何来评估训练前后模型的变化
1. 数据集难易度分析
首先,关于数据集的难易度评估,文中主要给出了以下几个判断维度:
- 教育程度/年纪水平
- 专家的评定
- 专业技术要求
- 问题的复杂程度(单词数目)
- 回答的复杂程度(单词数目)
- 回答问题需要的步骤数目
- 对于问题描述的最短长度
2. 模型训练前后变化
而关于模型在训练前后的效果变化程度,文中给出了一个名为Supervision Gap Recovered (SGR)的指标来进行定义,具体来说,就是模型在简单和复杂数据集上训练前后的效果提升差异度。
具体公式如下:
S G R = E a s y − U n s u p e r v i s e d H a r d − U n s u p e r v i s e d \mathop{SGR} = \frac{\mathop{Easy} - \mathop{Unsupervised}}{\mathop{Hard} - \mathop{Unsupervised}} SGR=Hard−UnsupervisedEasy−Unsupervised
3. 实验考察 & 结论
下面,我们来看一下文中给出的具体实验考察和对应的结果。
1. 实验设计
首先,我们来看一下文中的实验设计,主要包括:
- 文中使用的数据集
- 文中使用的模型
1. 使用数据集
文中使用的数据集主要包括以下一些:
- ARC
- MMLU
- StrategyQA
- GSM8K
而关于每一个数据集,文中使用的难易度评判标准则主要为下表所示的内容:
2. 使用模型
然后,关于文中实验所使用的模型,主要是Llama-2 7B, 13B和70B的版本,不过文中提到在Qwen-72B,Mixtral-7x8B等模型上也有实验,结果是一致的,因此文中正文只给出了LLama-2上的实验结果。
而关于模型的训练方法,文中则是使用了以下几种方法:
- ICL
- 数据构造上使用In Context Learning
- Linear Probing
- 训练方法上使用Linear Probing
- QLoRA
- Finetune方式使用QLoRA
2. 实验结果
下面,我们来看一下文中具体的实验结果。
1. 数据集难度分析
首先,关于数据集当中的难易度分析,具体来说的话,就是考察一下不同维度之间得到的难易度结果之间的相关关系。
文中给出的结果如下:
然后发现,结果就比较搞笑,因为发现各个评判标准得到的难易度分类之间相关度很低,也就是说在某些标准下认为的比较难的数据在其他标准下可能就会认为比较简单……
这就很尴尬,也导致文中在后续的时间很尴尬的就只能每次基于某一个维度的分类都做一次实验,使得结果就变得有点繁杂了。
2. 在Easy数据集下训练模型在Hard数据集下的表现
尽管如此,我们还是至少可以单一地根据几个维度确定问题的难易度,然后基于此进行一下实验考察,文中得到的实验结果如下:
可以看到:
- 万幸的是,基于各类难易度分类标准,文中都获得了相近的实验结果,即Easy To Hard方法都是有效的,都可以有效地提升模型的效果表达,且相互之间的差别不大。
3. hard data与easy data之间的trade-off
但是,考虑到hard data和easy data获取成本的不同,这里还考察了一下hard data与easy data之间的trade off,具体来说,包含两个方面:
- 获取成本上面
- 数据的噪声方面
文中得到的结果如下:
-
获取成本上面
假设hard data的获取成本是easy data的两倍,此时有:
-
数据的噪声方面
假设hard data的标注噪声是easy data的两倍,此时有:
可以看到:
- 从成本角度,easy data显然可以更快速地获得一个较好的效果,但是对于大多数的任务而言,随着成本的增加而导致的标注数据总量的增加,hard data训练的模型最终总是会追平并超越easy data训练得到的模型的;
- 但是,从噪声方面,如果标注难度很大,hard data当中的标注准确性并不高的情况下,盲目地增加hard data的量反而会影响模型最终的效果。
4. EasyToHard方法的稳定性
最后,文中还考察了一下Easy To Hard Generalization方法的泛化性,具体包括以下两个角度:
- 不同size下的模型上的效果
- easy和hard数据的gap对结果的影响
得到结果如下:
-
不同size下的模型上的效果
-
easy和hard数据的gap对结果的影响
可以看到:
- 对于不同规模的模型,Easy To Hard Generalization总是成立的;
- 随着easy data和hard data之间的gap的不断增大,其对于模型效果的增益是不断会减弱的,即数据分布差异越大,训练效果越差。
4. 总结 & 思考
综上,我们可以看到,本质上来说,这篇文章算是一个另类的数据增强的方法,本质上想要处理的问题还是如何获得足量监督数据的问题。
不同于其他比如说反向翻译等数据增强的方法,这里算是直接给出一个平替的思路:
- 高成本的标注我们搞不起,那么我们就在一些不那么难的数据上做一些更加便宜的标注,也能够使得模型获得足够的效果提升。
倒也算是一个非常实用的方法了,如果真的做SFT的话感觉不妨可以一试,不过对于我们,可能更大的问题在于说,SFT本身搞不动啊……
我差的是那点标注吗?嗯,也差,但我更差的跑模型需要的卡啊!!!