从呱呱坠地到大放异彩,语言模型经历了哪些变化?

本文涉及的产品
NLP 自学习平台,3个模型定制额度 1个月
NLP自然语言处理_基础版,每接口每天50万次
NLP自然语言处理_高级版,每接口累计50万次
简介: 地基决定了建筑的高度,语言模型决定了 NLP 的能力。我们平时关注到的更多是建筑位于地表之上的宏伟部分,地基则鲜少有人问津。然而,打实基础,才能更上一层楼。今天,蚂蚁金服智能对话算法团队带领大家一起回顾 NLP 语言模型的演化历史,了解 BERT为什么能在今天大放异彩。

小叽导读:地基决定了建筑的高度,语言模型决定了 NLP 的能力。我们平时关注到的更多是建筑位于地表之上的宏伟部分,地基则鲜少有人问津。然而,打实基础,才能更上一层楼。今天,蚂蚁金服智能对话算法团队带领大家一起回顾 NLP 语言模型的演化历史,了解 BERT为什么能在今天大放异彩。

语言模型概览

语言模型本质上是在回答一个问题:出现的语句是否合理。

在历史的发展中,语言模型经历了专家语法规则模型(至80年代),统计语言模型(至00年),神经网络语言模型(到目前)。

专家语法规则模型在计算机初始阶段,随着计算机编程语言的发展,归纳出的针对自然语言的语法规则。但是自然语言本身的多样性、口语化,在时间、空间上的演化,及人本身强大的纠错能力,导致语法规则急剧膨胀,不可持续。

统计语言模型用简单的方式,加上大量的语料,产生了比较好的效果。统计语言模型通过对句子的概率分布进行建模,统计来说,概率高的语句比概率低的语句更为合理。在实现中,通过给定的上文来预测句子的下一个词, 如果预测的词和下一个词是一致(该词在上文的前提下出现的概率比其它词概率要高),那么上文+该词出现的概率就会比上文+其他词词的概率要更大,上文+该词更为合理。

神经网络语言模型在统计语言模型的基础上,通过网络的叠加和特征的逐层提取,可以表征除了词法外,相似性、语法、语义、语用等多方面的表示。

语言模型可以用于多种 NLP 任务,如预测、纠错、推理等。在本文中,主要介绍语言模型在统计及(深度学习)神经网络方面的发展情况。

统计语言模型

统计语言模型从统计的角度预测句子的概率分布,通常对数据量有较大要求。对于句子image.png, 计算其序列概率为image.png,根据链式法则可以求得整个句子的概率:

image.png

其中,每个词出现的概率通过统计计算得到:

image.png

这种方法有以下问题:

image.png

n-gram

n-gram 是最为普遍的统计语言模型。它的基本思想是将文本里面的内容进行大小为 N 的滑动窗口操作,形成长度为 N 的短语子序列,对所有短语子序列的出现频度进行统计。 直观上理解,n-gram 就是将句子长度缩短为只考虑前 n-1 个词。 值得注意的是:这里image.png的实际含义是句首词概率,实际应用中应加入起始符,如对于 bigram 而言,应为image.png,同理应在句尾加入结束符 ,加入起始符和结束符的意义在于对句中任意长度的部分序列均进行建模。这里举一个小数量的例子进行辅助说明:假设我们有一个语料库,如下:

老鼠真讨厌,老鼠真丑,你爱老婆,我讨厌老鼠。

想要预测“我爱老”这一句话的下一个字。我们分别通过 bigram 和 trigram 进行预测。

  • 通过 bigram,便是要对 P(w | 老)进行计算,经统计,“老鼠”出现了3次,“老婆”出现了1次,通过最大似然估计可以求得P(鼠|老)=0.75,P(婆|老)=0.25, 因此我们通过 bigram 预测出的整句话为: 我爱老鼠。
  • 通过 trigram,便是要对便是要对 P(w | 爱 老)进行计算,经统计,仅“爱老婆”出现了1次,通过最大似然估计可以求得 P(婆|爱 老)=1,因此我们通过trigram 预测出的整句话为: 我爱老婆。显然这种方式预测出的结果更加合理。

上例证明了,随着 n 的提升,我们拥有了更多的前置信息量,可以更加准确地预测下一个词。但这也带来了一个问题,数据随着 n 的提升变得更加稀疏了,导致很多预测概率结果为0。当遇到零概率问题时,我们可以通过平滑来缓解 n-gram 的稀疏问题。

n-gram 需要平滑的根本原因在于数据的稀疏性,而数据的稀疏性则是由自然语言的本质决定的。当这种稀疏性存在的时候,平滑总能用于缓解问题提升性能。 直观上讲,如果你认为你拥有足够多的数据以至于稀疏性不再是一个问题,我们总是可以使用更加复杂、更多参数的模型来提升效果,如提高 n 的大小。当 n 提高,模型参数空间的指数级增加,稀疏性再度成为了所面临的问题,这时通过合理的平滑手段可以获得更优的性能。

n-gram 中的平滑( smoothing )

在一个有限的数据集中,高频事件通过统计所求得的概率更加可靠,而出现频次越小的事件所得的概率越不可靠,这种现象在高维空间中表现更加突出。如果将训练集的概率分布直接拿来作为测试集分布,那么训练集中的“未登录词”概率将会是0,这显然与我们的认知是不符合的,因为测试集中是有可能出现未登录词的,没见过的不代表不存在。平滑解决的问题就是:根据训练集数据的频率分布,估计在测试集中“未登录词”的概率分布,从而在测试集上获得一个更加理想的概率分布预估 。接下来我们对常用的平滑方法进行介绍。

拉普拉斯平滑(Laplace Smoothing)

,如公式所示,拉普拉斯平滑对所有事件的频次均进行了加1。拉普拉斯平滑是最为直观、容易理解的平滑方式,对事件发生的频次加一对于高频事件的概率影响基本可以忽略,它也同时解决了未登录词的概率计算问题。

但直接加1的拉普拉斯平滑也是一种较为“糟糕”的平滑方式,简单粗暴的加1有时会对数据分布产生较大的影响,有时却又微不足道。拉普拉斯平滑对未知事件的概率预测进行了平等对待,这显然不合理!加性平滑对这一点进行了改进,通过超参数的方式提升了拉普拉斯平滑的泛用性与效果。

加性平滑( Additive Smoothing )

image.png,在加性平滑中我们做出以下假设:我们假定每个 n-gram 事件额外发生过 δ 次;一般而言0<δ≤,当 δ=1,时等价于拉普拉斯平滑,当 δ<1时,表示对未登录词的概率分配权重减少。这种方法提升了拉普拉斯平滑的泛用性,但依然由于实际效果被很多人诟病。

古德图灵平滑(Good Turing Smoothing)

image.png

image.png

注:一般来说,出现一次的词的数量比出现两次的多,出现两次的比三次的多,这种规律称为 Zipf 定律(Zipf’s Law)

image.png

n-gram 小结

n-gram 的优点有很多,首先它是一种直观的自然语言理解与处理方式,对参数空间进行了优化,并具有很强的解释性。它包含前 n-1 个词的全部信息,不会产生丢失和遗忘。除此以外,它还具有计算逻辑简单的优点 。但与此同时,n-gram 也具有本质上的缺陷:n-gram 无法建立长期依赖,当 n 过大时仍会被数据的稀疏性严重影响,实际使用中往往仅使用 bigram 或 trigram;n-gram 基于频次进行统计,没有足够的泛化能力。因此,神经网络语言模型逐渐取代传统的统计自然语言模型成为主流,接下来我们对神经网络语言模型进行介绍。

神经网络语言模型(2003年)

image.png

image.png

image.png

如上图,句子单词以 onehot 形式作为输入,与共享矩阵 C,做矩阵相乘得到索引位置的词向量

image.png

拼接得到 e

image.png

经过非线性层

image.png

接全连接softmax得到续下一个单词的概率分布。

image.png

image.png

NNLM 相比 ngram 不需要事先计算保存所有的概率值,通过函数计算得到;增加了单词词向量,可以表达单词的相似性(即语义和语法特征);利用神经网络求解最优参数及softmax的使用,相比ngram可以更加平滑的预测序列单词的联合概率,且对包含未登录词的句子预测效果很好;但其计算量仍过大,主要计算量集中在非线性层h和输出层z的矩阵W,U运算和softmax计算。

RNN语言模型(2010年)

n-gram 语言模型的问题在于捕捉句子中长期依赖的能力非常有限,NNLM 对输入数据要求固定长度(一般取5-10),直观上看就是使用神经网络编码的 n-gram 模型,也无法解决长期依赖的问题。语言模型任务是一个序列预测问题,RNN 是天然用来解决序列问题的模型,2010年 Mikolov 提出 RNNLM,RNNLM 的历史信息是句子前边所有的词,使其可以捕获更长的历史信息。RNNLM 对后边 elmo 的提出有着启蒙作用。

image.png

如图,RNNLM 的输出为下一个位置的单词预测概率分布 output(t);输入由两部分组成,当前位置单词的词向量 input(t) 和 t-1 时刻的隐状态 context(t-1) 相加,隐层激活函数为 sigmoid。

直观上来说,RNN 网络打破了上下文窗口的限制,使用隐藏层的状态概括历史全部语境信息,对比 NNLM 可以捕获更长的依赖,在实验中取得了更好的效果。RNNLM 超参数少,通用性更强;但由于 RNN 存在梯度弥散问题,很难捕获更长距离依赖。

CBOW&Skip-gram(2013年)

目前最火的语言模型做词向量的工具是 Mikolov 提出的 word2vec.word2vec 的网络结构和 NNLM 类似,主要差别在训练方式上。CBOW 如下图:

image.png

image.png

image.png

这两种方式与 NNLM 有很大的不同,NNLM 的主要任务是预测句子概率,词向量只用到了上文信息,是其中间产物;word2vec 是为获得单词的分布式表征而生,根据句子上下文学习单词的语义和语法信息。

除了网络结构更加结合上下文信息,word2vec 的另一大贡献在计算优化上。word2vec 去掉了非线性隐层,CBOW 将输入直接相加通过 softmanx 进行预测,减少了隐层的大量计算,同时通过分层 softmax (hierarchical Softmax) 和负采样(Negative sampling) 对 softmax 的计算也做了很大优化。

hierarchical Softmax

与传统的神经网络 softmax 输出不同,word2vec 的 hierarchical softmax 结构把输出层改成了一颗 Huffman 树( huffman 树在训练时预先构造好,每条边是一个随机初始化的向量,和隐层输出计算 sigmoid 概率),其中图中白色的叶子节点表示词汇表中所有的|V|个词,黑色节点表示非叶子节点,每一个叶子节点都对应唯一的一条从 root 节点出发的路径。我们的目的是使得这条路径的概率最大,即:最大,假设最后输出的条件概率是最大,那么我只需要去更新从根结点到这一个叶子结点的路径上面节点的向量即可,而不需要更新所有的词的出现概率,这样大大地缩小了模型训练更新的时间。

image.png

当我们image.png计算输出概率时,我们需要从根节点到叶子结点计算概率的乘积。

image.png

image.png

image.png

Negaive Sampling

image.png

词向量是否要微调?

直观上来说,word2vec 已经成为 NLP 深度学习的标配,预训练词向量的好坏直接影响着模型的效果。word2vec 由于其模型网络结构,很方便在海量数据集上进行预训练,在海量语料预训练+任务数据 finetune 的半监督方法开始兴起,当任务标注数据较少时表现出明显的优势。TextCNN 论文里曾经对比过四种形式的词向量:

  • CNN-rand:所有单词词向量随机初始化,训练过程中更新;
  • CNN-static:词向量用 word2vec 预训练得到,以 feature-based 方式在训练中保持不变,只学习其他参数;
  • CNN-non-static :预训练词向量在训练过程中会 fine-tuned;
  • CNN-multichannel:两个通道,一个feature-based,一个fine-tuned。初始化时直接赋值 word2vec 结果,每个 filter 也会分别用到两个通道,但是训练时只有一个 fine-tuned 通道会进行 BP。

image.png

在实验结果中可以看到 non-static 的方法大多数时候都是要比 static 方法稍好的,而 static 方法比 rand 的方法要好( rand 是指 word embedding 过程中词的编码随机给出)。而结合 static 和 non-static 的 multichannel 方法相较于单纯的 static 和 non-static 方法,在较小的数据集上表现比他们都要好(因为这种混合的方法体现了一种折衷的想法,即不希望被微调的单词向量与原始产生的单词向量差距太大,也希望保持一定的动态变化空间)。

GloVe(2014年)

Word2Vec 珠玉在前,GloVe 由于更加复杂,使用者明显要少很多,但同时实验论证部分场景下 GloVe 效果更好,并且 GloVe 的思想还是非常值得学习的。

GloVe 提出于2014年,当时词向量的主流生成方法有两种,一种基于矩阵因子分解方法,另一种则基于浅层滑动窗口,Glove 将两者的优势合二为一。GloVe 属于统计语言模型,它的主要优化点在于引入了共现矩阵,利用词向量间的相似性逼近全局共现次数,本质是对共现矩阵进行降维。

image.png

image.png

image.png

image.png

在实践中,GloVe 和 Word2Vec 各有优势,具体任务使用哪种词向量仍需要实验得出结论。与此同时,GloVe 对并行的支持更好,往往训练起来耗时更短,然而内存消耗更大。

ELMo(2018年)

image.png

image.png

ELMo 预训练得到对应单词的 Embedding 层和两方向 LSTM 层,这些向量将用在下游任务里。

image.png

在做下游任务时,通过预训练网络得到单词的 Embedding 层和多层双向 LSTM 层,归一化加权成一个向量输入到下游任务中。相比 word2vec 的静态词向量, ELMo 在 embedding 层得到词向量,通过两层 LSTM 网络增加了上下文语境信息,生成动态词向量。

image.png

ELMo 不仅学习了单词的词向量,还学习了一个双层双向 LSTM 网络,且实验表明较低层的 LSTM 抓住的是词汇的句法信息,较高层次的 LSTM 向量抓住的是词汇的语义信息。通过 LSTM 网络对最底层 word Embedding 的动态调整,实现多义词的功能。

GPT(Generative Pre-Training)(2018年)

2018年提出的 GPT,全称是生成式的预训练,它是一种基于多层 transformer 的单向语言模型。GPT 总体包括两个阶段:首先利用其语言模型的特性在海量语料库上进行预训练;完成预训练后,通过 fine-tune 的模型解决下游任务。如下图所示,GPT 可以用于丰富的任务类型。

image.png

乍看之下,GPT与 ELMo 很像,区别主要在于:

使用 transformer 取代 LSTM 对特征进行抽取。Transformer 是当前 NLP 领域最强的特征抽取器,可以更加充分地提取语义特征。

坚持使用单向语言模型。ELMo 的一个显著特点是利用上下文信息对词向量进行表征,而 GPT 使用的是单向语言模型,仅使用上文信息对下文进行预测。这种选择比较符合人类的阅读方式,同时也有一定的局限性,如阅读理解中,我们通常需要结合上下文才能进行决策,仅考虑上文会使预训练丢失掉很多信息量。(注:这一点会在 BERT 中进行优化。)

GPT 预训练后的使用方式也与 ELMo 不同,ELMo 属于基于特征的预训练方式,而 GPT 在完成预训练后需要进行 finetune(类似于图像中迁移学习的方式)。

image.png

GPT 在12个 NLP 任务中有9个取得了 SOTA,效果十分惊艳。GPT 是语言模型中浓墨重彩的一笔,对之后的语言模型发展产生了很多影响。

BERT(2018年)

ELMo 通过双向拼接融合词向量表征上下文,GPT 利用单向语言模型来获取向量表达,2018年提出的 BERT对GPT 的改进有点借鉴于 NNLM 到 CBOW 的改进,将任务从预测句中下一个词变为从句子中抠掉一个词用上下文去预测这个词,同时增加了预测是否是下一个句子的任务。模型结构沿用 GPT 的思想,利用 transformer 的 self-attentnion 和 FFN 前馈网络叠加,充分利用 transformer 强大特征抽取能力。

image.png

相比 GPT 在微调时需要加入起始符、终结符和分隔符等改造,BERT 在训练时就将其加入,保证预训练和微调的输入之间没有差异,提高预训练的可利用性。

BERT 是对近几年 NLP 进展(特征抽取器、语言模型)的集大成者,充分利用大量的无监督数据,将语言学知识隐含地引入特定任务。

GPT-2(2019年)

2019年提出的 GPT-2 文本生成的效果十分惊艳。这里对 GPT-2 进行简单的讨论,主要关注其优化点。

对数据质量进行筛选,使用更高质量的数据;

数据的选取范围更广,包括多个领域;

使用更大的数据量;

加大模型,增加参数(15亿参数),是 BERT large(3亿参数)五倍的参数量,两倍的深度,这里体现出深层神经网络的强大表达能力;

对 transformer 网络结构进行微调如下:调整 layer-norm 的位置,根据网络深度调整部分初始化,调整部分超参;

如论文名称 Language Models are Unsupervised Multitask Learners(无监督多任务学习器,这个标题非常好地解释了语言模型的本质),GPT-2 更加强调了语言模型天生的无监督和多任务这两种特性,这也是当前 NLP 领域最显著的两个趋势。

直观上而言就是 GPT-2 使用更多更优质更全面的数据,并增加模型的复杂度。除此以外,GPT-2 其实还蕴含了很多深意,值得进行深入研究。

有意思的是,GPT-2 依然坚持使用单向语言模型,bert 论文中得到的结论是“双向语言模型所获得的提升最大,其次预测下个句子对部分任务影响较大”,既然如此,那么为什么 GPT-2 依然坚持使用单向语言模型呢?这个问题看似是 GPT-2固执己见,但可能涉及到了语言模型的根本思想,就是一个语言模型的本质是什么。语言模型是否应该是单向的呢,bert 的 mask 操作是否会造成一定的局限性呢,而这是否又是GPT-2 中文文本生成任务如此惊艳的原因呢。GPT-2 可能是想要解决这些问题才会坚持使用单向语言模型,这里希望大家可以继续深入讨论,期待 GPT-3会得到更加丰满的解释。

与此同时,GPT-2 由于参数量实在是太大,同等参数量大小,大部分任务效果并不如 bert,但它仍然值得我们进行深入探究。

总结

我们对比了两个模型 LSTM+CRF 和 BERT+CRF 的在开源数据集 MSRA 上的效果,BERT 优势明显。

image.png

在我们对话系统的槽位提取任务中,利用当前有限的标注数据,BERT+CRF 模型取得了 精度86.1%,召回88.9%,F1值87.5% 的效果;

在意图分类任务中,利用 BERT+FST 模型取得 精度69.71%,召回73.8%, F1值71.7% 的效果。

当前,我们在验证使用 BERT+CRF 模型做分类和槽提取的多任务联合模型。

关于我们

我们是蚂蚁金服财富对话算法团队,致力于用最新的算法,做最好的模型,造就更智能的对话系统,摘取 AI 皇冠上的明珠,欢迎讨论、转发。我们团队最近正在大力招聘 NLP 、推荐、用户画像方面的算法专家(P6-P9),欢迎联系谢世明 (世恩) shiming.xsm@antfin.com


参考:

吴军. 2012. 《数学之美》Bengio Y, Ducharme R, Vincent P, et al. A neural probabilistic language model[J]. Journal of machine learning research, 2003, 3(Feb): 1137-1155.Mikolov T, Karafiát M, Burget L, et al. Recurrent neural network based language model[C]//Eleventh annual conference of the international speech communication association. 2010.Mikolov T, Sutskever I, Chen K, et al. Distributed representations of words and phrases and their compositionality[C]//Advances in neural information processing systems. 2013: 3111-3119.Peters M E, Neumann M, Iyyer M, et al. Deep contextualized word representations[J]. arXiv preprint arXiv:1802.05365, 2018.Radford A, Narasimhan K, Salimans T, et al. Improving language understanding by generative pre-training[J]. URL https://s3-us-west-2. amazonaws. com/openai-assets/research-covers/languageunsupervised/language understanding paper. pdf, 2018.Radford A, Wu J, Child R, et al. Language models are unsupervised multitask learners[J]. URL https://openai. com/blog/better-language-models, 2019.Devlin J, Chang M W, Lee K, et al. Bert: Pre-training of deep bidirectional transformers for language understanding[J]. arXiv preprint arXiv:1810.04805, 2018.

目录
相关文章
|
5月前
|
存储 人工智能
GPT-4尚未出现自我意识!这项研究用上帝之点解读,迈向AGI局限无法克服
【6月更文挑战第21天】研究人员构建了智能与意识的“飞行模型”,定义了全知全能代理(Ω点)和绝对零代理(α点),以此评估AI的智能水平。目前AI接近人类智能但缺乏自我意识。该模型为理解AI的智能和意识提供新视角,但也因理论概念的实证支持不足及忽视环境影响的多样性而受到批评。[DOI: 10.13140/RG.2.2.24518.28484]
80 6
|
29天前
|
人工智能 自然语言处理
从迷茫到精通:揭秘模型微调如何助你轻松驾驭AI新热点,解锁预训练模型的无限潜能!
【10月更文挑战第13天】本文通过简单的问题解答形式,结合示例代码,详细介绍了模型微调的全流程。从选择预训练模型、准备新任务数据集、设置微调参数,到进行微调训练和评估调优,帮助读者全面理解模型微调的技术细节和应用场景。
67 6
|
1月前
|
人工智能 自然语言处理 BI
从数据积累到大模型的智能飞跃,你准备好了吗?
在数据驱动的时代,人工智能(AI)正重塑世界。蚂蚁集团的师文汇在「DATA+AI」论坛上发表演讲,阐述了《数据驱动的AI原生应用与开放框架》。他指出,AI应用经历了从数据积累到大模型的智能飞跃,数据已成为智能应用成功的关键。师文汇强调,构建智能应用需结合优质大模型与行业数据。演讲还介绍了AI原生应用的研发变革与挑战,包括编程模型转变、研发范式的不确定性及与现有系统的交互等问题。此外,他还分享了AI原生应用框架的思考与探索,提出了泛ETL、实验反馈机制及应对不确定性等解决方案,并展示了DB-GPT在政企、金融等多个领域的应用案例。
|
3月前
|
机器学习/深度学习 人工智能 自然语言处理
AI运作的基本理论
AI已从科幻走进现实,融入日常生活,如智能手机助手、智能家居、自动驾驶等。AI的发展是一部科学史诗,从简单逻辑推理进化到深度学习。机器学习作为核心,包含监督、无监督学习及深度学习等,如卷积神经网络处理图像、递归神经网络处理序列数据。AI在医疗、金融、教育等多个领域广泛应用,如辅助诊断、市场分析、个性化教学等,同时带来就业、隐私及伦理等社会议题。随着技术进步,AI正重塑世界,需谨慎管理其影响以惠及全人类。
52 2
|
4月前
|
Web App开发
生成式模型不只会模仿!哈佛、UCSB等最新成果:性能可超越训练集专家水平
【7月更文挑战第23天】研究人员从哈佛大学、UC Santa Barbara等机构展示了生成式模型的新突破:在特定任务上实现超越训练集专家水平的性能。通过“低温度采样”减少模型不确定性,实验中一个名为ChessFormer的模型在下棋任务上表现出了超越性,即性能超过了训练集中专家的平均水平。这项工作揭示了生成式模型在特定条件下实现超越的可能性,为该领域的研究和应用提供了新视角。[论文](https://arxiv.org/pdf/2406.11741)
34 2
|
缓存 人工智能 自然语言处理
GPT-4等大模型迎来进化转折点:不只是使用,还会自己制作工具了
GPT-4等大模型迎来进化转折点:不只是使用,还会自己制作工具了
212 0
|
机器学习/深度学习 人工智能 自然语言处理
与生成模型相比,为何机器人研究还在用几年前的老方法?(1)
与生成模型相比,为何机器人研究还在用几年前的老方法?
119 0
|
机器学习/深度学习 人工智能 自然语言处理
与生成模型相比,为何机器人研究还在用几年前的老方法?
与生成模型相比,为何机器人研究还在用几年前的老方法?
119 0
|
机器学习/深度学习 人工智能 自然语言处理
与生成模型相比,为何机器人研究还在用几年前的老方法?(2)
与生成模型相比,为何机器人研究还在用几年前的老方法?
|
Web App开发 机器学习/深度学习 人工智能
一场关于ChatGPT话语权的深度思考:人类会在大模型中迷失自我吗?
一场关于ChatGPT话语权的深度思考:人类会在大模型中迷失自我吗?
166 0