当前位置: 首页 > news >正文

噪声嵌入提升语言模型微调性能

在自然语言处理(NLP)的快速发展中,大模型(LLMs)的微调技术一直是研究的热点。最近,一篇名为《NEFTUNE: NOISY EMBEDDINGS IMPROVE INSTRUCTION FINETUNING》的论文提出了一种新颖的方法,通过在训练过程中向嵌入向量添加噪声来提升模型的微调性能。这一发现为LLMs的进一步优化提供了新的思路。

传统的LLMs通常在原始网络数据上进行训练,然后针对较小但经过精心策划的指令数据集进行微调。这种指令微调对于发挥LLMs的潜力至关重要,而模型的实用性很大程度上取决于我们如何充分利用这些小型指令数据集。NEFTune的核心思想是在微调过程中的前向传播阶段向训练数据的嵌入向量添加随机噪声。这一简单的技巧可以在没有额外计算或数据开销的情况下显著提升指令微调的结果。实验表明,使用噪声嵌入对原始LLM(如LLaMA-2-7B)进行微调时,其在AlpacaEval上的性能从29.79%提升至64.69%,显示出约35个百分点的显著提升。

NEFTune(Noisy Embedding Instruction Fine Tuning)是一种新颖的微调技术,它通过在训练过程中向嵌入向量添加噪声来增强语言模型的性能。这种方法的核心思想是利用随机噪声作为一种正则化手段,以减少模型对训练数据的过度拟合,并提高其泛化能力。以下是NEFTune方法的详细说明:

噪声嵌入的引入

在传统的语言模型微调中,模型的嵌入层会将输入的词汇映射为固定长度的向量,这些向量随后会被用来生成模型的输出。NEFTune方法在这一过程中引入了随机噪声,具体做法是在嵌入向量的前向传播过程中添加一个随机噪声向量。

噪声的生成与缩放

NEFTune生成的噪声向量是通过独立同分布(iid)均匀分布采样得到的,然后通过一个缩放因子对整个噪声向量进行缩放。其中,L 是序列长度,d 是嵌入维度,而α 是一个可调参数。

这个缩放规则借鉴了对抗性机器学习文献中的噪声缩放规则,它会产生一个期望欧几里得范数约为 的随机向量。

训练过程

NEFTune的训练过程从数据集中采样一个指令,将其标记转换为嵌入向量。然后,与标准训练不同的是,NEFTune会向这些嵌入向量添加一个随机噪声向量。具体来说,算法的步骤如下:

  1. 初始化从预训练模型中得到的模型参数 θ。
  2. 重复以下步骤直到满足停止条件或达到最大迭代次数:
    • 从数据集 D 中采样一个minibatch的数据和标签(Xi​,Yi​)。
    • 将输入Xi​ 转换为嵌入向量 
    • 采样一个噪声向量ϵ,并将其缩放后加到嵌入向量上,得到噪声嵌入
    • 使用噪声嵌入进行预测
    • 根据损失函数 更新模型参数θ。
实验效果

实验结果表明,NEFTune在多个数据集上显著提升了模型的文本质量。例如,在7B规模的模型上,AlpacaEval的平均提升为15.1%。此外,即使是经过多轮RLHF调整的高级聊天模型(如LLaMA-2-Chat),也能通过NEFTune获得额外的性能提升。

结论

NEFTune通过在嵌入层引入噪声,作为一种数据增强手段,有效地提高了语言模型在指令微调任务上的性能。这种方法简单易行,且不需要额外的计算或数据开销,为LLMs的微调提供了一种有效的改进策略。

论文链接:http://arxiv.org/pdf/2310.05914

http://www.lryc.cn/news/346237.html

相关文章:

  • XML文档基本语法
  • git开发工作流程
  • JDK生成https配置
  • 通过 Java 操作 redis -- set 集合基本命令
  • WebSocket前后端建立以及使用
  • C++数据结构之链表树图的存储
  • 又一位互联网大佬转行当网红,能写进简历么?
  • Codeforces Round 134 (Div. 1) A. Ice Skating (并查集)
  • 深入了解 Flask Request
  • 前端测试策略与实践:单元测试、E2E测试与可访问性审计
  • 修改el-checkbox样式
  • UE5缺少SDK,而无法在windows平台打包的解决方法
  • 4G,5G执法记录仪人脸识别、人脸比对使用说明
  • 掌握SEO优化的关键:提升网站排名的秘籍(如何提高网站seo排名)
  • 大模型微调之 在亚马逊AWS上实战LlaMA案例(九)
  • Php php7的特性
  • node pnpm修改默认包的存储路径
  • Adobe-Premiere-CEP 扩展 入门-视频剪辑-去气口插件-Silence Remover
  • 基于多目标灰狼算法的冷热电联供型微网低碳经济调度
  • Python 正则表达式 (?=...) 和 (?<=...) 符号
  • Vue.js中使用JavaScript实现路由跳转详解
  • 社群裂变:从微光到星火的社群增长奥秘
  • Git命令Gitee注册idea操作git超详细
  • 出差行程到底怎么管?这个“高分指南”划重点来了!
  • js设计模式--发布订阅者模式
  • 【图论】图论基础
  • Konga域名配置多个路由
  • 15.计算机网络
  • 【大数据·hadoop】在hdfs上运行shell基本常用命令
  • TCP/IP 协议基础:构建互联网基石