小牛翻译直播间(NiuTrans Talk)在6月8日成功举办,本期直播由东北大学自然语言处理实验室主办,小牛翻译协办。非常荣幸地邀请到了东北大学自然语言处理实验室的穆永誉博士作为嘉宾,为广大关注大语言模型的朋友们带来了备受期待的第四期报告——《预训练基础:生成模型》。
本次报告延续上一期生成式大语言模型的相关技术,继续由穆永誉博士介绍“预训练基础:生成模型”相关内容。穆永誉博士重点讲解了使用自然语言直接生成下游任务答案的语言生成类预训练模型,包括语言生成的实质,生成模型的工作流程、模型结构、预训练任务、推断方式、思想解剖和前沿技术。最后对预训练相关技术进行总结,对比分析语言编码、生成模型的特点,帮助大家对后续大语言模型前沿技术有更清晰的了解。
在报告分享后的Q&A环节,穆永誉博士与各平台的网友就大模型相关技术提问进行了广泛讨论,以下是本环节的问题和解答:
Q1:NLP中词向量的预训练是什么意思?有什么作用?
A1:词向量的预训练可能这个网友指的就是Word2Vec这种,去专门训练一个词向量层。实际上Word2Vec这种模型就是采用大量语料,然后训练一个词向量,也叫查找表这种东西。词向量层的一个主要作用,实际上就是面对什么样的一个单词或者叫它token 更专业一些,给它转换成一个向量表示,也就是一串数。然后有了这串数之后,我们就可以让模型进行一些更复杂的计算,词向量层实际上就是这个作用。然后Word2Vec就是在大量语料上训练出来这样一个包含了很多知识,或者是说可以方便下游任务使用的一些词向量。
Q2:语言生成类预训练模型的工作流程是怎么样的?
A2:工作流程实际上就是这样,还是分为两个阶段。第一个阶段就是预训练阶段,我们采用海量的文本数据,提前地去训练一个Transformer模型,这个Transformer模型通常是解码器结构或者是编码器-解码器结构。在预训练阶段,我们会训练模型的一个文本生成能力,也就是说主要就是让它去生成文本。然后在下游任务阶段,假设我们已经有了一个训练好的,或者说生成能力很强的预训练模型了。那么这个时候我们就需要把各种下游任务都给它转化成文本生成任务,具体怎么转化的,就是我们为每一个任务,专门设计一个提示或者模板,然后和下游任务数据结合到一起,作为预训练模型的输入,预训练模型只需要接着它的输入继续去生成文本,就可以包含我们需要它做的预测的一个结果。然后对于不同的任务,涉及不同的提示,还有答案提取的一些规则。
Q3:生成类预训练模型存在哪些潜在的问题和限制?
A3:首先它有两个劣势,第一个问题就是因为我们需要让预训练模型,在预训练阶段去涵盖或者说学习到它在下游任务阶段需要的能力或者知识。它只有一个预训练阶段,这就导致它这个预训练阶段需要学的东西非常非常多。所以说我们需要用一个非常大量的数据,这种规模的数据几乎是语言编码类预训练模型几乎不会去这么使用的这样一个大量的数据,然后训练一个大量的模型,这就会导致它的这个训练代价是非常高的。还有包括我们前面给大家介绍的就是语言生成类这种方法的过程中,它是有一些任务模板,还有答案提取规则,需要人工的进行一个构造,它可能会产生一些局限性。当然也有一些自动设计的方法,但是其实它还是需要基于一些人类的直觉,或者说人工先验知识,它会造成一定的局限性。我觉得这是语言生成类预模型的一些劣势。
Q4:生成类模型是否不需要融合外部知识而使用Prompt就行?不像Encoder那样需要显示的融合知识。
A4:生成类模型我们理想情况下,它肯定是在预训练阶段就学到了各种知识。在下游任务阶段,只是去调用它在预训练阶段学到的知识即可。但是调用其实也就是我们使用提示进行调用也有一些讲究。比如说我们给大家介绍的在输入给生成式模型,它可以包含一些输入输出样例。这些输入输出样例,我们可以理解为它也是在融入一些知识。也就是说我们在下游任务阶段,我们依然可以把一些下游任务的知识其实是可以通过输入的方式送给一些模型。我可以在这些输入输出样例里面去涵盖一些模型面对下游任务时候,可能会遇到的一些特殊情况,或者是说一些类别,这样可以是帮助模型更全面的进行一个思考。实际上few-shot的效果也是确实是比较好的。就包括我们在最近做的一些关于大语言模型的一些研究,通常会采用few-shot当作我们的一个基线。
Q5:生成类预训练模型中的语言有哪些常见的应用领域?
A5:常见应用领域,我觉得目前一个比较通用的应用领域可能就是assistant,就是助手。它帮助人类或者说协助人类去做一些工作,但是它这个可以做的工作的面还是比较广。除了这个助手,我觉得现在还比较有趣的一个研究点就是我们把这个大型的语言生成类预训练模型当作一个逻辑或者说智能的一个中枢,让它去控制其它的一些模型完成更复杂的任务,我觉得这也是一个很有趣的应用方向。
Q6:GPT模型与其它的生成式预训练模型相比有什么优势?比较具体的优势。
A6:优势其实这个目前学术界还没有一个很明确的回答,但我个人觉得就是GPT这种模型可能非常适合文本生成一些。它直接砍去了Encoder,然后也直接拿语言模型这个任务来当作它的预训练任务。它的优势可能就是在于天然就适合做一个文本生成,它生成出来的文本也相对来说可能更流畅一些。但实际上我们说就是直接预训练阶段就拿到的这个GPT-3这种模型,其实智能性还是差一点,后面可能需要配合一些比如指令微调这种方式,来让它达到一个比较好的效果。
Q7:预训练模型是否能够处理非文本类的数据
A7:预训练模型是否能够处理非文本类的数据,也是可以的,就是看怎么用了。实际上Transformer的这种结构,它是适合于处理一些序列信息的。比如说DeepMind公司去年发布的那个AlphaFold2就是预训练的一个蛋白质预测的一个预训练模型。因为蛋白质大家知道也是主要由一些氨基酸组成的,这些氨基酸就像单词一样,也是类似于文本的序列信息。我们使用这些序列信息预训练得到一个模型,这个模型就可以处理这种蛋白质预测的这样的一些任务。包括还有一些关于音乐的预训练模型,我了解也是有的。就是这种能够表示成序列的这种信息,然后我们还有大规模的数据,我们就可以预训练一个Transformer出来,然后专门处理这种序列的一些任务。 Q8:生成式预训练模型中的前沿技术混合精度训练是如何提高模型训练效率的?
A8:混合精度训练其实就是大家如果正常使用一个框架,比如fairseq可能去训练一个神经网络,它可能使用的是fp32,就是float 32位的这样一个数来进行计算。混合精度训练就是说我有一部分的数了,我不采用fp32,我们采用fp16或者是bf16。那这种fp16或者是bf16相比fp32它有哪些优势?为什么要用它就是因为这种更短的或者说占用空间更少的这样一个数,它对于内存读取,还有GPU计算都是非常有利的。比如GPT,就GPU来说采用fp16来计算的话,它是比fp32计算的速度要快很多很多倍。但是实际上我们直接使用fp16也会产生一些问题,因为它所存储的这个数占的存储位是更少的,表示数值的一个范围也是变小的,这就可能引起一些比如数值上溢,或者是下溢这样一些问题。所以说有一些关键的步骤,我们可以采用一些fp32来计算。
Q9:预训练语言模型可以应用到哪些下游任务中?
A9:下游任务还是蛮多的,像语言编码类模型非常适合文本理解的一些任务,就比如像情感分类,还有词块识别任务。其实在我上一次直播的那个片子里面,有一些提及预训练下游任务的例子。今天给大家介绍的一些生成类预训练模型,就偏向一些生成任务好一点,比如说翻译任务、摘要任务,或者是说写故事、一些纠错任务,都是还是不错的,还有风格迁移这种任务,都是用的很多的。
Q10:有没有已经预训练好的大语言模型可供使用?
A10:这个是有的,其实有不少开源的大型生成模型我们是可以用的,比如最近比较火的就是Meta AI公开出来的一个,也没有说完全公开,但它确实是开源的一个模型叫LLaMA,这个模型它可能是说除非商业使用,我们学术使用是没有问题的。我们可以拿它过来去做一些我们前面说的,比如说指令微调,或者是说人类反馈的强化学习等一些训练,然后训练出来我们专有的,或者是说我们想要它在某个领域数据上非常精通的一个大语言模型。
Q11:使用训练大语言模型是否会面临过拟合的问题?
A11:我觉得过拟合还是会有的,但我也倒是没有说实际去拿下游任务数据或者说数据去微调一个生成式大语言模型,我只微调过BERT这些模型。但是我个人感觉这个过拟合现象还是会有,包括大模型在训练阶段甚至会产生一些训练上的问题,比如很明显的就是训崩了或者怎么样,这个时候可能甚至需要说重启训练,就是加载到之前的一些它正常训练状态下的一个checkpoint,就是检查点。然后我跳过会导致它训崩的这个数据,然后再进行训练,也就是说大模型训练面临过拟合的这些问题还是很多。
Q12:生成类预训练模型存在哪些潜在的问题和限制?
A12:这个其实跟我们前面解答的问题是非常相似的,一个是它需要涵盖的知识面非常广,所以说我需要用一个海量的数据训练很大的模型,导致它的训练代价是非常高的。第二点就是我们写一些Prompt或者答案提取的规则是依靠人工来进行的,然后产生一些限制。当然除了这两点之外,我觉得还是会有一些其它的劣势。但是这两点可能更明显一点。
Q13:预训练模型是否需要进行更新或者是重新训练?
A13:这个还是需要的,比如说GPT-3使用的训练数据可能是21年之前的,但是21年22年23年又产生了很多新的一些训练数据,或者产生一些新的比如说概念、知识,比如说网络梗的那种东西。这个时候我们可能会需要把这种新的数据给它加到这个GPT-3的这个训练语料里,然后让它继续训练一下,这样能够让它去更加适应我们如今的这样一个语境,或者是说语言的使用环境。
Q14:预训练模型是如何捕捉语言的上下文关系和语义表示的?
A14:这个问题可能涉及到一些模型解释性。实际上就是我了解的比较多的就是Transformer的attention机制会让它在理解当前这个单词的时候,去看一些它周围的单词,也就是说根据一个语境进行一个理解。其实有很多工作指明,在预训练好的一个预训练模型身上,拿它attention的这些权重,我们可以得到一些比如语法树这些知识。就说明它可能在预训练阶段,就是在self-attention里面去学习到这些知识,就是比如根据上下文去理解这个词等等,我觉得主要还是看attention机制。
以上就是直播问答环节的全部内容,下期报告《大语言模型发展与现状》将于6月29日与您相见。更多关于报告的详细内容以及观看直播回放可于小牛翻译云平台视频号或机器翻译学堂获取。NiuTrans Talk,是由小牛翻译主办的,每期将邀请到不同领域的机器翻译专家进行讲解,分享行业干货知识,带你走进机器翻译的世界。更多精彩内容尽在小牛翻译直播间 ,想了解更多有关机器翻译的内容请关注机器翻译学堂或小牛翻译官方微博号,与小牛翻译一起探讨机器翻译技术。