NEFTune: 通过简单的噪声提升指令精调效果

NEFTune是一种通过在finetuning过程中引入均匀分布噪声来改善模型性能的技术。在Alpaca数据集上提升34.9%,其他数据集至少7.5%。Huggingface的TRL库已支持这种简单但有效的方法。
摘要由CSDN通过智能技术生成

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) 库中支持了该方法。

参考文献

  1. NEFTune: NOISY EMBEDDINGS IMPROVE INSTRUCTION FINETUNING
  2. https://github.com/neelsjain/NEFTune
  3. Freelb: Enhanced adversarial training for natural language understanding
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值