欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 健康 > 养生 > 高效利用大语言模型,上下文学习?微调?提示学习?指示学习?

高效利用大语言模型,上下文学习?微调?提示学习?指示学习?

2024/10/23 14:52:16 来源:https://blog.csdn.net/2401_88117657/article/details/143033532  浏览:    关键词:高效利用大语言模型,上下文学习?微调?提示学习?指示学习?

在使用大模型过程中,有两种方式可以实现大模型的快速落地。

[]1.上下文学习

上下文学习(In context learning)是在 GPT-3 中首次提出的,它表明随着模型尺寸的增大,ICL 的能力变得更加明显,那么什么是上下文学习呢?

在LMM领域,上下文学习(In context learning)即提示学习,也叫语境学习、任务相关的类比样本中学习等,它可以看做模型语义理解能力的一种,即对于一个大规模预训练模型,对于不同的下游任务,不需要调整模型参数,它可以根据我们的演示示例输出我们想要的结果,本质上,它相当于使用训练完好的语言模型估计给定示例条件下的条件概率分布模型。

根据给定示例的数量分为zero-shot、one-shot、few-shot

例如,对于情感分类任务,将给定示例与待分类文本一起输入到模型中,暗示模型根据示例生成输出

在这里插入图片描述
如果我们不能直接访问模型(例如如果我们通过API使用模型),上下文学习的用处就非常大。但是如果在微调模型阶段选择上下文学习,由于模型都有输入长度的限制,而上下文学习需要在样本原有基础上添加较多内容,所以还是有一些局限性。

[]2.微调

首先,我们来回顾一下模型微调的发展史。模型微调分为全量微调(Full-Fine-Tuning)和部分参数微调

[]2.1 全量微调

引用:全量微调是指对整个预训练模型进行微调,包括所有的模型参数。在这种方法中,预训练模型的所有层和参数都会被更新和优化,以适应目标任务的需求。这种微调方法通常适用于任务和预训练模型之间存在较大差异的情况,或者任务需要模型具有高度灵活性和自适应能力的情况。

这种微调方法也通常会取得更好的效果,但是随着模型参数量的增加,例如GPT3等模型,其参数量达到千亿甚至万亿级别,全量微调参数将会耗费大量资源。

[]2.1 高效参数微调(PEFT)

在面对特定的下游任务时,如果进行 Full-fintuning(即预训练模型中的所有参数都进行微调),太过低效。而如果采用固定预训练模型的某些层,只微调接近下游任务的那几层参数,又难以达到较好的效果。

所以谷歌的研究人员于2019年在论文《Parameter-Efficient Transfer Learning for NLP》提出针对 BERT 的 PEFT 微调方式,于是他们设计了Adapter。

[]2.1.1 Adapter Tuning

Google之Adapter Tuning:嵌入在transformer里 原有参数不变 只微调新增的Adapter。模型结构图如下
:

上图左为Adapter在transformer模型中的位置,在训练时,固定住原来预训练模型的参数不变,只对新增的 Adapter 结构进行微调。

上图右为Adapter的结构,通过对特征向量进行维度压缩和还原来训练更新参数,Adapter结构中也包括了残差链接部分。

除此之外还有提示学习相关的微调系列、LoRA系列的微调方法

[]2.1.2 提示学习相关的微调

提示学习即对模型进行提示,通过利用外部的信息来引导模型,帮助模型学习,通过给模型不同的提示或情境,可以影响模型的输出,使其更适合特定的用途或遵循特定的交流原则。
这些提示可以是来自于人类专家的知识、先前的经验、规则或其他形式的先验知识。适用于低资源场景,对于提升模型表现具有较大作用。
在这里插入图片描述

经过调研,大模型微调过程中的提示学习大致可以分为三类

  • prompt-tuning

在输入数据中添加离散提示模板,拼接到数据上作为输入,同时freeze预训练模型进行训练,该向量一般是模型最终输出的结果,也可以是映射前的结果。

mask位置对应【喜欢/不喜欢】,即【积极/消极】

在这里插入图片描述

  • prefix-tuning

斯坦福的研究人员于2021年通过此论文《Prefix-Tuning:Optimizing Continuous Prompts for Generation》提出Prefix Tuning方法

在输入数据中加入上下文信息等外部信息作为前缀来引导模型,帮助模型理解输入信息进而提高模型生成内容的质量。

该方法是在输入token之前构造一段任务相关的virtual tokens。即下图中PREFIX部分,这些伪token不必是词表中真实的词,而只是若干个可调的自由参数,训练过程中只更新PREFIX部分的参数。

下图上半部分是encoder结构,下半部分是encoder-decoder结构
在这里插入图片描述
调优过程通过初始化一个维数|Pidx|×dim(hi)的可训练矩阵Pθ(由θ参数化)来存储前缀参数。

在这里插入图片描述

prefix-prompt的效果优于adapter tuning 和 finetune最上面的两层,最终和全参数finetune差不多,且在低资源情况下,效果优于finetune

  • p-tuning V1

清华大学的研究者于2021年通过此篇论文《GPT Understands, Too》提出P-Tuning

如下图(a)中橘色区域, [“the” “capital” “of” “is” ] 等提示信息是离散且固定的,而这些离散的提示往往会导致模型的性能不稳定,例如,改变提示中的某个词可能就会造成性能的大幅下降,所以p-tuning应运而生。

如下图(b)所示,p-tuning使用通过Prompt Encoder提示编码器(LSTM+MLP)不断迭代优化产生的提示代替固定的离散提示,以保证提示在模型训练过程中不断优化,形成比较优秀的提示模板。

在这里插入图片描述
换言之,P-tuning做法是用一些伪prompt代替这些显式的prompt。具体做法是,在样本输入之前添加预训练词表中未使用过的token[unused1][unused2]…,然后通过训练去更新这些token的参数。

相比于prefix tuning,p-tuning这些token插入的位置不一定是前缀,可以是随机的。并且P-Tuning 引入的virtual token是可微的

P-tuning并不是随机初始化几个新token然后直接训练的,首先引入了LSTM+MLP编码模块去编码这些virtual token,把Embedding算出来,并且将这个LSTM模型设为可学习的 允许模型在训练过程中动态地“学习”什么是有效的 prompt。

论文:https://arxiv.org/pdf/2103.10385.pdf
代码:THUDM/P-tuning: A novel method to tune language models. Codes and datasets for paper ``GPT understands, too’'.*

  • p-tuning V2

在这里插入图片描述
v1到v2的可视化:蓝色部分为参数冻结,橙色部分为可训练部分,可以看到右侧的p-tuning v2中,将continuous prompt加在序列前端,并且每一层都加入可训练的prompts。在左图v1模型中,只将prompt插入input embedding中,会导致可训练的参数被句子的长度所限制。

  • LoRA系列

LoRA(Low-Rank Adaptation of Large Language Models),直译为大语言模型的低阶自适应。LoRA 的基本原理是冻结预训练好的模型权重参数,在冻结原模型参数的情况下,通过往模型中加入额外的网络层,并只训练这些新增的网络层参数。由于这些新增参数数量较少,这样不仅 finetune 的成本显著下降,还能获得和全模型参数参与微调类似的效果。
在这里插入图片描述

[]【提示学习与指示学习对比】

提示学习是通过添加提示词激发模型的补全能力,引导模型生成符合逻辑的内容

指示学习是通过构造示例模板,激发模型的理解能力,教会模型如何按照示例模板思考和行动

ps:以上都是个人通过阅读资料的总结,如有理解错误的地方欢迎大家指正

读者福利:如果大家对大模型感兴趣,这套大模型学习资料一定对你有用

对于0基础小白入门:

如果你是零基础小白,想快速入门大模型是可以考虑的。

一方面是学习时间相对较短,学习内容更全面更集中。
二方面是可以根据这些资料规划好学习计划和方向。

包括:大模型学习线路汇总、学习阶段,大模型实战案例,大模型学习视频,人工智能、机器学习、大模型书籍PDF。带你从零基础系统性的学好大模型!

第一阶段: 从大模型系统设计入手,讲解大模型的主要方法;

第二阶段: 在通过大模型提示词工程从Prompts角度入手更好发挥模型的作用;

第三阶段: 大模型平台应用开发借助阿里云PAI平台构建电商领域虚拟试衣系统;

第四阶段: 大模型知识库应用开发以LangChain框架为例,构建物流行业咨询智能问答系统;

第五阶段: 大模型微调开发借助以大健康、新零售、新媒体领域构建适合当前领域大模型;

第六阶段: 以SD多模态大模型为主,搭建了文生图小程序案例;

第七阶段: 以大模型平台应用与开发为主,通过星火大模型,文心大模型等成熟大模型构建大模型行业应用。

• 基于大模型全栈工程实现(前端、后端、产品经理、设计、数据分析等),通过这门课可获得不同能力;

• 能够利用大模型解决相关实际项目需求: 大数据时代,越来越多的企业和机构需要处理海量数据,利用大模型技术可以更好地处理这些数据,提高数据分析和决策的准确性。因此,掌握大模型应用开发技能,可以让程序员更好地应对实际项目需求;

• 基于大模型和企业数据AI应用开发,实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能, 学会Fine-tuning垂直训练大模型(数据准备、数据蒸馏、大模型部署)一站式掌握;

• 能够完成时下热门大模型垂直领域模型训练能力,提高程序员的编码能力: 大模型应用开发需要掌握机器学习算法、深度学习框架等技术,这些技术的掌握可以提高程序员的编码能力和分析能力,让程序员更加熟练地编写高质量的代码。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com