写点什么

大规模预训练模型:探讨与展望

  • 2022-11-17
    北京
  • 本文字数:5509 字

    阅读完需:约 18 分钟

大规模预训练模型:探讨与展望

第二期「澜舟NLP分享会」在 8 月 20 日圆满落幕,本期主题为《金融 NLP 场景下,大模型技术应用趋势》,我们邀请到来自复旦大学计算机学院邱锡鹏教授分享了“大规模预训练模型:探讨与展望”,本此演讲主要围绕大规模预训练语言模型展开讨论,并探讨大模型成功的原因、适用场景、未来发展方向以及身处大模型时代我们的机遇。 


错过直播的小伙伴可以通过 B 站“澜舟孟子开源社区”、微信视频号“澜舟科技”观看回放视频。另外,大家叶可以关注「澜舟科技」公众号,在后台回复关键词“0820”获取 PPT 资料。

背景

今天介绍的主题是对大规模预训练模型的探讨与展望。


目前,预训练模型对下游任务的提升非常明显,已成为自然语言处理乃至整个人工智能领域的基础模型。自然语言处理正在形成新的技术范式,即上游大规模的预训练模型配合下游任务的知识迁移调试。


现在,一个自然语言处理问题可以划为两部分的任务,分别为上游任务与下游任务。

上游任务:预训练语言模型

上游任务,即通过构建数据、构建预训练模型来把模型做大。当然,预训练模型并不是只需要做大就可以,有时也需要更贴合下游任务,但通常情况下我们会认为,模型越大,越可能带来更多的收益。因此,一部分人在尝试构建大规模的预训练模型,另一部分人则致力于将模型应用到下游的任务调试方面。


对于任务调试来说,我们发现,随着模型参数量的增加,模型的小样本的学习效果会有明显提升。这种小样本的学习能力也正是人工智能追求的目标之一,即通用人工智能,其具有非常强的学习能力。因此,我们希望知道,如果我们继续对模型的规模进行数量级的扩大与增加,能否真正实现通用的人工智能。这也是驱动学术界与工业界的很多研究者致力于把模型做大的原因之一。

然而,将模型做大并非易事,不仅需要各方面的努力,包括更多的数据、算力、基础设施等,都要跟上;同时,也要考虑模型本身的能力是否足够,以及预训练任务能否支撑我们得到更好的预训练模型。

下游任务:知识迁移调适

下游任务,即将已有的预训练模型更快更好的迁移到下游任务上。在下游任务的应用时,我们需要研究的问题也有很多。例如在效率的提升方面,早期我们使用 fintune 的方法对模型进行调参,但这种方法的效率非常低。因此后期就有人提出,采用只增加 adapter 调试器并只调一小部分的参数甚至不调参数,直接迁移到下游任务的方法是否可以提高效率。

预训练模型综述

目前,预训练模型综述的主要内容基本均由大模型应用的上游和下游两部分的研究构成。


图 1:预训练模型综述


关于预训练模型的综述,复旦大学的邱锡鹏团队发表了《Pre-trained Models for Natural Language Processing: A Survey》,对当今自然语言处理的预训练模型情况进行了梳理。其中内容包括但不限于:

  • 当前预训练模型的各种架构类型,

  • 上游预训练任务与模型,例如面向特定任务的多语言跨模态模型等。

  • 预训练模型在下游任务的调试方法,例如 Fine-tuning 与 Promote-tuning 等。

  • 预训练模型的压缩与效率优化,例如 Inference time 的优化等。

  • ......

大模型技术的探讨

本次分享会的主题是关于大模型的探讨与展望,在我们对大模型技术应用趋势的展望之前,让我们先思考几个问题:

问题一:大模型是什么?

就像神经网络通过其参数学习到了某种知识,预训练语言模型也应当是学习到了某种知识才得以解决问题。


然而,这个知识是关于什么的知识?是关于语言的知识吗?显然不是,对此我们很容易举出反例。我们人类学习语言,通常是不会通过维基百科来学习的,我们会通过其他的文字材料,如小说这类材料来学习语言。然而,维基百科的训练数据却是所有的预训练语言模型共用的。也就是说,预训练语言模型并不是“语言的模型”,而是“以语言承载的知识的另一种表现形式”。


维基百科承载的是人类的知识,这些知识是用语言的形式写下来的。所以,大模型其实是把这些知识由原来的文本形式、语言形式所承载的知识,转成以模型的参数来承载,完成知识转移。因此,我们可以把大模型看成一种隐式的知识库,或者一个参数化的百科全书。


此外,目前来看,大模型某种程度上只是“知识的搬运工”,它并没有生产知识。它所知道的都是隐含在它学习过的数据中,而在提供给它的以文本承载的知识中没有的内容,它是不会学习到的。当然这与知识的泛化不同,不生产知识不代表其没有泛化的能力。

问题二:预训练模型为什么会成功?

这里,邱老师表示,预训练模型其实一直都很成功。


从早期深度学习开始,初始的深度神经网络训练不深,因此使用 DBN 来做初始化,即先预训练 DBN,再将其参数赋予预训练模型。再如在计算机视觉 CV 方向,很多图像的下游任务都需要在 Imagenet 上做预训练。此外,早期自然语言处理领域的 word2vec 算法的预训练也是类似的过程。


预训练模型取得成功,可以从以下角度分析其原因:

  • 机器学习的角度:可以约束假设空间,并提高泛化性。

通常情况下,神经网络的参数空间非常大,特别是对于目前如 Transformer 这种复杂的模型。这种复杂模型如果遇到小规模数据的话非常容易过拟合。因此,模型的初始点非常重要,一个好的初始点有助于找到更好的局部最优解。而一个好的初始点就可以让后续的训练不会离其太远,也就隐含了约束假设空间、起到正则化的作用,从而提高它的泛化性。

  • 知识的角度:预训练模型学习了很多语言知识、世界知识,这些知识有助于其在下游任务上取得成功。

问题三:预训练模型真的不具备理解能力和常识推理能力?


图 2:预训练模型是否具备常识与推理能力


如图 2,在 2020 年 GPT3 的测试过程中,如果我们向模型提问太阳有几个眼睛,模型会回答太阳有一只眼睛。从这个例子中,我们会认为他可能是不具备常识的。当然,后期 GPT3 加入了相关的知识,其本身在不断更新并不断加入新知识,可以通过融入常识等知识去修正模型。


图片 3:神奇的 Prompt


近期,有一篇文章《Large Language Mod》,它提到,如果对这些大模型直接输入“超纲”的问题,它的回答可能是错误的,因为他没有经过严格的推理。神奇的是,如图 3,只要在每个回答前加入一个 prompt,这句话就是“Let's think step by step”,模型就可以按照它之前学习过的推理的路径,一步步的将正确答案生成出来。


因此,预训练模型并非真的不具备理解能力与常识推理能力,而是需要类似“Let's think step by step”这样的“咒语”,去挖掘我们还没有发现的能力。当然,这样的 prompt 也存在缺点,即其不具备通用性,对不同的任务可能需要换不同的 prompt。因此,这一问题也需要更深入的研究去逐渐改进。

问题四:预训练模型是自然语言处理的未来吗?

针对这个问题,邱老师给出的答案是:“预训练”是,“模型”不是。


一方面,未来的模型,一定是越来越大的,而我们的训练数据通常是不够的,所以一定需要通过某种预训练的方式去进行。当然,预训练本身的内涵很广,他不一定是语言模型的形式,也可能是其他的预训练任务的形式。


另一方面,目前我们的模型是以 Transformer 架构的,它虽然能量强,但本身还有很多天生的缺陷。因此我们认为,模型架构方面未来可能还会有迭代。但是这个迭代可能会越来越难,因为当我们越来越频繁的使用某种模型架构如 Transformer 时,它的生态建立的越来越完善,我们就会产生某种路径依赖。也就是说,当我们提出一个新的模型的时候,其实际应用效率可能没有 Transformer 高,因为我们整个架构已经是为 Transformer 做过优化的了。


但是,Transformer 的缺陷也非常明显,比如它不适合处理长文档。所以,尽管短期内可能还是 Transformer 作为主流,未来一定会有某种新的形态出现。


图 4:大模型同质化


如图 4 所示,目前主要使用的 Transformer 架构主要有以下三种:

  • 只使用 Encoder 的如 BERT 模型

  • 只使用 Decoder 的如 GPT 模型

  • 使用 Encoder 和 Decoder 的 BART/T5 模型。



可以看出,大模型的同质化越来越严重。当然,大模型的同质化并不完全是缺点,它相反会带来一个优点。

这个优点就是:模型统一之后,在自然语言处理的不同任务,就可以用一个模型来处理所有的问题;或者也可以将 Transformer 也应用到多模态或者视觉领域、音频领域等其他领域,都用一个架构来处理所有的问题,包括各个层面如感知、认知层面等的问题。因此,这也有助于不同学科之间更好地交融。

大模型技术的展望

大模型同质化的优点:范式统一

有了 Transformer 这种架构之后,或者说有了预训练模型的架构之后,首先在 NLP 领域带来的新的变化就是范式统一。NLP 里面的任务形式,多种多样。有分类问题、序列标注问题、匹配问题、阅读理解问题,结构化的学习问题、还有生成问题等等。它的早期的任务形式是多种多样的。复旦大学邱锡鹏团队在论文《Paradigm Shift in Natural Language Processing》中,总结了在自然语言处理里面的七种范式。这七种范式早期各自对应相应的任务。自从预训练模型出现之后,以 Encoder-Decoder 为例,如果大家要利用 T5 或 BART 这些模型的能力,就势必要把自己的任务转换成 T5 或 BART 所擅长的形式。通过这种方式,大模型的同质化间接地促进了自然语言处理的范式统一。


图 5:范式演变


近几年,预训练模型使得自然语言处理的范式发生了很大的迁移,如图 5 所示,左侧列出了七种不同的范式,可以看出,在 2017 年以前的每个范式是均匀、平行地发展的,并处理各自对应的任务。从 2017 年开始,特别是在 2018 年 BERT 问世后,范式发生了明显的转变。例如,分类的范式会逐渐的向 Match 或 MRC 转换。再如,很多任务都可以换换成序列到序列的范式,分类任务、匹配任务和序列标注任务都可以使用序列到序列的方式解决。而最近几年,一个语言模型加上一个 prompt 的这种范式会更加流行。


也就是说,预训练模型加速了自然语言处理的范式统一。这样既可以统一自然语言处理任务,也降低了自然语言处理的技术门槛。

语言模型即服务

当前,随着模型规模的增大,很多模型都是云端使用的。而云端的模型很难支持 Fine-tuning 等调参,它只是一个服务,用户传入文本,云端模型输出。


那如何更好地在下游任务做调试呢?这里也有很多研究。比如针对语言模型服务((Language-Model-as-a-Service))的场景,一个比较有代表性的调优方法叫黑箱调优。黑箱调优就是将云端的原模型作为黑箱,用一些无梯度优化的方法调优,如发一个 Query 后根据结果去调参。这种方法目前在一些小样本上,如 BBTV2 上,已经达到了和整个模型 Model-tuning 类似的效果,并且它需要调节的参数更少。

也就是说,通过调节更少的参数量与无梯度的优化的方法,就可以达到和梯度优化接近甚至更好的性能。因此,这也是一个非常有前景的应用场景。

大模型带来的问题

大模型也有可能带来一些问题。


早期的自然语言处理的很多模型,都是追寻机器学习范式的,即“训练误差-测试误差=泛化误差”,这是一种端到端的方式。但在预训练模型之后,我们把要解决的问题分成两步,即预训练+精调。然而,预训练模型时我们没有标准,我们并不知道怎样去设预训练的目标,使得它在下游任务的测试误差小,即训练与测试是不一致的。因此,它不是一种端到端的方式,到底什么样的目标对预训练是有效的,或者对下游任务是有效的,他们之间存在 gap。但这个 gap 是什么,我们目前不知道。


当然,语言模型越小,它可能在下游任务的泛化性会更好,但这也不完全正确。比如 GPT3 模型的训练并不是不断的迭代,让语言模型的困惑度最小,而是只要所有数据都见过一遍就结束了。因此,这种方式使得无论是预训练还是迁移,它的方案都可能不清晰。拥有丰厚资源的如大厂单位可能会更关注预训练的误差,而没有很多资源的可能更关注如何降低下游任务的测试误差。因此,有没有可衡量预训练模型有效性的任务指标也是大模型带来的问题之一。


前文提到的大模型同质化严重也会带来一定的缺点,如它会抹杀某种多样性。例如,基本很多论文都是基于 T5 的研究,而不是像以前一样,有多样化的研究。此外,目前我们依赖的 prompt 的方式比较繁琐,需要人为干预,因此可能还需要重回特征工程。最后,大模型能耗高、不环保也是一个问题。

大模型带来的机会

如果把大模型的生命周期,分成建立模型结构、预训练、精调、部署与推断的话,那么每个阶段都有很多的机会去做:

  • 建立模型结构阶段:提高模型效率,建模非注意力机制以及设置稀疏路由等以减少他的推断时间。

  • 预训练阶段:提升训练效率、知识嵌入与知识更新等。

  • 精调阶段:下游知识迁移(Y-Tuning),上下文学习(In-Context Learning)等。

  • 部署阶段:可靠性(Reliability),统一范式(Unified Paradigm)等。

  • 推断阶段:推断效率提升(ELUE,Towards Efficient NLP).


图 6:NLP 技术的演进与未来展望

最后,图 6 是对 NLP 的技术范式演进的总结与未来的展望。


早期机器学习时代,我们常用的技术叫特征工程,也就是我们需要找很多 Feature 特征。后来,在深度学习时代,我们就转变为架构工程,需要找合适的神经网络架构。比如我们对 CNN、LSTM 等模型做架构上的变化,使得其再下游任务的效果最优。此后还有目标变化,这也就是前文提到的范式变化,如将匹配任务的目标转换成序列生成的目标。近两年, 我们就会转为 Prompt 工程,又称提示工程,即我们同意利用如 GPT 或 T5 模型,对不同的任务找到合适的 Prompt 即可。


那么,未来又是什么呢?这里,邱锡鹏表示,未来可能会关于数据。如果将所有任务的数据都结构化为统一形式,这样就可以利用当下最成功的预训练模型,如 GPT、T5 模型等。这也得益于大模型的同质化,如果我们能够将所有任务的数据统一,不管什么任务我们都可以利用特定的模型了。因此,未来的机会很有可能会在数据方面。


那在数据方面,我们要考虑的就是如何将各种任务的数据都结构化为统一的形式。通过这种方式,我们就可以利用多任务的数据去调试或做知识迁移,这样也可以加速 NLP 模型与技术的落地。

发布于: 刚刚阅读数: 2
用户头像

还未添加个人签名 2022-06-09 加入

一起探索自然语言处理(NLP)领域的前沿技术!官网:langboat.com,关注公众号「澜舟科技」加入孟子开源社区。

评论

发布
暂无评论
大规模预训练模型:探讨与展望_澜舟孟子开源社区_InfoQ写作社区