这篇论文在arxiv上最近一次提交是在24年3月,从标题也能看到,这篇论文实现了用低质量小模型蒸馏得到高质量模型。
impossible distillation实现了从GPT-2规模的语言模型蒸馏得到高质量数据集和高质量模型。
模型只有7亿参数,但表现优于从ChatGPT蒸馏出的模型,有时甚至优于ChatGPT本身。
从1.5B语言模型蒸馏出的数据集比13倍大的数据集具有更好的多样性和保真度。
作者提出了这篇论文一个理论基础,也就是转述的邻近性,意思是一个句子和它的转述句子倾向于集中在邻近的子空间中,就像下图展示的一样,在LM的分布图上意思差不多的句子会聚集在一起。所以就可以通过上下文来缩小LM的搜索空间,这样就有可能得到能互相转述的句子。
训练过程分为四步,第一步是先产生一些句子对。第二步是过滤掉一些不符合标准的句子,这样留下来的都是能互相转述的句子。第三步是微调小模型,得到一个性能还不错的转述器。第四步是自蒸馏,转述器产生大量句子对,再经过过滤得到训练数据,然后再去微调小模型。这样最后就能得到一个高质量小模型和高质量数据集了。
具体而言,第一步生成句子对时要先让教师模型生成几个句子作为上下文,每个上下文由1-5个句子组成,对于每个上下文再生成100次下一句话,这100个句子就大概率是语义相同的。两两之间组成pair,这样就有了5050条初步的pair数据。
第二步是设计过滤器,过滤标准有三个,首先两个句子含义要一致,然后两个句子看起来要尽量不同,最后为了数据多样性要剔除重复样本。判断含义是否一致可以用一个现成的NLI模型,如果两个句子x和y满足x蕴含y且y蕴含x那就说明x和y含义一致。看起来是否不同可以用ROUGE-L来反映token重叠率,用两句子短语结构树的树编辑距离反映句法差异,根据这两点来判断是否看起来不一样。去重的话也是借助蕴含关系,假设有两对(x1,y1)和(x2,y2),如果x1 => x2或者y1 => y2那这两对就是重复的,保留蕴含得分最高的那一对。
过滤完之后这些句子对就是质量比较高的转述数据了,可以用它们来训练小模型,论文中选择的是7亿参数的T5-large,然后用40万条过滤后的数据进行训练。这时候可以得到一个还不错的转述器。
接下来是对这个转述器进一步自蒸馏,通过转述器产生若干句子对,然后由过滤器过滤得到高质量转述数据,再去微调转述器。最终得到高质量转述模型Impossible-T5和高质量转述数据集DIMPLE2。
之前说的都是文本转述任务,通过修改过滤器可以很容易将模型迁移到文本总结任务上,例如对于句子对(x,y)可以过滤掉x长度小于y长度的句子对。
最后是结果展示,下面是在三个涉及一般领域和专业领域benchmark上的评估结果,可以看到在相同大小的模型中iBLEU和B-iB指标都达到了最优,BLEU和R-L指标作者认为不靠谱,因为简单把句子copy一份就能达到特别高的得分。而Impossible-T5是唯一能与175B大模型竞争的770M小模型,在专家领域(ParaSCI)甚至超越了ChatGPT。