也说GPT之二:GPT研发之难1(原理篇)
安老师的学生
要说到GPT的研发之难,就要先谈谈GPT的研发原理和流程,这里以OpenAI的ChatGPT为例。
声明:为了便于理解,本文对技术性的内容采用口语化、简易化、形象化的类比描述,并不追求严谨性,请注意!
ChatGPT生成内容的方式有点像一个文字接龙游戏,它输出的内容不是一次性生成的,而是根据你的输入先去推算后面应该接龙什么,这时候接龙的内容是有很多选项的,它会根据之前的训练去接龙概率最大的那一个,在接龙了某个字句后,它会进一步根据已经接龙的内容通过上述方法继续接龙下去,如此不断重复,最终完成了内容输出,可以简单认为它输出的内容实际上是由从训练语料中提取出来的一些元素经过概率化的文字接龙而产生。那么如何让这些文字元素以人们想看到的样子进行排列组合,这就是大语言模型训练的重中之重。
ChatGPT是怎么进行训练的呢,它主要分为4个阶段。
第一个阶段叫自监督学习。这一阶段不需要人参与,但是需要优秀的算法做支撑。这一阶段模型会使用海量的语料通过各种文本任务来进行训练,例如进行“下一个词预测”和“遮蔽词恢复”,通过这样的训练使其能够捕捉语言中词汇的关联性和语言结构,使得模型能够学会语法、语义和上下文理解等基本语言能力。举个例子,通过大量的该阶段训练后,你给它“一鸣”它就能接上“惊人”,给它“龙城博”它能接龙一个“客”字,这种文字接龙能力可以为后续的高阶能力提供基础。
第二个阶段叫监督学习。这一阶段的主要做法就是先选定一定数量的预设问题,再给这些预设问题一个预设答案。举个例子,预设问题“安文老师是一个什么样的人?”,预设答案“安老师博古通今、学贯中西,性情高雅,才貌双全”。通过大量的人力来进行问题和答案的标记,这就完成了最初的生成模型的搭建。然而因为它会耗费大量人力,所以里面的问题和答案的数量都是有限的,并且这样的模型本质上就是一个问答库,也没有太高价值,那么如何来生成无数的问题和答案呢?这就需要借助人工智能的力量了,开始第三个阶段。
第三个阶段叫强化学习。通过前两个阶段,我们已经得到了一个具有语言接龙能力的模型和一个标准问答库,那么把这个问答库作为语料继续进行训练,模型就可以通过学习多个问题和答案之间的对应关系,掌握问题和答案的对应规律,从而在经过调整后,可以用来回答类似的问题,模型到了这里已经具备了自己对陌生问题生成答案的能力了。但是这时候生成的答案肯定是五花八门,质量良莠不齐,于是就需要对其生成的答案进行人工筛选和打分,我们人为地挑出好的回答打高分,差的回答打低分,通过大量的打分,模型就会知道下次回答问题的时候应该优先接龙哪些内容了,从而不断地改进修正,提升输出内容的质量。通过这个阶段,我们得到了一个优化过的、质量更高的、可以回答任何问题的模型。
第四个阶段就是持续优化和迭代。我们知道不断重复第三个阶段可以让模型不断地优化和完善,但是人工打分也需要耗费大量人力,且效率低下,于是就又需要借助人工智能的力量了。这时候通过让模型对“最初模型”和“优化后的模型”进行对比分析来掌握改进模型的方法,从而实现自动评分、自动改进、自动优化和完善。这一阶段也需要非常优秀的算法做支撑。
从上述ChatGPT的研发原理和流程,我们可以看出来决定它质量的因素有哪些,主要是三大块,即语料、算法和人力。下篇文章我会基于这三点谈谈国产GPT研发的困境。