谷歌FLAN-T5作者亲讲:5400亿参数,1800个任务,如何实现大语言模型“自我改进”...

news2025/7/11 12:14:56

2021年,谷歌的研究者们提出了FLAN大模型,其基于Instruction Tuning的方式,极大地提升了大语言模型的理解能力。同时,各种Prompting方法的涌现预示着针对大模型的下游微调将成为研究领域关注的重点。

近日,谷歌研究者们再一次推进了Instruction Tuning的性能水平,模型模型参数上升至540B,微调任务的数量则高达1800多个,此外他们还采用了最新的Prompting机制——Chain of Thought(CoT),让语言模型有了自我改进的能力。

智源社区邀请了该工作的主要研究者——谷歌软件高级工程师侯乐博士。请他讲解新型微调方式在提升大规模语言模型性能方面的思路。

efa55360c02503263a58bf4252afb7cc.png

侯乐

侯乐博士近期在Google的研究主要集中在NLP方面,包括高效的语言模型训练、指令微调和提示工程等。他的一个核心兴趣是通过更好的微调和提示工程来提高最先进语言模型的推理能力。在加入谷歌之前,侯乐在纽约州立大学石溪分校获得了博士学位。博士在读期间,他专注于分析高分辨率图像,如卫星和医学图像。

作者:侯乐

整理:白鹏

0a1e4c8191a09b4193aeb333a7144bb1.png

背景:从Fine-tune到Prompting,

提升大模型性能方法有多少?

c45726bbe9ef5a476ae5342ec8295b0e.png

3-4年前的语言模型主要是用具体的数据在特定任务上训练,比如翻译任务,通过大量训练数据来训练翻译模式。

fe0deab6032dc1caefa4fbb5ed7d60d7.png

BERT出现以后,先有了Pretrain然后再进行Finetune。预训练时候会训练模型对语言的理解能力,比如BERT是一个Mask Language model。如果是只有解码器的模型,那就让模型做Next token prediction,比如已知“你好”,让模型预测“吗”。预训练后做下游的具体任务效果会好很多。

4644c5b0520b28ec06a5606e807b8247.png

随着GPT-3等大模型出现,Language model(LM)变成了Large Language model(LLM),会出现新的应用方法,就是In-context few-shot learning。由于训练数据集有“问题1,解答1。问题2,解答2。”这样的数据存在,模型可以自动预测下一句。例如模型输入是“Hello, world!(你好,世界!)How are you?”,模型可以预测出“你好吗?”。所以这样的模型是一个In-context的样例学习模式,例子是什么格式,模型可以做Next token prediction。这样学习的好处是可能很少的训练样本就可以让大语言模型微调训练的很好。

b26c4b6110f573a4d6013c50f7eabbb9.png

我们将例子中“Hello, world!你好,世界!How are you?”就称为Prompt,Prompt工程是指如何改变输入Prompt的格式,能够更加发挥大模型的特性。

e87c4b8f7306da4d58f67260e5ab3597.png

这个工作《Emergent abilities of large language model》是研究在语言模型足够大的时候,出现并解决In-context few-shot问题的能力。

a9013d75ae3bc4595c22a44b22b18b89.png

1c03a46c25ed6d129884015256bf74b6.png

bc41eca77ce0dd665759e3c5eb3f3ce6.png

在Open AI的一些例子中,也可以看出模型学习样例的能力也很强。

deb33fe8316007d9f55dd544d6f30d8b.png

今年随着Chain of thought概念的兴起,也是Prompt工程中里程碑意义的方法,使得模型不仅能学习解答问题,更能学习解答问题的方式。

eca5539e79ea55955bccfeb8b2b26e33.png

上面例子也能说明这一点,在训练数据中要有思考方式的数据,模型才能完成思考的推理输出,明显加强了模型的预测能力,模型也变得较慢,原来的模型只需要预测结果的Token,现在需要预测推理的所有结果Token。实际是用计算量换取模型结果准确率,模型更具有解释性,对于可解释AI也很重要。

3dc156fded524dd0ff87c171c605fe55.png

在SuperGLUE的Benchmark中,模型已经比人类要强很多。

638c66761c64865d4a30d9cb3440ee9d.png

模型现在已经很强,只要你给它3-5个例子,让模型做什么它就能完成什么。已经不是原来的该需要输入成千上万数据的情况。

a0d96c3a55cc86f5633ea13b9b0e72d1.png

人类在学习时当然也基于事例,很多时候更是基于指令学习或者根据指令知道要做什么。实际中给定事例比给定指令要更好,但是我们实际中给定指令也基本是知道要怎么做。

遵循人类指令,

举一反三地完成任务:指令微调

7f999ceaefa5938b0c658d0addbc1753.png

在SAT exam样例中,同样是告诉我们如何做的指令,所以你也根据指令去做就能完成任务,受到以上的启发,我们提出了指令微调Instruction finetuning[1]。

df234b5e8772e920e4561e59cf23292f.png

Instruction finetuning,主要是想让语言模型学习理解指令,不是想让语言模型解决成千上万任务,当然训练方式中是有很多任务,因为不同任务有不同的指令,所以目的还是想让模型理解这些指令,解决各种任务问题。在真实世界中,总会有新任务,模型只要学习新任务的新指令,那么就能解决新任务。指令学习本质是把语言模型的问题用语言讲出来。

a9046a3674129a1f71876af4e00fa7ce.png

这是我们在Hugging Face上的一个演示模型,i-like-flan。Flan就是指令微调的语言模型,现在在Hugging Face上可以看到Flan-T5。

4f4936599d8ceb3f68d1aaab60f9f215.png

T5原本的训练方式是通过prefix,实际不是通过自然语言方式告诉模型想要模型做什么。

2162c492d7f435da898e0e4aa7c3a235.png

Flan这种方式通过Instruction方式,也就是人类可以看懂的方式去告诉模型要做什么。

83578b27035ffead28090a1b14bfb37a.png

更大规模、更多任务:

指令微调的大规模扩展

875f3559bca664046142c584fda26734.png

我们最新的工作Scaling Instruction-Finetuned Language Models[2]将现有的几乎所有任务都加进去,用上大模型,进行指令微调看模型的极限效果。

c989d99383e954b169be3b54d92a7f5b.png

我们从三个方面改变指令微调,一是改变模型参数,提升到了540B,二是增加到了1836个微调任务,三是加上Chain of thought微调的数据。

4c6fdd21b1a430e7c88790f2f9d8e785.png

训练模型时的微调任务主要有Muffin、T0-SF、Reasoning、Natural Instructions v2四类一共1836个任务,每个任务大概10个zero-shot指令。测试模型的任务有MMLU、BBH、TyDiQA与MGSM的多语言多任务的考试任务。

c2cadb9f70d09907c3936272992fbfce.png

比如,Massive Multitask Language Understanding(MMLU)数据集中的数据考验模型对于世界理解的能力,模型必须得具备大量知识。

a63808931f85956d8bf56dc7304a23a9.png

BIG-Bench Hard(BBH)是在BIG-Bench的subset上所有具有挑战性的任务,因为已经有不少任务对于大模型来说已经可以解决的不错。上图例子中问题就很难,问的是坐标连起来是什么图形。

3d7e12bbef845af0fc5e30e1764ee660.png

MGSM是一个多语言的问答问题,考验模型跨语言回答问题的能力。

1079ff5c0689bfcf35e410bf3c7f1714.png

Instruction Template也很重要,模板越多,模型能够更好的学习指令。当然我们也设置了很多指令模板,是Instruction、exemplar、Chain of thought的组合,最终指令模板有1500多个。

3a728f3f5a338340f81a26efd321ea81.png

通过实验,模型在MMLU任务上表现很好。Chinchilla是Deep Mind的提出的方法,Chinchilla 5-shot达到67.6%时已经很震撼,我们的Flan-PaLM 5-shot:Cot+SC可以达到75.2%。MMLU任务重要性在于主要考验模型对于世界的理解能力。语言模型大部分还是跟对于世界理解能力很相关的。

Hypermind在我们论文出来之前已经预测过在2023年模型的得分能达到73.2%,2024年达到75%。我们现在已经达到了。斯坦福的Metaculus小组提出我们如果可以结合很多模型,如果某个模型在数学上好,就用这个模型在MMLU的数学subset上面学习,另外模型在物理上表现好,就用那个模型在MMLU的物理subset上面学习。如果这样,在2023年他们预测能达到82.7%,在2024年达到87.6%。

e40ccb4775e19cec355d25dacb19f4de.png

实验中,我们也比较了指令的数量与模型大小哪一个更重要?如果目的是使得模型达到人类水平,重点是训练更大模型还是增加更多指令微调的任务。左边图可以看出,在一定的任务数量下,模型参数从8B到62B到540B,模型效果有明显提升。如果在一定参数量下,增加任务模型效果会有提升,但在一定数量任务后,会达到饱和。右图也是说明同样的问题。

6edad8430f71a5209da3c3c09c49d07a.png

我们也验证了加了Reasoning数据的结果,也就是加上Chain of thought的数据去微调的结果,整体加上Chain of thought的数据去微调效果会更好。

2a2cac1e049ecdc02cd4faeec998c285.png

我们也测试了T5、PaLM系列模型的结果,T5是编码器-解码器架构,PaLM的一个解码器架构,加上我们的指令微调方式后效果都有提升。

c52c8f80a0eb2be1a94c872fdf0eae62.png

最终,我们想说明的是我们应该永远都微调一个模型,而不是用一个预训练的模型做Prompt工程。微调模型用到的资源只有预训练用到资源的百分之零点几,我们可以得到明显效果的提升,对于大、小模型都适用。

a5ed48f41181fab10d52f6ae4bafe826.png

大模型也可以自我思考:

让模型自己改进自己

机器学习还是需要成千上万的任务与数据,人类大脑可能可以直接冥想思考,也是无监督训练方式,我们这里起名叫Self-Improve,比较接近人类思考方式。我们最近的工作[3]就在研究这个问题。

bc59703401d0fe4cce87db7cc14b803c.png

我们如何教大语言模型思考?我们可以先让大语言模型生成一些问题,通过Few-shot方式生成。比如先给第一个、第二个问题,模型生成第三个问题。

679a466db3dc7f1a6d05e6562d0e7503.png

模型生成成千上万的新问题,新问题没有答案,让模型利用计算资源尽可能去解决这些问题。

8869b499266a749c84f47638f711020c.png

我们使用一种Majority voting的方式采样解码得出最后答案。这样可以明显提升模型的能力,比如在算术问题上准确率从56.5%提升到74.4%。然后再把这些生成的问题与答案当成训练数据再去训练模型。

32650173cb4c925abef9dd2412b7afd8.png

这样整个过程模拟人类的学习过程。

39d51161513ad1f364c5844bc7d0e0ff.png

可以看到,算术能力从56.5%提升到了66.2%,如果加上self-consistency,可以从74.4%提升到78.1%。如果假设问题是完美的,只用数据集中的问题,不用问题的答案,那么提升效果更明显,算术能力从56.5%提升到了73.5%,如果加上self-consistency,可以从74.4%提升到82.1%,已经跟SOTA相近。

7f5a953b7b7bce25e442a1da78ccc0ff.png

实验结果表明,在GSM8K、DROP上接近SOTA,在ARC-c、OpenBookQA、ANLI-A2、ANLI-A3上取得了SOTA结果。

5e98c40736787892890d5c6c253bdb9d.png

另外,实验结果也表明,即便是模型应用在没有见过的数据集上,效果仍然也有提升。所以,自我提升的学习并不是让模型适应了某些任务,而是让模型有更好能力的提升。

8416e843e0fc2837a661ce7809212991.png

Instruction finetuning就是Finetuning language model to follow instructions,训练中有1800左右个任务,接近2000个Instruction Template。模型通过学习Instruction,在没有见过的任务上表现依旧不错。Self-improvement是让模型自己生成问题,自我思考,学习出答案,在推理任务上取得了SOTA结果。

参考文献

[1] Wei J, Bosma M, Zhao V Y, et al. Finetuned language models are zero-shot learners[J]. arXiv preprint arXiv:2109.01652, 2021.

[2] Chung H W, Hou L, Longpre S, et al. Scaling Instruction-Finetuned Language Models[J]. arXiv preprint arXiv:2210.11416, 2022.

[3] Huang J, Gu S S, Hou L, et al. Large Language Models Can Self-Improve[J]. arXiv preprint arXiv:2210.11610, 2022.

现场问答

1、在工程中,Prompt tuning中有哪些Tricks?

侯乐:Trick的复现性不是太高,换模型可能就不适用,做Prompt tuning时尽量做的是直接提升的方法,MMLU任务上我们用few-shot的方式解答,给了一个通用的Trick是训练时模型设计更多样,如果模板设计的好,能匹配到下游任务的提问,那么效果就会好一些。

2、对于没有Ground truth的任务,可以使用您总结中提到的两种方法吗?

侯乐:如果没有Ground truth的任务,对于Instruction finetuning就没有应用方式,但对于Self-improvement是可以的。因为Self-improvement是生成的Ground truth,在训练时也很有用。

3、语言模型是否可以拥有物理直觉?比如三个齿轮一字排开,相邻齿轮咬合,提问转动最左边的齿轮,最右边怎么转动?

侯乐:我觉得可能是可以做到的,因为训练数据中可能有这样的样本。首先模型做数学任务已经不错,也是通过数据硬学习。

4、Zero-shot CoT中效果貌似更差了,如果采用这个模型,是不是自己得准备很多样本?

侯乐:CoT不一定比没有CoT要好,因为CoT在推理问题上,有中间解答过程,回答时候推理出来可能效果比较好。但有一些问题要基于知识,推理不出来,那么这类问题可能效果就不好。所以分开推理的任务和知识的任务更能明显比较。此外,如果你不给模型few-shot的样子,肯定不如给样例的好。预训练的模型做CoT任务可能不如微调后做CoT。

5、现在已经有哪些模型开源了?

侯乐:T5系列在Hugging face上开源,也有Demo。尤其是Flan-T5。

6、大模型的评测指标中,可能与人类的指标相似,实际使用中,模型可能不好用,怎么看这种Gap?

侯乐:模型类似像一些有交流障碍的人,预训练相当于看了一堆书,很聪明,做题能力也挺强,但是没交流过,所以交流不通顺。我们经过指令微调后,会提升交流能力,但是也还是不高。

7、人类执行的指令经过大量学习,指令学习和预训练的结合怎么保持平衡?

侯乐:我认为如果指令微调的数据足够多,是不需要预训练的数据。目前预训练是因为没有太多的指令微调数据,指令微调数据需要人为构造,质量非常高。

8、Flan-T5可以做逻辑计算吗?

侯乐:这得看训练数据中是否有逻辑的问题,能否激发出模型的这方面能力。

9、垂直领域需要做文本摘要任务时,提取需要的文本关键信息,这种情况下使用Chain of thought会比Prompt更好吗?

侯乐:我认为不会,我们训练数据中没有摘要Chain of thought的数据。摘要这种任务还是不太适合Chain of thought。

10、语言模型对于长文本输入预训练有哪些技巧?将《三国演义》整本书输入,能生成故事线逻辑吗?

侯乐:Transformer的计算复杂度跟输入成平方关系,《三国演义》整本书太长了,没法计算。即便是能计算,但是attention效果也不太好。比如现在long-T5解决长文本的问题,attention到每一页的Token,但是我认为效果还不好。目前大约是处理1000个左右英文单词。

11、指令微调在推理或知识任务上进行过有效性分析吗?

侯乐:知识任务没有太多分析。我们也注意到在MMLU中,我认为99%以上知识都是从预训练的训练数据中学习来的,微调数据中没有知识,所以基本不会学习到知识。

12、指令微调如何结合预训练做更多的应用?

侯乐:现在已经有ex-T5,将下游微调的数据与预训练的数据混合在一起训练,但是规模还不大,比较有前景。现有针对各个任务数据再微调太麻烦。

13、指令微调对语言模型的落地应用有哪些帮助?

侯乐:会使得模型变得更鲁棒,更好应对各种情况。比如一个模型没有指令微调,不同人提问方式不同,答案可能有问题,所以这种也会提升鲁棒性,我们做的工作也在做这些工作。

活动视频回放:https://event.baai.ac.cn/activities/580

更多内容 尽在智源社区公众号

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/36703.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

电影主题HTM5网页设计作业成品——爱影评在线电影(10页面)使用dreamweaver制作采用DIV+CSS进行布局

HTML实例网页代码, 本实例适合于初学HTML的同学。该实例里面有设置了css的样式设置,有div的样式格局,这个实例比较全面,有助于同学的学习,本文将介绍如何通过从头开始设计个人网站并将其转换为代码的过程来实践设计。 文章目录一、网页介绍一…

企业知识库有什么价值?

图为简道云企业知识库让雇员对知识管理深感激动的最差课堂教学 简道云知识库:http://s.fanruan.com/rgdrd 我们可以借助创建知识程序库应用领域知识管理方法论,来同时实现重新分配知识。 最终目标是让每一人都有参与 KM 的积极主动性, 以期…

DOAW咖啡品牌是如何生意增长的?

上海人爱喝咖啡,早已不是什么秘密,上海是中国咖啡市场的战略要地,以行业而论,咖啡赛道有星巴克、瑞幸等大品牌,同时也有不少新品牌不断冲击线下线上渠道,使这个行业内卷加速。 DOAW虽然成立时间短&#xff…

【深度学习】yolov5 tag7.0 实例分割 从0到1的体会,从模型训练,到量化完成

这里记录下yolov5 tag7.0的实例分割,因为也用过paddle家族的实例分割,能够训练出来,但是开放restiful api时遇到点小问题,还是yolov爽啊!!通过这篇博文,您可以一步步的搭建自己的分割网络。 文章…

python+SQL sever+thinter学生宿舍管理系统

pythonSQL severthinter学生宿舍管理系统一、系统介绍二、功能展示1.主页2.用户登陆3.学生信息三、数据库四、其它1.其他系统实现一、系统介绍 系统主要功能学生信息管理、管理员信息管理、核酸信息管理等。 二、功能展示 1.主页 2.用户登陆 3.学生信息 三、数据库 /*Navic…

汉罗塔汉洛塔c++,看不懂ni打我

汉罗塔汉洛塔c,看不懂ni打我 大哥大姐手下留情 别打我!!! [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GC9f81Hm-1669391569678)(C:\Users\ASUS\Desktop\汉罗塔 . Input第一行为一个正整数nOutput若干行&#…

vue3新一代状态管理器 — pinia的学习与使用

目录一、vuex与pinia特性二、使用pinia2.1 安装pinia2.2 项目引入2.3 创建store2.4 使用storegetteraction2.5 修改state1、直接修改2、使用$patch3、使用actions2.6 storeToRefs一、vuex与pinia Pinia 最初是为了探索 Vuex 的下一次迭代会是什么样子,结合了 Vuex 5…

4. 云计算中的存储基础知识

4.1 物理磁盘类型和存储设备类型 虚拟化中的存储架构 物理磁盘类型 - SATA盘 SATA的全称Serial Advanced Technology Attachment,SATA(Serial ATA)口的硬盘又叫串口硬盘。SATA采用串行连接方式,串行ATA总线使用嵌入式时钟信号&a…

kubernetes组件 Controller manager深刻认知

kubernetes组件 Controller manager深刻认知Controller manager常见的controllerController manager的工作流程informer的内部机制控制器的协同工作原理ReplicaSet controller 是如何被管理的?statefuleset 和deployment controller是如何控制滚动升级的statefulese…

学习基于html和JavaScript的滑动图片拼图验证源码

之前的文章《使用C#中的GDI功能实现图片填充验证方式》中介绍过使用GDI在Winform中实现图片拼图验证的思路,学了html中的canvas使用方式后,也可以照搬思路实现,只不过没有在Winform中方便。但是在网上看了不少基于html和JavaScript的滑动图片…

【数据结构】栈的模拟和使用理解

学习目录栈(Stack)栈的概念栈的使用栈相关的应用场景栈的模拟实现中缀表达式 转 后缀表达式栈(Stack) 栈的概念 栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作. 进行数据插入和删除操作的一端称为栈顶,另一端称为栈底&a…

关于vba代码运行时错误1004 应用程序定义或对象定义错误问题

一、错误描述 将Excel所有工作表,汇总到一个工作表中: 在thisworkbook中运行如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 Su…

大数据面试题(五):Hadoop优化核心高频面试题

文章目录 Hadoop优化核心高频面试题 一、Mapreduce 跑的慢的原因? 1、计算机性能 2、I/O 操作优化 二、Mapreduce优化方法 1、数据输入 2、map阶段 3、reduce阶段 4、IO传输 5、数据倾斜问题 6、常用的调优参数 三、HDFS小文件优化方法 1、HDFS小文件…

【MATLAB】常见语法结构和实用操作

目录 语法结构 循环(遍历)结构 函数结构 画图操作 绘制函数图像 ezplot figure多图绘制 创建多项式 按照系数创建多项式 利用多项式零点创建多项式 解方程组 语法结构 循环(遍历)结构 与其它编程语言类似,…

常用辅助类

CountDownLatch 应用场景:1.多线程任务汇总。2.多线程任务阻塞住,等待发令枪响,一起执行。 减法计数器 每次有线程调用,数量-1,当计数器归零,countDownLatch.await()就会被唤醒向下执行。 import java.uti…

【代码随想录】二刷-二叉树

二叉树 《代码随想录》 二叉树的遍历方式 深度优先遍历: 前序遍历(递归法、迭代法): 中左右中序遍历(递归法、迭代法): 左中右后序遍历(递归法、迭代法): 左右中 广度优先遍历: 层序遍历(迭代法) 二叉树的定义 struct TreeNode{int val;TreeNode* left;TreeNode* right;TreeN…

无线传感器网络:网络层

文章目录Challenges for RoutingEnergy EfficiencyScalabilityAddressingRobustnessTopologyApplicationRouting MetricsQuality-of-Service (QoS)Minimum HopEnergyMinimum energy consumed per packetMaximum time to network partitionMaximum average energy capacityMaxim…

Java并发-操作系统,进程,线程,并行并发?

我们首先来看看,三者之间的关系,从图中可以看到 操作系统是包含多个进程的容器;而每个进程又是容纳多个线程的容器。什么是进程?官方定义: 进程(baiProcess)是计算机中的程序关于某数据集合上的…

详解:网络虚拟化卸载加速技术的演进

在传统的应用场景中,服务器资源过剩情况普遍,为了充分利用服务器资源,产生了虚拟化技术。虚拟化技术以牺牲部分效率为代价提升了资源的使用率,将原来需要硬件完成的工作,通过软件模拟的方式,满足多个云租户…

初识Qt Quick

讲讲最近几年Qt的热门技术Quick这一块了。 啥是Qt? 哦,这是一个宣称可以跨任意平台,开发各种场景应用软件的开发框架。从三个维度来讲,就是开发库framework,集成开发平台IDE,以及成熟的开发思维模式。 Q…