大模型中的大模型
2020 年,OpenAI 发布了 GPT-3 模型,它所采用的数据量,模型参数量之大,学习之复杂,计算之繁复不说了,看图表吧。 模型名模型结构参数量训练数据Original GPT (GPT-1)Transformer decoder (第5节介绍)1.17 亿4.5 GB文本GPT-2Transformer + normalization(第6节介绍)15 亿40 GB文本GPT-3Sparse Transformer(第6节介绍)1750亿570 GB文本
GPT-3 里的大模型计算量是 GPT-1 的上千倍。如此巨大的模型造就了 GPT-3 在许多十分困难的 NLP 任务,诸如撰写人类难以判别的文章,甚至在编程语言方面,编写 SQL 查询语句、React 或者 JavaScript 代码上都具有优异的表现。
为什么需要这么大的参数量?从某种角度讲,只有模型参数足够大,才能够体现出复杂的智能。 超大的模型参数量,就好比人类的大脑。 可能人类的大脑中,各个神经元细胞之间的联系、结构,与一只兔子的大脑无明显区别。主要区别在于,人类的大脑具备了 100~200 亿神经元,兔子则只有 5 亿左右神经元细胞。神经元的个数决定了人类具有超高的智能,而兔子只懂得最简单的生存智能。这部分内容将在第 12 节中详细介绍。 首先 GPT 系列模型都是采用 decoder 解码器结构进行训练的,也就是更加适合文本生成的形式。即输入一句话,输出也是一句话。这被称之为对话模式。它非常像人类的沟通交流模式。 我们是如何学会中文的?从出生开始,听别人说话,说出自己想说的话,也就是对话。我们每个人都是中文高手。 我们是如何学外语的?看教材、听广播、背单词。唯独缺少了对话! 正是因为缺少了对话这个高效的语言学习方式,所以我们的外语水平才如此难以提高。 对于语言模型,同理。对话是涵盖一切 NLP 任务的终极任务。从此 NLP 不再需要针对特定任务建模这个过程。比如,传统 NLP 里还有序列标注这个任务,需要用到 CRF 这种解码过程;文本分类模型需要给每一个模型打标签;在对话的世界里,这些统统都是冗余的。这部分内容会在第 7 节详细来讲。 以往在训练 NLP 模型的时候,都需要用到大量的标注数据。可是标注数据的成本实在是太高了,这些都得人工手工一个个来标注完成!有没有什么不这么依赖大量标注的方式吗?
GPT3 就提出了小样本学习的概念,简单来讲,就是让模型学习语言时,不需要那么多的样例数据。假设,我们训练一个可抽取文本中人名的模型,就需要标注千千万万个人名,比如“张雪华”、“刘星宇”等。千千万万个标注数据,就像是教了模型千千万万次同一个题目一样,这样才能掌握。
而人脑却不是这样,当被告知“山下惠子”是一个日本人名以后(仅仅被教学了一次),人脑马上就能理解,“中岛晴子”大概率也是一个日本人名,尽管人脑从来没听说过这个名字。 小样本学习的具体方式,主要放在第 9 节展开来讲,它的实现必然依赖超大规模的语言模型预训练。 需要说明的是,OpenAI 并没有发表 ChatGPT 模型原理论文,从严格意义上讲,ChatGPT 模型的实现细节,外界是无从知晓的。但是,OpenAI 在2022年发表了一篇 InstructGPT 论文:【Training language models to follow instructions with human feedback】让模型更好地听从人类反馈的指令。这两个模型几乎可以被认为是采用了完全相同的策略。
从此后各个科技公司的模型训练上看,InstructGPT 的原理几乎可以与 ChatGPT 画上等号。
唯二的差别,就是 ChatGPT 是基于 GPT3.5 的,而 InstructGPT 基于 GPT3;并且,ChatGPT 用上了更大更优质的训练文本语料数据。ChatGPT 模型结构上和之前的几代都没有太大变化,主要变化的是训练策略变了。