ChatGPT 的「神功」,是如何炼成的?( 三 )


03
自然语言 AI
的深度进化
首先,自然语言处理的研究里,有个基本概念叫做「语言模型」,大致理解起来也简单,就是想办法打造一个核心函数 P,这个函数通过一个句子里前面的所有单词来计算下一个单词的概率大小 。一句话里的单词总是顺序出现的, 每个单词都可以通过前面所有单词计算出这么一个概率,把所有这些单词的概率乘起来,总概率数值越大,说明这越像是人说出的话 。
怎么构造这个神奇的函数 P 是 AI 科学家的事情,但读者们一定可以明白,有了这个牛的「语言模型」函数 P,计算机就会说人话了 。
而从神经网络学派的同学看来,是不是可以用神经网络来打造这样一个语言模型呢?就是说用很多的现成语料,来训练出一个神经网络,然后给这个神经网络模型输入一句话的前面几个词,这个模型就能计算出这句话的下一个单词 。
这就是大名鼎鼎的「神经网络语言模型」NNLM 。
NNLM 神经网络语言模型的想法并不是最近冒出来的,它的历史要追溯到 20 年前 。NNLM 的论文在 2003 年就被发表出来了,而当时,深度学习的概念还只存在于杰弗里·辛顿(Geoffrey Hinton)的脑袋里 。
所以,不幸的是,NNLM 当时没有引起学界多少反响,被埋没了近 10 年 。事实上,在深度学习大火之前,用神经网络做自然语言处理甚至会被笑话,之前自然语言处理的主流研究方式还是基于统计学的机器学习方法 。神经网络语言模型 NNLM 这个概念太超前时代了 。
一直到了 2013 年,在深度学习概念提出来 7 年之后,深度学习神经网络模型先是在图像和语音领域大显神威,自然语言 AI 的同学终于想起了这篇十年前的论文 。NNLM 重出江湖, 为世人所知:
在 2013 年,AI 研究人员倒腾了一个自然语言处理的处理模型 word2Vec 。顾名思义,「Word2Vec」就是「Word to Vector,从词到向量」 。研究人员的目标是把一个单词变成一个数学向量,这个数学量在 NLP 里有个专门的名词,叫做 Word Embedding(词嵌入)
为啥要变成一个向量,出发点也很简单,如果能将每个单词都能表示为数学空间里的一个向量,那么是不是理论上,在这个向量空间里比较接近的词,就是意义接近的单词呢? 这样计算机不就可以方便的理解单词之间的联系了吗?
Word2Vec 翻出了十年前的 NNLM 。NNLM 的初衷只是想构建一个神经网络语言模型,根据前面的词,来预测后一个是什么词 。NNLM 网络内部构造了一个随机初始化的矩阵,通过不断的训练,来达成 NNLM 模型预测单词的目的 。
特别凑巧的是,研究人员发现这个训练出来的内部矩阵的每一行,正好可以作为每个词的嵌入向量 Word Embedding!这真是得来全不费功夫啊 。
NNLM 和 Word2Vec 使用了类似的神经网络结构,不过因为目的不同,其训练方法理念是截然不同的 。NNLM 作为语言模型,是要看到上文预测下文,所以训练时输入的是句子上文单词;而 Word2Vec 呢? 因为它的目标是要找出所有单词之间意义远近的数学关系,所以训练时都使用句子上文和下文作为输入 。
不知道读者意识到没,这两种训练方式在更高的意义上有着一些本质区别,就好比我们人类说话,都是顺序说出来一个个单词的,说不定呢,人的潜意识或许也是一个类似 NNLM 的 P 函数,自觉不自觉地的决定人说话里的下一个词是什么 。因此只从上文预测下文的训练方式,貌似天然更契合「生成式」的逻辑 。
而 Word2Vec 这种通过上文和下文输入来训练的方式,可以比喻成机器来做阅读理解,就像是我们做语文或英语的阅读理解,一定是通读全文,然后根据上下文来理解和判断问题的答案 。这样的人工智能,就是所谓分析式的 AI 。
两种模型训练的思路,在后续发展里变成了自然语言模型的两种路线 。本文开头提到的 OpenAI 生成式模型 GPT 系列,坚定的只用上文进行训练,用以追求「纯粹」的生成;而 Google 公司的大语言模型 Bert,则采用了上文和下文一起训练的模式,此乃后话 。
前面提到,图像处理领域里使用大规模通用数据进行「预训练」所取得的效率和成果实在让人羡慕,而在自然语言处理领域里,其实也有一点点「预训练」概念的,这个预训练就是,每个单词的 Word Embedding 可以反过来初始化神经网络的内部参数 。
不去探究数学细节,读者只要知道,这种「预训练方式」和前面图像处理领域的低层级网络预训练方式有点类似,但问题是利用 Word Embedding 只能初始化第一层网络参数,和图像处理领域的预训练能有效初始化大多数网络层级不可同日而语,只能说是一种比较原始初级的「预训练」了


推荐阅读