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

news/2024/7/20 19:26:15 标签: 自然语言处理, 大模型

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

http://www.niftyadmin.cn/n/5186826.html

相关文章

java学习part04

1.进制 计算机底层都是二进制,输出统一十进制 2.算符 3.逻辑算符 4.位运算符 38-变量与运算符-位运算符的使用_哔哩哔哩_bilibili 5.条件运算符

二十三种设计模式全面解析-代理模式进阶篇:揭秘远程代理

在前一篇博文中,我们探索了代理模式的基本概念及其在文件下载器案例中的应用。如今,我们将进一步深入,揭示代理模式的进阶用法。本篇博文将着重介绍一种强大的代理模式变体:远程代理。它为我们解决网络通信问题提供了独特的解决方…

python concurrent.futures 模块启动并行任务

concurrent.futures 模块提供了一种高层次的界面,用于异步执行可调用对象(通常是函数)。这个模块在 Python 3.2 及更高版本中可用。主要的类和函数为: 1. Executor 类: Executor 是一个抽象类,定义了异步执…

解决Jira导出csv最大限度是1000的问题

JIRA为了防止过多影响性能, 设置了导出CSV的上线为1000,影响了搜索结果导出以及RestAPI。 可以通过以下配置参数修改此限制: 通过JIRA管理界面的"高级设置 “设置以下参数 系统管理 > 系统 > 一般设置>高级设置找到 jira.sea…

YashanDB个人版入门级运维文档

SQL基本操作 表空间操作 表空间是数据库的逻辑存储结构,所有数据库对象均存储于指定的表空间内。 创建表空间 执行CREATE TABLESPACE语句创建表空间。 SYSTEM/SYSAUX/UNDO/SWAP/TEMPORARY/DEFAULT表空间在CREATE DATABASE时创建,不能用CREATE TABLES…

Android---Gradle 构建问题解析

想必做 Android App 开发的对 Gradle 都不太陌生。因为有 Android Studio 的帮助,Android 工程师使用 Gradle 的门槛不算太高,基本的配置都大同小异。只要在 Android Studio 默认生成的 build.gradle 中稍加修改,就都能满足项目要求。但是&am…

m1 rvm install 3.0.0 Error running ‘__rvm_make -j8‘

在使用M1 在安装cocopods 前时,安装 rvm install 3.0.0遇到 rvm install 3.0.0 Error running __rvm_make -j8 备注: 该图片是借用其他博客图片,因为我的环境解决完没有保留之前错误信息。 解决方法如下: 1. brew uninstall --ignore-depe…

华为OD机试 - 环中最长子串(Java JS Python C)

题目描述 给你一个字符串 s,首尾相连成一个环形,请你在环中找出 o 字符出现了偶数次最长子字符串的长度。 输入描述 输入是一个小写字母组成的字符串 输出描述 输出是一个整数 备注 1 ≤ s.length ≤ 500000s 只包含小写英文字母用例 输入alolobo输出6说明最长子字符串之一…