NEFTune指的是Noise Embedding Finetuning(噪声嵌入精调),提出自论文:NEFTune: NOISY EMBEDDINGS IMPROVE INSTRUCTION FINETUNING。
NEFTune方法的原理仅使用一句话就可以描述清楚:在finetune过程的词向量中引入一些均匀分布的噪声即可明显地提升模型的表现:
如上图,基于AlpacaEval
进行评测,引入了噪声之后在Alpaca数据集上有34.9%的提升!!!其他数据集也有不低于7.5%的提升,效果惊人~。
噪声的生成方法也不复杂,就是按原向量维度生成每一项都是一个从-1到1之间的随机数的噪声向量,再乘以缩放因子
L
d
frac{alpha}{sqrt{Ld}}
Ld
,缩放因子参考自论文:Freelb: Enhanced adversarial training for natural language understanding,它和
3
frac{alpha}{sqrt{3}}
3
有着相似的expected Euclidean magnitude。
引入方法后的整个finetune过程引用原文的算法描述如下:
因为方法很简单,实现自然也很简单:
uniform_(a,b)
,即按替换原向量每一项为a到b之间的随机数。
>>> a = torch.zeros(3, 3)
>>> print(a)
tensor([[0., 0., 0.],
[0., 0., 0.],
[0., 0., 0.]])
>>> a.uniform_(-1, 1)
tensor([[-0.8951, -0.6760, -0.1516],
[-0.6764, -0.6086, -0.4051],
[-0.7278, 0.2884, 0.7550]])
>>>
hugging face已在TRL (Transformer Reinforcement Learning)
库中服务器托管网支持了该方法。
参考文献
- NEFTune: NOISY EMBEDDINGS IMPROVE INSTRUCTION FINETUNING、
- https://github.com/neelsjain/NEFTune
- Freelb: Enhanced adversarial training for natural language understanding
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
对比软件安装和运行; 一、场景 作为研发人员,通常自己电脑的系统环境都是非常复杂,在个人的习惯上,是按照下图的模块管理电脑的系统环境; 对于「基础设施」、「主机操作系统」、「系统软件」来说,通常只做配置修改; 对于自行安装的软件环境来说,个人通常这样分类:「应…