Categories
中文

从零到一:大模型技术的创造史

虽然大模型是在OpenAI推出了ChatGPT之后进入公众视野的,但是在ChatGPT之前大模型技术已经经历了很长一段时间的演化。我从2014年到2019年在谷歌工作,大模型的许多关键技术是在这段时间在谷歌大脑成熟的。整个技术的成型不是一蹴而就,而是由许多优秀的研究者和工程师接力完成。我有幸参与其中,作为一个亲历这个过程的人,这里希望记录一下这段经历。让大家了解一下这项划时代技术从零到一时期的一些故事。

大模型的开发不仅需要强大的计算能力,还需要解决于三个关键问题:架构、训练算法和数据。因为搜索引擎本质就是用自然语言进行互联网数据的查询,谷歌一直在自然语言处理方向的研究上面重金投入,最终逐渐解决了了这三个问题。

首先是架构。谷歌大脑一个很重要的任务是为谷歌的翻译任务提供模型支持。语言本身就是一个序列,所以很自然大家就开开始使用一种称为序列模型(Sequence Models)的神经网络来做这个。与上一代的卷积神经网(CNN)相比,序列模型是专门用于处理序列数据的。每一层的输出又称为下次迭代的输入。这样就可以处理很长的序列。

谷歌翻译是支持多种语言的相互翻译的,所以需要有一种架构可以非常容易扩展语言而不需要重新训练。从直观上来说,一种语言不过是为了表达特定含义的符号,翻译的本质就是使用不同的符号系统来表示同一个含义。于是大家考虑到如果能够用一个序列模型提取一种语言要表达的含义(编码器encoder),然后在用另外一个序列模型将将之转化成为另一种语言的符号(解码器decoder)。这样encoder-decoder模型架构就出现了。

Encoder-decoder模型架构刚刚出现(2014年左右)的时候效果不好,主要问题就是序列模型(sequence model)很容易遗忘信息,一般只能记住几个上下词,这就是我们提到的context window limit滥觞。这种问题之前也已经有一种方法解决,(LSTM, 长短时记忆模型)。LSTM效果不错,但是特别复杂,很难写。所以大家一直在寻在更加简化的架构。

Transformer架构(变压器架构)就是在这个背景下面诞生的 (2017年)。比起LSTM来说,Transformer架构简单很多,效果也非常的好。后来所有的大模型都是基于这个架构。Transformer的八位作者后来都离开了谷歌,几乎每个人都创立了一个独角兽公司,这就是所谓的“Transformer八子”。 Transformer架构刚刚出来的时候并没有引起大家的注意。主要是这样的架构在当时非常的难以训练,只有少数的人可以使用。

第二个部分是训练算法。2013年左右时候,谷歌发明了词嵌入技术(Word Embedding或者 Word2Vec)。这个技术能够把一个单词映射成为向量。如果两个词在语义上面比较接近,那么他们在向量空间的距离也会比较接近。词嵌入技术被首先用到了谷歌的搜索系统和广告机器学习系统里面作为特征,带来了很大的提升。但是很快大家发现了词嵌入技术存在一些问题。自然语言里面的词都具有多义性。同样的词随着它所处的上下文会具有完全不同的语义。

如何能够生成一个能够考虑上下文的词嵌入呢? 这个时候大家考虑到可以将一串词序列顺序的处理。如果从前往后扫一遍就可以知道上文,如果从后往前扫一遍就可以知道下文。这样上下文就都有了。这种考虑上下文的思路就演进成为了BERT(双向变压器表征编码器, 2018年)。

BERT这种双向的特点和后来OpenAI的GPT只是从前往后的范式稍有不同,但是原理都是一样。BERT最大的优点就是特别适合生成词嵌入(Embedding)。当时BERT的词嵌入用到谷歌的搜索广告系统里面让产生了1%的营收增长。谷歌每年大概2000亿美金的收入,光这一项改进,就是一年20亿美金的收入。BERT的出现也直接催生了谷歌的TPU项目。

BERT论文一个重大的贡献是让预训练-微调范式发扬光大了。这个范式其实在谷歌内部很早就开始有了。主要是谷歌研究部门是一种混合制的研究部门。既有人做基础模型研究,也有人(Applied Scientist)到各个部门去做落地。最开始每个部门的模型都是从头训练。但是随着模型的规模变大,对训练资源的要求越来越高。而且基础研究的人对于各个部门的业务也不是十分了解。这个时候如果负责基础研究的人能够做一个预训练的模型。各个应用的人再依据各自的业务问题做微调。会起到事半功倍的效果。

而且由于将所有的训练资源汇聚到一起,预训练模型可以做的很大。BERT是第一个将预训练模型发布到谷歌以外的团队。而且当时他们除了模型权重,也一并开源了模型代码。掀起了一波自然语言处理(NLP)热潮。著名的HuggingFace其实最开始就是BERT的一个PyTorch开源实现。

第三个部分是数据。预训练大模型需要大量的数据。传统的机器学习训练都是通过监督学习,需要大量的文本和标注。文本这个事情好说,英文里面有维基百科,里面有大量的文本,维基百科本身是非营利性组织,而且谷歌是维基百科的最大赞助商,获取数据没有什么太大的难度。但是标注需要人工做,欧美的标注成本很高,非常的不实际。半监督学习(Semi-Supervised Learning)就是在这个时候诞生的。半监督学习利用某种规则可以自动生成标注。比如说BERT从一段文本里面随机挖掉一个词,然后让模型来预测这个词。这个原理其实和我们人做完形填空的原理是一样的。

随着BERT的完善,谷歌内部开始基于这个能力做很多应用。很重要的就是多轮对话式推荐(Conversational Recommender)。传统的推荐系统是基于排序的,但是多轮对话式推荐是基于自然语言处理的,并且利用强化学习进行对齐。其实这已经就是后来ChatGPT的原理了。而且当时已经达到了类似ChatGPT的效果。但是谷歌对外发布的一些产品因为一些偏见多样化问题招致美国主流媒体的抨击,这使得谷歌研究院高层对于大模型方向的支持开始犹豫起来。同时谷歌内部模型落地的时候遇到了强大的阻力。因为这个是对于已有业务的一种颠覆式创新。但是在谷歌内部业务线的负责人或是无法看清这个趋势或是担心带来的冲击,不愿意引入,导致除了在YouTube取得一些成绩外其他的落地项目全部折戟。多方原因导致很多优秀人才流散,很多人后来或加入了OpenAI或自行创业继续这一事业。

起初OpenAI并不是专注于大模型的,但是在2019年谷歌内部动荡之际,OpenAI扛起了大模型的大旗。他们在谷歌的工作基础上推陈出新,专注于模型的泛化和Zero-Shot learning — 也就是用户不需要微调模型,只需要一些提示词(Prompt)就可以在多个领域达到相当程度可用的程度。事实证明,这个策略是非常成功的。因为大多数开发者其实并不具备微调能力。Prompt Engineering进一步降低了大模型的使用门槛,让人人都可以用大模型。

整个大模型发展的过程绝非是事前规划好的,而是大家在好奇心的驱动下不断摸着石头过河,最终趟出了道路。科技创新虽然不能被规划,但是是可以孕育的。只要有合适的创新环境,就会不断有新的技术涌现。当时的谷歌大脑和如今的OpenAI都是一些共同的特点:高密度的人才,充分的自由,海量的资源。这是这些地方能够孕育革命性技术,不断拓展科技边界的原因。

Leave a comment