如果只有指令微调…
人类老师需要给语言模型准备的教材是长这个样子的。要先想出人类可能会去问语言模型的问题,为每一个问题想一个正确的答案。有问题有答案之后,就可以把这些资料转成语言模型,可以拿来做训练文字接龙的格式。这种使用人类老师准备的资料来学习的过程,叫做instruction的fine tune。
这个instruction的意思是,人类老师提供了一些指令,机器会学习如何按照这些指令做出正确的回应。这些训练资料需要耗费大量人力才能获取,这种耗费大量人力产生资料的方式叫做资料标注。通过这种资料标注的方式,通过耗费大量人力产生的资料训练出来的模型,这个训练过程叫做督导式的学习,英文是supervised learning。
为什么今天在这个输入的资料里面要特别标上哪个部分是使用者讲的,哪个部分是AI讲的呢?如果我们没有标哪个部分是使用者讲的,哪个部分是AI讲的,那会遭遇什么状况呢?如果我们把user跟AI这两个符号拿掉,那这个输入有可能是使用者说台湾最高的山是哪座 问号,AI已经回答出了玉山要继续去做文字接龙。也有可能是使用者不知道怎么回事,就是自问自答,台湾最高的山是哪座?问号,自问自答AI一个话一句话都还没有说。那这个时候在这两个case它的答案是不一样的。第一个case今天正确的答案应该是输出结束的符号。
人类老师能够提供的标注资料是非常有限的。假设今天在训练资料里面,人类老师只告诉机器说,如果有人问你台湾最高的山是哪座?你就要回答玉山,那你找出来的参数可能会有什么问题呢?不要忘了我们之前在讲机器学习的时候,我讲过说你不要用人类的想法来揣度语言模型学习的过程。对语言模型来说,他唯一要做的事情就是找到一种参数,满足训练资料的要求。
在今天这个例子中,有一组参数满足训练资料的要求。这些参数可以做到让函数看到“最”这个字,输出就是“玉山”。这样的参数完全符合训练资料的要求,有可能在训练过程中被找出来。如果训练过程中的最佳化过程找出来的是这样的参数,那么问世界最深的海沟在哪里,看到“最”这个字,它很有可能也会回答“玉山”。
过去我们实验室也做了很多只用人类老师资料训练的语言模型。在不知道大起源模型技术之前,我们通常会收集大量人与人间的对话,多达上百万笔,来训练模型。但是我们发现,即使收集了上百万笔资料,语言模型也只能说人话,语法可能是正确的,看起来通顺,但这些模型仍然显得非常无知,很容易答非所问。因为即使有上百万笔人类和人与人间的对话,作为标注资料来训练语言模型,对原模型理解这个世界来说还是远远不够的。而收集上百万笔资料的成本已经非常高了,你可能很难收集到像从整个网络上爬到的资料那么多。因此,只从人类老师学是不够的。过去有很多模型,如果它们只靠人类老师教的资料,就会显得很笨。
关键是预训练
过去的语音助理,你跟他说打开音乐,他会把音乐打开。但你跟他讲说不要打开音乐,他也会把音乐打开。因为那个模型学到的东西很有可能就是只要听到“打开音乐”这四个字,不管前后加什么,他都会把音乐打开。所以今天这些大型语言模型可以成功的关键是使用了第一阶段所得到的参数作为第二阶段的初始参数。
如果模型训练出来的参数不合理,有两种解决方法。一种是扩充数据,但今天在第二阶段,人类标注的数据非常稀少,所以我们无法走这条路。那么怎么办呢?我们可以找一组比较好的初始参数。在第二阶段,我们可以使用第一阶段通过网络上大量文字所学出来的参数作为初始参数。我们可以使用我之前示范过的有点笨笨的GPT3或PLN作为第二阶段的初始参数。这