首页 > 其他分享 >噪声嵌入提升语言模型微调性能

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

时间:2024-06-01 16:58:40浏览次数:16  
标签:嵌入 模型 微调 噪声 NEFTune 向量

 在自然语言处理(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

标签:嵌入,模型,微调,噪声,NEFTune,向量
From: https://blog.csdn.net/yetzi1975/article/details/139234197

相关文章

  • YOLOv10的改进、部署和微调训练总结
    YOLO模型因其在计算成本和检测性能之间的平衡而在实时目标检测中很受欢迎。前几天YOLOv10也刚刚发布了。我们这篇文章就来看看YOLOv10有哪些改进,如何部署,以及微调。YOLOv10通过无nms的训练解决了延迟问题,作者为无nms训练引入了一致的双任务,同时获得了具有竞争力的性能和低推理延......
  • 【低配】柏林噪声地形生成
    渲染效果源代码作者将柏林噪声用了python和JavaScript两种语言实现两种语言效果基本一样pythonimportrandomdefave(a,b):#计算平均值returnround((a+b)/2)defave_list(lst):#计算一个全为数字的列表的平均值returnround(sum(lst)/len(lst))......
  • 嵌入式模块学习小记(未分类)
    L298N电机驱动板模块OutputA:接DC电机1或步进电机的A+和A-;OutputB:接DC电机2或步进电机的B+和B-;5VEnable:如果使用输入电源大于12V的电源,请将跳线帽移除。输入电源小于12V时短接可以提供5V电源输出;+5VPower:当输入电源小于12V时且5VEnable处于短接状态,可以提......
  • 山东大学项目实训-基于LLM的中文法律文书生成系统(十六)- 指令微调(1)
    指令微调指令微调(InstructionTuning)是指使用自然语言形式的数据对预训练后的大语言模型进行参数微调。微调适用的场景通常来说,适合微调的场景主要分为行业场景和通用场景对于行业场景:例如客服助手,智能写作辅导等需要专门的回答范式和预期的场景例如智慧医生,智慧律师等需要......
  • 山东大学项目实训-基于LLM的中文法律文书生成系统(十七)- 微调-LoRA(2)
    LoRALORA是一种低资源微调大模型方法,出自论文LoRA:Low-RankAdaptationofLargeLanguageModels。使用LORA,训练参数仅为整体参数的万分之一、GPU显存使用量减少2/3且不会引入额外的推理耗时。自然语言处理的一个重要范式包括对一般领域数据的大规模预训练和对特定任务或领......
  • 嵌入式linux系统中framebuffer应用开发详解
    大家好,今天给大家详细分析一下,利用framebuffer进行linux应用开发的详细方法。第一:LCD屏Framebuffer基本原理LCDFramebuffer就是一块显存.在嵌入式系统中.显存是被包含在内存中。LCDFramebuffer里的若干字节〈根据驱动程序对LCD控制器的配置而定〉表示LCD屏幕中的一个像素点.......
  • 基于DCT变换和位平面分解的数字水印嵌入提取算法matlab仿真
    1.算法运行效果图预览    2.算法运行软件版本matlab2022a 3.算法理论概述    基于离散余弦变换(DiscreteCosineTransform,DCT)和位平面分解(Bit-PlaneDecomposition)的数字水印嵌入与提取算法,是一种结合了频域与空域特性的稳健数字水印技术。该方法利......
  • 深入探索汇编语言的顶尖级应用领域,包括多核并行处理、物联网和嵌入式系统、高性能计算
    汇编语言初级应用的大纲:1.汇编语言概述介绍汇编语言的基本概念和作用。解释汇编语言与高级语言的区别。简要说明汇编语言的历史和发展。2.汇编语言基础讲解汇编语言的基本语法和结构。介绍汇编语言中的指令、寄存器、内存等概念。解释汇编语言程序的组成部分,如数据段......
  • 一个python文件做图像 灰度化 反转 通道分离 噪声、滤波 高斯双边滤波 均值偏移滤波
    代码测试可以正常运行。灰度化反转通道分离噪声、滤波高斯双边滤波均值偏移滤波图像二值化Canny边缘检测直线检测圆检测轮廓发现人脸检测测试可以运行代码如下:'''file:ImageMiniLab.pydate:2019/04/1920:00author:itisyan......
  • 1.1 嵌入式八股文(一)
    C语言简述编译运行一段代码的过程源程序是指未经编译的,按照一定的程序设计语言规范书写的,人类可读的文本文件,源程序就是所写好的代码。可执行程序,即常说的.exe程序,可以执行程序,完成计算机功能。在C语言中,.c文件就是所谓的源文件。源程序到可执行程序的过程。在这个过程中......