在条件概率公式的链式传导下, 式 ( 1 ) 式(1) 式(1)中联合概率可拆解成多个条件概率的乘积,所以语句符合语法规范的概率可改写为:
P ( S ) = P ( W 1 , W 2 , … , W n ) = P ( W 1 ) P ( W 2 ∣ W 1 ) ⋯ P ( W n ∣ W 1 , W 2 , … , W n − 1 ) P(S) = P(W_1, W_2, …, W_n) = P(W_1)P(W_2| W_1) \cdots P(W_n| W_1, W_2, \dots , W_{n-1}) P(S)=P(W1,W2,…,Wn)=P(W1)P(W2∣W1)⋯P(Wn∣W1,W2,…,Wn−1) P ( S ) = P ( W 1 , W 2 , … , W n ) = ∏ t = 1 n P ( W t ∣ W 1 , ⋯ , W t − 1 ) (2) P(S) = P(W_1, W_2, …, W_n) = \prod_{t=1}^{n} P(W_t | W_1, \cdots, W_{t-1} ) \tag{2} P(S)=P(W1,W2,…,Wn)=t=1∏nP(Wt∣W1,⋯,Wt−1)(2)具体来说,语言模型可理解为 式 ( 2 ) 式(2) 式(2)中条件概率 P ( W t ∣ W 1 , ⋯ , W t − 1 ) P(W_t | W_1, \cdots, W_{t-1} ) P(Wt∣W1,⋯,Wt−1) 的计算方法。且按技术的发展阶段和模型功能不同,语言模型的发展脉络大致可归纳为:统计语言模型,神经网络语言模型、文本生成模型和预训练语言模型。
在理想情况下,我们希望直接在特定任务中测试使用某语言模型后的任务效果,来评价语言模型的好坏。但该评价结果局限于某一具体任务,因此,独立于任务之外的间接模型评估方法被探索建立。
困惑度(perplexity)方法由语言模型定义衍生而出,它的核心思想是:通过语言模型对符合语法规范的标准语句预测概率的高低,来评价语言模型的效果。其计算公式如下所示:
p e r p l e x i t y ( S ) = p e r p l e x i t y ( W 1 , W 2 , … , W n ) = 2 − 1 n ∑ 1 n l o g [ P ^ L M ( W t ∣ W 1 , ⋯ , W t − 1 ) ] (6) perplexity(S) = perplexity(W_1, W_2, …, W_n) = 2^{-\frac{1}{n} \sum_{1}^{n} log[ \hat{P}_{LM}(W_t | W_1, \cdots, W_{t-1} ) ]} \tag{6} perplexity(S)=perplexity(W1,W2,…,Wn)=2−n1∑1nlog[P^LM(Wt∣W1,⋯,Wt−1)](6)
单词在句子出现的概率及条件概率可直接从语料库中统计得到,但随着预测语句长度增长,许多单词在预测语句中出现的上文搭配,在训练语料中未曾出现过。这导致统计得到的单词条件概率为0,使语言模型预测失效。为此衍生出了多种基于统计学原理,简化复杂前置条件概率计算的语言模型,如:Unigram 和 Ngram。
为简化具有复杂前置的条件概率计算,最理想的假设是认为单词在句中出现的概率相互独立,这称作Unigram模型。此条件下,单词在句中出现的条件概率等于该单词独立出现的概率,所以语句符合语法规范的概率可简化为:
P ( S ) = P ( W 1 , W 2 , … , W n ) = P ( W 1 ) P ( W 2 ) ⋯ P ( W n ) (3) P(S) = P(W_1, W_2, …, W_n) = P(W_1)P(W_2) \cdots P(W_n) \tag{3} P(S)=P(W1,W2,…,Wn)=P(W1)P(W2)⋯P(Wn)(3)
Unigram模型简化假设过于理想,实际单词间往往存在语境关系、其出现概率不相互独立,所以衍生出基于马尔科夫假设简化条件概率的 n n n 元语法模型(N-gram)。关于 N-gram model 的详细内容,请参见作者文章:语言模型:N元语法模型(N-gram)
虽然N-gram等模型有效缓解了长语句预测中,单词在预测语句上文条件下的条件概率极度稀疏(在语句较长时,近乎一定等于0)的问题。但训练得到的语言模型条件概率仍十分稀疏、容易引起模型预测失效,为此可引入模型平滑方法,进一步改善条件概率稀疏问题。详细内容,请参见作者文章:语言模型:统计语言模型的平滑方法
神经网络语言模型是解决统计语言模型(N-gram)条件概率稀疏的有效方法,它可以在保证最大 n n n 值的同时,获得稠密的单词条件概率 P ( W t ∣ W 1 , ⋯ , W t − 1 ) P(W_t | W_1, \cdots, W_{t-1} ) P(Wt∣W1,⋯,Wt−1)。
神经网络语言模型的结构一般可抽象为顺序排列的嵌入层、特征层和输出层三部分。其中,嵌入层负责将非数值类型的输入(文本)序列 ( x 1 , ⋯ , x T ) (x_1, \cdots, x_T) (x1,⋯,xT),转换成数值类型的编码向量 ( e 1 , ⋯ , e T ) (e_1, \cdots, e_T) (e1,⋯,eT);特征层负责从输入序列中提取特征,输出为一个可以表示历史信息的(隐藏)状态向量 ( h 1 , ⋯ , h T ) (h_1, \cdots, h_T) (h1,⋯,hT);输出层根据接收到的特征向量进行标签预测 ( o 1 , ⋯ , o T ) (o_1, \cdots, o_T) (o1,⋯,oT)。
其特征层,可使用多种类型的神经网络来提取特征,常见的有简单平均、前馈神经网络(前馈神经网络(feedforward neural network)可以是全连接神经网络或卷积神经网络)和循环神经网络三种2。
简单平均能处理不定长输入序列,它简单地将序列上文全部单词的词向量的直接平均值或加权平均值3作为本时刻的(隐藏)状态向量。
前馈神经网络要求输入是一个固定长度的序列,它与 N-gram 模型类似,都假设句子此时刻所表达的历史(语义)信息(即:隐藏状态)只与前面的 n−1 个词(token)有关;前馈神经网络某时刻的状态向量 h t = f D e n s e / C o n v ( e t − n + 1 , ⋯ , e t − 1 ; θ ) , t = 1 , 2 , 3 , ⋯ , T h_t = f_{Dense/Conv}(e_{t-n+1},\cdots, e_{t-1} ; \ \theta), \ \ t=1, 2, 3, \cdots, T ht=fDense/Conv(et−n+1,⋯,et−1; θ), t=1,2,3,⋯,T。
循环神经网络综合前两者优点,在能处理不定长输入序列的同时,也能有效提取输入序列中的特征信息。与只能接受前 − 1 个时刻信息的前馈神经网络不同,循环神经网络利用隐藏状态能记录序列此前所有时刻的信息。
循环神经网络(recurrent neural network, RNN)是转为处理不定长输入序列数据而设计的神经网络,它由全连接神经网络改进而来,理论上可以处理无限长度的输入序列数据(但因存在长期依赖问题4,实际上并不能处理很长的输入序列)。
具体内容,请参见作者文章:时序模型:循环神经网络(RNN)
长短期记忆网络(long short-term memory,LSTM)是最早被承认能有效缓解长期依赖问题的改进方案。它增设一个额外(状态信息)的记忆单元,并引入(信息)门控机制,来缓解沿时间维度上传播的梯度消失现象。具体内容,
请参见作者文章:时序模型:长短期记忆网络(LSTM)。
门控循环单元网络(Gated Recurrent Unit,GRU)是对LSTM模型计算效率上的改进,它未引入额外的记忆单元,且将逻辑门(从LSTM中的三个)简化为两个。实验结果表明:通常情况下,GRU模型能以更快的计算速度,达到与LSTM模型相似的效果5。
具体内容,请参见作者文章:时序模型:门控循环单元网络(GRU)
文本生成模型特征一类专门处理序列到序列转换(文本翻译、摘要或文本生成)任务的(神经网络)语言模型。这类模型统一采用编码器-解码器(Encoder-Decoder)架构,组合使用两组神经元数量相同的神经网络语言模型,将输入序列转换成长度不一定与其相等的输出序列。如下图所示:
beam search
Seq2Seq 是编码器-解码器(Encoder-Decoder)架构的最初实现,它采用两组LSTM(或GRU)网络作为编码器和解码器完成输入序列转换,且将编码器(Encoder)输出的最后时刻的(隐藏)状态向量 h t h_t ht 作为上下文向量传递给解码器(Decoder)作为初始状态向量 h 0 ′ h_{0^{'}} h0′。所以Seq2Seq模型中,编码器与解码器的隐藏层的神经元数量相同。
具体内容,请参见作者文章:文本生成:Seq2Seq
注意力机制(Attention Mechanism)是一种信息筛选方法,可进一步缓解LSTM和GRU中的长期依赖问题。加入注意力机制,可有效增强Sqe2Seq模型的长文本处理能力。
具体内容,请参见作者文章:文本生成:加入注意力(Attention)机制的Seq2Seq
改用全连接网络作为编码器和解码器,是彻底解决(无法根除的)RNN网络长期依赖问题的方法之一。使用全连接神经网络作为编码器和解码器的Transform模型,可处理远长于Seq2Seq模型的输入与输出文本(文献阐述:Transform模型最长可有效处理512个token组成的文本序列6)。
具体内容,请参见作者文章:文本生成:Transform
预训练模型是一种迁移学习策略,它分为两个训练阶段。首先,第一阶段针对特殊设计的预训练任务,采用易获取的大规模无标签语料训练出基础语言模型(是无监督学习,可以较低成本,充分利用大量易获取数据);然后,第二阶段根据指定任务的少量已标记训练数据进行**微调(fine tuning)**训练(是有监督学习),得到适用于具体任务的语言模型,在实际任务中可取得很好的效果。预训练模型的效果由模型结构和预训练任务共同决定。
根据预训练任务和模型结构不同,预训练语言模型可分为自回归(Autoregressive)模型和自编码(Autoencoder)模型两类。自回归(Autoregressive)模型,是一类对输入文本序列单向可见的语言模型,它根据上文来预测下一个单词,或根据下文来预测上一个单词;可拼接使用两个方向(从左至右和从右至左)的自回归模型,来实现双向语言模型。自编码(Autoencoder)模型,通常又被称为降噪自编码(Denosing Autoencoder)模型,是一类对输入文本序列双向可见的语言模型。它在输入序列中随机掩盖一些单词(相当于加入噪声),然后在预训练过程中根据上下文来预测被掩码单词,可被认为是一个降噪(denosing)的过程。
常见语言模型中,ELMo、GPT系列和XLNet属于自回归模型,BERT、ERINE、RoBERTa等属于自编码模型。
语法规范即:语言惯用的单词搭配习惯 ↩︎
详见邱锡鹏老师《神经网络与深度学习》一书中的第15.3.1节 深度序列模型的结构 ↩︎
加权平均的权重,可由注意力机制等方法给出。 ↩︎
长期依赖问题:由于时间步维度上不可避免的梯度消失现象,较远时刻处的状态信息,对预测本时刻状态不再产生影响。即:预测本时刻状态时,模型记录的较远时刻的状态信息已经丢失。 ↩︎
Chung, J., Gulcehre, C., Cho, K., & Bengio, Y. (2014). Empirical evaluation of gated recurrent neural networks on sequence modeling. arXiv preprint arXiv:1412.3555. ↩︎
Dai Z, Yang Z, Yang Y, et al. Transformer-xl: Attentive language models beyond a fixed-length context[J]. arXiv preprint arXiv:1901.02860, 2019. ↩︎