ARTS - Tip - LLM

大型语言模型 (LLM)

  • ChatGPT 是否带来了NLP乃至AI领域的研究范式转换?如果是,那会带来怎样的影响?
  • LLM从海量数据中学到了什么知识?LLM又是如何存取这些知识的?
  • 随着LLM规模逐步增大,会带来什么影响?
  • 什么是In Context Learning? 为什么它是一项很神秘的技术?它和Instruct 又是什么关系?
  • LLM具备推理能力吗?思维CoT 又是怎么做的?

NLP研究范式的转换

范式转换1.0:从深度学习到两阶段预训练模型

时间范围,大致在深度学习引入NLP领域(2013年左右), 到GPT 3.0 出现之前(2020年5月左右)。

在Bert 和 GPT模型出现之前,NLP领域流行的技术是深度学习模型,而NLP领域的深度学习,主要依托一下几项关键技术:

  • 以大量的改进LSTM模型及少量的改进CNN模型作为典型的特征抽取器
  • 以Sequence to Sequence (或叫 encoder-decoder亦可) + Attention 作为各种具体任务典型的总体技术框架

在这些核心技术加持下,NLP领域深度学习的主要研究目标,如果归纳一下,是如何有效增加模型层深或模型参数容量。就是说,怎么才能王encoder和decoder里不断叠加更深的LSTM或CNN层,来达成增加层深和模型容量的目标。 这种努力,尽管确实不断增加了模型层深,但是从解决具体任务的效果角度看,总体而言不算很成功,或者说和非深度学习方法相比,带来的优势不算大。

深度学习之所以不够成功,我认为主要原因来自于两个方面:

一方面是某个具体任务有限的训练数据总量。

​ 随着模型容量的增加,需要靠更大量的训练数据来支撑,否则及时你把深度做起来,任务效果也做不上去。而在预训练模型出现之前,很明显这是NLP研究领域一个严重问题;

另一个方面是LSTM/CNN特征抽取器,表达能力不够强。

​ 计算给你再多的数据也没用,因为你不能有效的吸收数据里蕴含的知识。

主要应该是这两个原因,阻碍了深度学习在NLP领域的成功突围。

Bert/GPT 这两个预训练模型的出现,无论在学术研究角度看,还是工业应用角度看,都代表了NLP领域的一个技术飞跃,并带来了两个领域研究范式的转换。这种范式转换带来的影响,体现在两个方面:

首先,是部分NLP研究子领域的衰退乃至逐步消亡;

其次,NLP不同子领域的技术方法和技术框架日趋统一,在Bert出现后一年左右,技术栈基本收敛到两种技术模式中。

影响一:中间任务的消亡

NLP 是一个宏观研究领域的统称,有各种子领域与子方向,如果从任务的性质角度,可以把任务分成两大类,一类叫中间任务,依赖叫最终任务。

典型中间任务包括:中文分词、词性标注、NER、句法分析、指代消解、语义Parser等,这类任务一般不解决应用中的实际需求,大多数是作为哪些解决实际需求任务的中间阶段或者辅助阶段存在的。最终任务包括文本分类、文本相似性计算、机器翻译、文本摘要等。这类任务特点是每个子领域都解决某个实际需求,任务结果基本能直接呈现用户。

按理说,中间任务不该出现,这是NLP技术发展水平不够高的一种体现。从Bert/GPT出现后,其实就没必要做中间任务了,因为通过大量的预训练,Bert/GPT 已经把这些中间任务作为语言学特征,吸收到了Transformer的参数里,此时我们完全可以端到端直接解决那些最终任务,而无需对这种中间过程专门建模。

影响二:不同研究方向技术路线的统一

如果对最终任务进一步分类,大致分为两大不同类型的任务:自然语言理解类任务和自然语言生成类任务。如果排除掉中间任务的话,典型的自然语言理解类任务包括文本分类、句子关系判断、情感倾向判断等,这种任务本质上都是分类任务,就是说输入一个句子,或者两个句子,模型参考所有输入内容,最后给出属于哪个类别的判断。生成类也包含很多NLP研究子方向,如聊天机器人、机器翻译、问答系统等。生成类任务的特点是给定输入文本,对应的模型要生成一串输出文本。

自从Bert/GPT模型诞生后,出现了明显的技术统一趋向。首先NLP不同子领域,特征抽取器都逐渐从LSTM/CNN统一到Transformer上。Transfomer不仅同意了NLP诸多领域,也逐渐替换图像处理各种任务中被广泛使用的CNN等其他模型的进程之中,类似的,多模态模型目前也基本采用了Transformer模型。

其次,大多数NLP子领域的研发模式切换到了两阶段模式:模型预训练阶段+应用微调(Fine-tuning)或者应用Zero/Few Shot Prompt模式。更准确说,NLP各种任务其实收敛到了两个而不同的预训练模型框架里:对于自然语言理解类任务,其技术体系统一到了以GPT2.0为代表的自回归语言模型+Zero/Few Shot Prompt模式。

范式转换2.0:从预训练模型走向通用人工智能(AGI,Artificial General Intelligence)

这个范式转换所涵盖的时间范围,大致在GPT3.0出现之后(2020年6月左右),知道目前为止,我们应该处于这个范式转换过程中。

ChatGPT 是出发这次范型转换的关键节点,但是在InstructGPT出现之前,其实LLM处于这次范式转换前的一个过渡期。

过渡期:以GPT3.0为代表的 自回归语言模型+Prompting模式占据统治地位

两个原因:

首先Google T5模型,在形式上统一了自然语言理解和自然语言生成任务的外在表现形式。

第二个原因,想要0示例提示或少数示例提示语的方式做好任务,必须采取GPT模式。

为什么要追求Zero shot(0示例提示语)/few shot prompting(少数示例提示语)的方式来做任务呢?

首先要搞清楚,什么样的LLM模型,对我们是最理想的?

  • 首先LLM要有强大的自主学习能力
  • 其次LLM应该能解决NLP任何子领域的问题,最好是任意领域的问题都能得到很好的回答
  • 再者,我们使用LLM解决某个领域问题时候,应该用人类习惯的表达方式,就是说LLM应该理解人类命令

所以,为什么要追求Zero shot / few shot prompting 来做任务?

第一,这个LLM模型规模必然非常巨大,有能力做出这个模型或改动这个模型参数的机构必然少。而任务需求方是千万中小机构或个人,就算把模型开源,他们也无力部署这个模型,更不用说用Fine-tuning模式来修改模型参数了。所以我们应该追求不修正模型参数,就能让任务需求完成任务的方式。这也是为何超大模型一定会追求走向AGI的现实因素。

第二,zero shot prompting ,few shot prompting ,甚至促进LLM推理能力的思维链(CoT , Chain of Thought) Prompting 。zero shot prompting的初衷,其实就是人类和LLM的理想接口,直接用人类习惯的任务表述方式让LLM做事情,但是发现LLM并不能很好的理解,效果也不好。继续研究发现,对于某项任务,如果给LLM 几个示例,用这些示例来代表任务描述,效果比zero shot prompting好,于是大家都去研究更好的few shot prompting技术。所以,few shot prompting 或者In Context Learning是一种过渡时期的技术。

ChatGPT 的出现,改变了这个现状,用Instruct 取代了Prompting, 由此带来新的技术范式转换,并产生若干后续影响。

影响一:让LLM适配人的新型交互接口

ChatGPT应该是目前所有的现有技术里,最接近理想LLM的技术方法。如果归纳下ChatGPT最突出特点的话,我会用下面八个字:“能力强大,善解人意”。

可以看出,ChatGPT的最大贡献在于:基本实现了理想LLM的接口层,让LLM适配人的习惯命令表达方式,而不是反过来让人去适配LLM,绞尽脑汁地想出一个能Work的命令(这就是instruct技术出来之前,prompt技术在做的事情),而这增加了LLM的易用性和用户体验。是InstructGPT/ChatGPT首先意识到这个问题,并给出了很好的解决方案,这也是它最大的技术贡献。相对之前的few shot prompting,它是一种更符合人类表达习惯的人和LLM进行交互的人机接口技术。

而这必将启发后续的LLM模型,继续在易用人机接口方面做进一步的工作,让LLM更听话。

影响二:很多NLP子领域不再具备独立研究价值

ChatGPT证明了我们现在是可以直接去追求理想LLM模型的,那么,未来的技术发展趋势应该是:追求规模越来越大的LLM模型,通过增加预训练数据的多样性,来涵盖越来越多的领域,LLM自主从领域数据中通过预训练过程学习领域知识,随着模型规模不断增大,很多问题随之得到解决。研究重心会投入到如何构建这个理想LLM模型,而非去解决某个领域的具体问题。这样,越来越多NLP的子领域会被纳入LLM的技术体系,进而逐步消失。

影响三:更多NLP之外的研究领域将被纳入LLM技术体系

接下来,我们来梳理下GPT 3.0之后LLM模型的主流技术进展。如理想LLM模型所示,相关的技术其实可以分为两大类;一类是关于LLM模型如何从数据中吸收知识,也包括模型规模增长对LLM吸收知识能力带来的影响;第二类是关于人如何使用LLM内在能力来解决任务的人机接口,包括In Context Learning和Instruct两种模式。思维链(CoT)prompting这种LLM推理技术,本质上也属于In Context Learning,因为比较重要,我就把它们单独拎出来讲一下。

学习者:从无尽数据到海量知识

从目前研究结果看,Transformer是足够强大的特征抽取器,尚不需要做特别的改进。那么通过预训练过程,Transformer学到了什么?知识是如何存取的?我们又如何修正错误知识?本节讲述这方面的研究进展。

求知之路:LLM学到了什么知识

LLM从海量自由文本中学习了大量知识,如果把这些知识做粗略分类的话,可以分为语言类知识和世界知识两大类。

记忆之地:LLM如何存取知识

显然,知识一定存储在Transformer的模型参数里。从Transformer的结构看,模型参数由两部分构成:多头注意力(MHA)部分占了大约参数总体的三分之一,三分之二的参数集中在FFN结构中。MHA主要用于计算单词或知识间的相关强度,并对全局信息进行集成,更可能是在建立知识之间的联系,大概率不会存储具体知识点,那么很容易推论出LLM模型的知识主体是存储在Transformer的FFN结构里。

知识涂改液:如何修正LLM里存储的知识

第一类方法从训练数据的源头来修正知识

第二类方法是对LLM模型做一次fine-tuning来修正知识

另外一类方法直接修改LLM里某些知识对应的模型参数来修正知识

规模效应:当LLM越来越大时会发生什么

我们可以选择放大训练数据,并同比例地减少LLM模型参数,以达到在不降低模型效果的前提下,极大缩小模型规模的目的。缩小模型规模有很多好处,比如在应用的时候,推理速度会快很多等,无疑这是一个很有前途的LLM发展路线。

人机接口:从In Context Learning到Instruct理解

智慧之光:如何增强LLM的推理能力

目前很多研究已证明LLM对于知识具有强大的记忆能力,但是,一般我们不会因为一个人记忆能力强,就说这人很聪明,是否具有强大的推理能力,往往是我们判断一个人是否聪明的重要标准。类似的,如果LLM的效果想让人觉得很惊艳,强大的推理能力是必备的。推理能力本质上是综合运用很多相关知识点,去推导出新知识或新结论。关于LLM的推理能力,是最近一年来LLM里最重要和热门的研究领域之一。于是,我们关心的问题就是:LLM具备推理能力吗?如果具备,那么它的推理能力够强吗?

这两个问题目前的答案似乎应该是:当模型规模足够大的时候,LLM本身是具备推理能力的,在简单推理问题上,LLM已经达到了很好的能力,但是复杂推理问题上,还需要更多深入的研究。

未来之路:LLM研究趋势及值得研究的重点方向