微信扫码
与创始人交个朋友
我要投稿
今天包大人继续讲大模型训练中微调数据选择技巧,其二。
在上一篇文章里,我们回答了几个关于大模型数据方面的问题
1.数据要不要都去标注,标的比较慢咋办?
2.我已经有一批标好的数据了,再去选哪些数据送标注比较好?
3.能不能总结出一套数据构造方面自动化的方法?
传送门大模型微调数据选择和构造技巧。
那么我们再来一个新的问题,如果给定了一批标注数据,如何选出其中“最好的”,“最适合”训练的数据子集呢?
类似于传统机器学习的特征选择,从N个特征里选出n个,提升模型效果,本身这个问题是NP难的,我们有没有什么近似的,高效的,贪心的方法能解决这个问题。大模型选数据也一样,不可能所有的组合都尝试一遍。
这篇文章《One Shot Learning as Instruction Data Prospector for Large Language Models》就提出了一个方法,可以从一堆数据中,把精华选出来,使用精华部分训练就够了,这个方法称为Nuggets。
具体是怎么做的可以参考这个图。
Nuggets看着挺复杂的,其实很简单,首先Nuggets有三个输入,一个输出。
三个输入分别是:第一,一个大模型,用来评估数据好坏;第二,Predefined Task Set 用来辅助评估数据好坏;第三,Instruction Set就是等待筛选的大数据集。
输出目标就是Instruction Set的优秀子集,被称为Golden Set。
一句话说明白它是怎么做的。
它认为,如果一条数据作为one-shot的那个shot,即作为一条例子作为参考,能使得大模型有这个参考后,比zeroshot提升很多,就认为这是一条高质量的数据。
类似机器学习场景,多了一个特征,auc暴涨,那这个特征就是个好特征。
整体的方法论就是这样,至于评估LLM输出的好坏,其实可以选取的角度很多,比如最简单的PPL。
TASK就是Predefined Task Set中的测试数据,文中设定包含1000条左右的指令测试数据。需要对这1000条数据 有了one-hot参考后的PPL变化情况统计,数一下有百分之多少变好了,就作为这条数据A的Golder Score。
然后把Instruction Set的每一条数据都算出来他的Golder Score,从高到低排序,选top N作为最优子集即可。
结果比较惊人,在Alpaca数据中,选出top 1%的数据,就能取得和使用全部Alpaca类似的效果!
思路简单明了,但是有可以改进的地方。
首先是Predefined Task Set辅助数据集,这个随便选1000个就是最好的吗?
作者实验发现,使用Kmeans聚类100个类后,每个类别中心选1个,最后100个有代表性的效果是最好的。
整体看来,这个方法还是非常直观的,大家可以把思路拓宽一点,延伸到特征选择中的那些方法,看能否迁移过来,其核心就是如何低成本的度量一条数据有用。期待你的讨论。
53AI,企业落地应用大模型首选服务商
产品:大模型应用平台+智能体定制开发+落地咨询服务
承诺:先做场景POC验证,看到效果再签署服务协议。零风险落地应用大模型,已交付160+中大型企业
2024-03-30
2024-04-26
2024-05-10
2024-04-12
2024-05-28
2024-04-25
2024-05-14
2024-07-18
2024-04-26
2024-08-13
2024-12-22
2024-12-21
2024-12-21
2024-12-21
2024-12-21
2024-12-20
2024-12-20
2024-12-19