大模型微调技巧:在 Embeeding 上加入噪音提高指令微调效果

Embedding 模型的选择和微调 评估机器生成摘要的质量。 阅读详情

大家好,在去年分享过一篇ACL2022的文章,通过微调前给预训练模型参数增加噪音提高预训练语言模型在下游任务的效果方法。NoisyTune方法在BERT、XLNET、RoBERTa和ELECTRA上均取得不错的效果。

图片

那么通过加入噪音的方式,对现在大型语言模型是否有效呢?

今天就有人分享了一篇文章《NEFTUNE: NOISY EMBEDDINGS IMPROVE INSTRUCTION FINETUNING》,通过在Embedding层上加入噪音提高指令微调的效果,思路与NoisyTune是基本一致的。

在AlpacaEval榜单上,利用GPT4作为评分器,在多个数据上微调Llama2-7B模型,NEFTune方法相较于直接微调方法,均有显著提高。

图片

Paper: https://arxiv.org/pdf/2310.05914.pdf
Github: https://github.com/neelsjain/NEFTune

方法

核心是输入经过Embedding层后,再加入一个均匀分布的噪声,噪声的采样范围为[-, ]之间,其中,为可调节参数,为输入长度,为Embedding层的维度,具体如下:

图片

代码实现也十分简单,核心代码如下:

from torch.nn import functional as F

def NEFTune(model, noise_alpha=5)
    def noised_embed(orig_embed, noise_alpha):
        def new_func(x):
            # during training, we add noise to the embedding
            # during generation, we don't add noise to the embedding
            if model.training:
                embed_init = orig_embed(x)
                dims = torch.tensor(embed_init.size(1) * embed_init.size(2))
                mag_norm = noise_alpha/torch.sqrt(dims)
                return embed_init + torch.zeros_like(embed_init).uniform_(-mag_norm, mag_norm)
            else:
                return orig_embed(x)
        return new_func
    ##### NOTE: this is for a LLaMA model ##### 
    ##### For a different model, you need to change the attribute path to the embedding #####
    model.base_model.model.model.embed_tokens.forward = noised_embed(model.base_model.model.model.embed_tokens, noise_alpha)
return model


结果&分析

Llama2-7B模型在不同数据集上正常微调和NEFTune方法微调后,与Text-Davinci-003的胜率,平均高出15%,提高了模型生成文本的质量。

图片

NEFTune方法,不仅在Llama2-7B模型有效,在OPT-6.7B、Llama1-7B上同样有效,如下图所示。

图片

但有一点注意的是,ChatGPT作为评价器,NEFTune方法效果的提高没有GPT4作为评价器提高的多。

并且从OpenLLM榜单上结果来看,NEFTune方法对模型推理、认知等能力并没有负作用。

图片

在高效调参方法(QLora)中使用NEFTune方法也依然有效。

图片

NEFTune方法通过增加噪音,会是训练集上的Loss变高,验证集上的Loss变低,说明有能力缓解模型过拟合现象。

图片

NEFTune方法会导致输出结果变长,但生成结果的重复率并没有显著提高,主要是提供了额外的细节。

图片

通过实验发现,通过prompt限制等强制模型输出生成更长的结果,会使得评分变高,但都不如NEFTune方法。图片

并且对比了高斯噪声和均匀噪声,发现虽然高斯噪声会使得输出长度更长,但对结果并没有明显增益。图片

总结

NEFTune方法可以缓解模型在指令微调阶段的过拟合现象,可以更好的利用预训练阶段的知识内容。但研究目前还存在一些缺陷,例如评价器为GPT4、没有在更大的模型上进行实验。

​

如何学习AI大模型?

作为一名热心肠的互联网老兵,我决定把宝贵的AI知识分享给大家。 至于能学习到多少就看你的学习毅力和能力了 。我已将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

这份完整版的大模型 AI 学习资料已经上传优快云,朋友们如果需要可以微信扫描下方优快云官方认证二维码免费领取【保证100%免费】

一、全套AGI大模型学习路线

AI大模型时代的学习之旅:从基础到前沿,掌握人工智能的核心技能!

img

二、640套AI大模型报告合集

这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。

img

三、AI大模型经典PDF籍

随着人工智能技术的飞速发展,AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型,如GPT-3、BERT、XLNet等,以其强大的语言理解和生成能力,正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。

img

四、AI大模型商业化落地方案

img

作为普通人,入局大模型时代需要持续学习和实践,不断提高自己的技能和认知水平,同时也需要有责任感和伦理意识,为人工智能的健康发展贡献力量。

NEFTUNE: NOISY EMBEDDINGS IMPROVE INSTRUCTION FINETUNING 我们展示了语言模型微调可以通过简单的增强来改进,有时甚至是显著的改进。NEFTune在训练期间向嵌入向量添加噪声。使用Alpaca对LLaMA-2-7B的标准微调在AlpacaEval上实现了29.79%,而使用噪声嵌入时,这一比例上升到64.69%。NEFTune还改进了现代指令数据集上的强基线。使用Evol Instruct训练的模型可以看到10%的改进,使用ShareGPT8%的改进,OpenPlatypus改进了8%。 阅读详情

相关推荐

10.Spring ai alibaba MCP本地&远程

MCP本地与远程调用技术解析 MCP(Model Context Protocol)是由Anthropic推出的标准化协议,旨在解决智能体(Agent)与工具间交互的两大挑战:外部工具调用和多智能体协作。该协议提供统一接口访问外部数据源,简化了AI集成过程,克服了传统方式架构碎片化的问题。 MCP支持两种通信机制:stdio用于本地服务(如代码编辑器和设计软件),SSE用于远程API调用(如天气查询和邮件服务)。典型应用场景包括智能编程助手、数据分析工具和企业知识管理等。安装配置支持Python(uvx)和

u013218342的博客 980

什么是embedding?

本文转自:https://www.jianshu.com/p/6c977a9a53de    简单来说,embedding就是用一个低维的向量表示一个物体,可以是一个词,或是一个商品,或是一个电影等等。这个embedding向量的性质是能使距离相近的向量对应的物体有相近的含义,比如 Embedding(复仇者联盟)和Embedding(钢铁侠)之间的距离就会很接近,但 Embedding(复仇者联...

weixin_44493841的博客 10万+

CATIA CAA开发环境搭建避坑指南:从授权服务到VS配置全流程

本文提供了一份详尽的CATIA CAA开发环境搭建避坑指南,涵盖从授权服务(DSLS)安装、Visual Studio版本匹配与集成配置,到编译调试全流程。重点解析了授权服务无法连接、模块加载失败等典型问题的解决方案,强调版本严格对应与纯英文环境是成功搭建的关键。

redis7keeper的博客 572

大模型微调技巧-在Embeeding上加入噪音提高指令微调效果

在去年6月的时候,分享过一篇ACL2022的文章《NoisyTune: A Little Noise Can Help You Finetune Pretrained Language Models Bette》,通过微调前给预训练模型参数增加噪音提高预训练语言模型在下游任务的效果方法。NoisyTune方法在BERT、XLNET、RoBERTa和ELECTRA上均取得不错的效果。那么通过加入噪音的方式,对现在大型语言模型是否有效呢?

2301_82275412的博客 1037

2021哈工大网安837考研初试经验贴

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 欢迎使用Markdown编辑器 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar

weixin_41797880的博客 6523

手把手教你用gym训练宇树GO2机器人模型(附完整配置文件)

本文提供了一份详细的实战指南,教你如何使用Gym框架为宇树GO2四足机器人搭建强化学习训练环境。文章深入解析了环境配置、参数调试、奖励函数设置等关键步骤,并分享了避开常见陷阱的经验,旨在帮助开发者高效完成模型训练。

oo7890的博客 322

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

NEFTune方法的原理仅使用一句话就可以描述清楚:在finetune过程的词向量中引入一些均匀分布的噪声即可明显地提升模型的表现

Steve Wang's blog 2425

3线SWD接线终极指南:用Jlink调试非3.3V设备的5个关键细节

本文详细解析了使用Jlink调试非3.3V设备时,3线SWD接线的5个关键细节。核心在于正确理解并连接Vref引脚以实现电压适配,避免供电冲突,并掌握精简接线法与固件修复技巧。文章以STM32F205等芯片为例,指导开发者安全、高效地进行混合电压调试。

e4f5g6h7的博客 437

大模型 | NEFTune之引入随机噪声对大模型训练的收益

注意,原先传入model的是input_ids,而当下由于我们将inputs_embeds增加了噪声,因此传入model的将直接替换为inputs_embeds,代码如下。进度:直接对模型进行如下封装,原理是对model.embed_tokens.forward()进行改写,经实践,这种方法不管用,会报堆栈溢出的error。在AlpacaEval榜单上,利用GPT4作为评分器,在多个数据上微调Llama2-7B模型,NEFTune方法相较于直接微调方法,均有显著提高。

RichardsZ_的博客 1320

mstar PQ软件修改方法

1.修改ADC的值 Static code APIXC_AdcGainOffsetSetting tADCSetting[ADC_SET_NUMS]= #define INIT_ADC_RGB_RED_GAIN               0x1000 #define INIT_ADC_RGB_GREEN_GAIN           0x1000 #define INIT_ADC_RGB

qq_18810259的专栏 2565

跨平台C#上位机开发:.NET MAUI与工业物联网的融合实战

NET MAUI正在重塑工业上位机的开发模式——从“为单一设备定制”转向“全场景覆盖”。其价值不仅在于“代码复用”,更在于打通了工业物联网的“最后一公里”:让边缘设备、云平台、移动终端通过统一的数据模型协同工作。未来,随着.NET MAUI对WebAssembly的支持(计划在.NET 9实现),上位机甚至可直接运行在浏览器中,进一步降低部署门槛。对于工业开发者,掌握跨平台技术意味着能更快响应多样化的现场需求,从“Windows专家”升级为“全栈工业开发者”。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 1091

使用Embeeding、向量数据库和LangChain构建本地知识库

本文将讲述如何在本地部署大模型服务,并使用Embeeding、向量数据库和LangChain构建本地知识库。

DEVELOPERAA的博客 2432

IPGUARD客户端与应用程序冲突

客户端与应用程序冲突 症状 安装客户端之后,客户端的某些程序无法运行或使用过程中出现异常,卸载客户端后恢复正常。 原因分析 可能是客户端的某些功能与应用程序发生冲突导致。 解决方法 当出现这样的情况时,可以按照以下步骤确认。 步骤1:屏蔽主动注入 在客户端配置策略中,增加配置策略hookapi_disinj,值为1;待策略同步到客户端后,重启客户端确认问题是否解决。如果解决,则转到...

IP-Guard专栏 1410

大模型入门:Embedding模型概念、源码分析和使用示例

本篇对嵌入模型的概念、Spring AI 框架对支持嵌入模型的设计,并对其源码进行分析,最后对API接口进行使用。

2301_81940605的博客 2万+

学习QT之应用程序打包发布

一、编译QT程序(release编译) 二、将release文件夹中的可执行文件复制到一个空的文件夹中 三、使用windeployqt打包工程 切换到可执行文件路径,执行windeployqt xxx.exe: 然后就会将程序所需要用到的资源以及库文件生成到可执行文件路径下: 此时应用程序就可以点击运行了。 四、使用Enigma Virtual Box封包(将文件夹内的文件集成为单可执...

贝勒里恩的博客 762

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Embedding 基础

一、什么是Embedding 简单来说,Embedding 就是用一个数值向量“表示”一个对象(Object)的方法,这里说的对象可以是一个词、一个物品,也可以是一部电影等等。一个物品能被向量表示,是因为这个向量跟其他物品向量之间的距离反映了这些物品的相似性。更进一步来说,两个向量间的距离向量甚至能够反映它们之间的关系。这个解释听上去可能还是有点抽象,那我们再用两个具体的例子解释一下。 上图是 Google 著名的论文 Word2vec 中的例子,它利用 Word2vec 这个模型把单词映射到了高维空间中

Edward_Legend的博客 2万+

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

手工微调embedding模型RAG检索能力

本文是一篇关于如何微调embedding的文章,原作者是Wenqi Glantz。 主要内容: 微调big-large-en开源embedding模型; 具体实现代码细节; 评测最终的提升效果。

asd8705的专栏 3706

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

【AI大模型】Embedding模型解析 文本向量知识库的构建和相似度检索

在大模型中,"embedding"指的是将某种类型的输入数据(如文本、图像、声音等)转换成一个稠密的数值向量的过程。这些向量通常包含较多维度,每一个维度代表输入数据的某种抽象特征或属性。Embedding 的目的是将实际的输入转化为一种格式,使得计算机能够更有效地处理和学习文本Embedding在自然语言处理(NLP)中,文本embedding是一个常见的概念。是将文字或短语转换成数值向量的过程。这些向量捕捉了单词的语义特征,例如意义、上下文关系等。

大数据小禅的博客 2988

大模型系列:什么是Embedding,非常详细收藏这一篇就够!

Embedding是大语言模型(LLMs)中的核心技术,它将离散的符号(如文字、图像)转化为机器能理解的连续向量,使模型能够处理多模态数据。Embedding的起源可追溯到1954年的分布式语义理论,而2013年的Word2Vec算法是其发展的重要里程碑。随后,BERT和GPT等模型引入了动态嵌入,解决了词义多义问题,并扩展到图像、语音等领域。常见的Embedding模型包括Word2Vec、BERT等,它们将非数值数据映射到向量空间,支持语义理解和生成任务。高维Embedding虽能捕捉细微关系,但可视化

2401_84495872的博客 4518

Transformer模型各模块详解及代码实现

transformer在各个领域的应用越来越广,本文从实用的角度出发,对transformer各个模块进行讲解与实现。主要参考如下:1、论文参考:Atttion is all you need。2、NLP理论参考:预训练模型的前世今生。3、代码参考:hyunwoongko。4、代码参考:Pytorch官方文档。① 词向量就是用一个向量来表示一个单词,词向量是一个矩阵,矩阵的行数代表单词个数,列数代表每个单词的长度。

weixin_45671036的博客 7020

什么是Embedding?

近年来,NLP自然语言处理、推荐系统,以及计算机视觉已成为目前工业界算法岗的主流方向,无论在哪个领域,对“Embedding”这个词概念的理解都是每个庞大知识体系的基石。今天我们就以诙谐生动的方式来理解一下这个看似高大上的名词吧。“Embedding”直译是嵌入式、嵌入层。看到这个翻译的时候是不是一脸懵圈?什么叫嵌入?意思是牢固地或深深地固定?那么它能把什么嵌入到什么呢?很开心地告诉你,它能把万物嵌入万物,是沟通两个世界的桥梁,是打破次元壁的虫洞!用数学的话来说:“

qq_42402817的博客 991

Transformer | 一文带你了解Embedding(从传统嵌入方法到大模型Embedding)

Embedding是 LLM 的语义支柱,它可以将原始文本转换为向量形式来方便模型理解**。当你在使用 LLM 帮助您调试代码时,你的输入文本、代码会被转换为高维向量,从而将其中的语义转化成数学关系。

weixin_58753619的博客 1310

Embedding技术

1、Embedding 是什么 Embedding是用一个低维稠密的向量来“表示”一个对象(这里的对象泛指一切可推荐的事物,比如商品、电影、音乐、新闻等),同时表示一词意味着Embedding能够表达相应对象的某些特征,同时向量之间的距离也能够反应对象之间的相似性。 在词向量空间内,甚至完全不知道一个词的向量的情况下,仅靠语义关键加词向量运算就可以推荐出这个词的词向量。 Embedding技术对于深度学习推荐系统的重要性 推荐场景中大量使用one-hot编码对类别特征、ID类特征进行编码,导致向

mudan97的博客 5372

神经网络算法 - 一文搞懂Embedding(嵌入)

本文将从三个方面,带您一文搞懂Embedding(嵌入)原理:将离散数据映射为连续向量,捕捉潜在关系。方法:使用神经网络中的Embedding层,训练得到数据的向量表示。作用:提升模型性能,增强泛化能力,降低计算成本。在机器学习中,Embedding主要是指将离散的高维数据(如文字、图片、音频)映射到低维度的连续向量空间。这个过程会生成由实数构成的向量,用于捕捉原始数据的潜在关系和结构。原理:将文本转换为连续向量,基于分布式假设捕捉语义信息。

2401_85328934的博客 3237
上一篇: 【AI大模型应用开发】AI+知识图谱极简入门:手把手带你体验LangChain实现知识图谱创建和查询(附代码和源码分析)
下一篇: 【推荐收藏】可显著提升模型效果的4种超参自动优化方法
少喝冰美式
博客等级 码龄3年 6839粉丝 517原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值