神经网络语言模型

神经网络语言模型

N-gram语言模型接收离散向量作为输入,一般来说,这些输入都是由词典中的词使用one-hot编码之后获得,因此也引入了one-hot编码的一些弊端。

从语义相似性的角度,{“猎豹”,“花豹”}要比{“猎豹”,“汽车”}的语义相似度更高,在很多句子中,“猎豹”“花豹”是可以相互替换的,这表明从语法规则上来说,这两个词的语义也更相似。但是经过one-hot编码之后的词与词之间失去了语义关联,因为编码后的任意两个向量都是单位向量且彼此正交,因此任意两个向量之间的距离都相等,即词与词之间丢失了距离信息。这一点严重限制了N-gram模型的性能。

N-gram模型无法解决长距离依赖(long dependency)问题。一般在使用N-gram模型时,N的取值为3~5,因为超过5之后模型性能的提升不大,但是计算复杂度却大幅增加。

前馈神经网络语言模型通过结合词向量(word embedding)和前馈神经网络来解决上面两个问题。

前馈神经网络语言模型接收低维稠密向量作为输入,这些低位稠密向量由one-hot编码之后的高维稀疏向量训练产生,在训练过程中,高维稀疏向量经过学习与压缩,维度降低且学习到了词汇之间的语义关系。

语言模型本质是计算 $P(w_1,w_2,w_3,…,w_n)$,即给定句子的概率分布,而神经网络强大的非线性拟合能力很适合拟合概率分布。并且神经网络模型可以获取到当前词汇下文的信息,这一点是N-gram语言模型所不具备的,另外神经网络模型能够利用到的的上下文词汇长度要比N-gram模型长的多,即看到的信息也要更多更广。

前馈神经网络模型

神经网络语言模型中最简单的就是前馈神经网络模型。前馈神经网络将 $x_t$ 的前n-1个词的向量进行拼接作为网络输入,经过一次非线性变换,最后输出字典中每个词的概率作为预测结果,其中 $x_t$ 为序列中的第t个词。

前馈神经网络结构图

上述过程主要分为2大步骤:

  1. 先将 $x_t$ 前的n-1个单词从词典信息转化为特征向量,这一步通常被称为特征映射或者词嵌入。每个词在词典V(V为词典大小,即词典中词个数)中的index(位置顺序)通过映射矩阵C转换成一个维度为m的特征向量,然后将n-1个单词的特征向量进行拼接,合并成一个(n−1)*m维的向量。

  2. 合并成的(n−1)*m维向量作为输入送入神经网络,经过一个隐藏层,将输入转换为V维的概率分布,每一维度表示词典中每个词出现在位置t的概率。

可选的部分是将(n−1)*m维的输入向量和隐藏层结果合并预测概率分布,如图中的虚线曲线部分所示。

从上面的架构图可以看出,前馈神经网络的输入是当前词前后范围很广的词汇,通过当前位置前n-1个词来预测当前位置的概率分布,这个n可以很大,一般取值在数十到数百。相比于N-gram模型只能接受前面3-5个词作为输入,从获取上下文信息的角度上,神经网络语言模型的上限就要高得多。

循环神经网络语言模型

前面介绍到的前馈神经网络将一个个的输入单独地送入隐藏层,对于模型来说,在隐藏层之前的输入是隔离开的,前一个输入和后一个输入所携带的信息无法互通。但是,语言模型的一大特点是,即前面的输入和后面的输入是有关联的,这一点在多义词上表现尤为明显。

比如,“一头牛”“你真牛”中的同一个“牛”字在不同上下文中的含义不同,甚至词性都不一样,而由于同一个字在词典中出现一次,只有一个index,所以在前馈神经网络中经过特征映射之后只会有一个特征向量,即同一个字在不同的上下文中虽然有不同的含义,却只会有一个固定的特征向量表示,这明显是不合理的。所以很自然的,我们引入了循环神经网络语言模型。

循环神经网络模型的特殊之处在于每一个RNN神经元不仅接收原始的输入,还会保留上一时刻的隐藏状态,在二者共同作用下生成一个新的输出。

循环神经网络按时间线展开

x为输入向量,s表示隐藏层的值(这一层可以是多个节点),o表示输出层的值。

对于上图左侧的RNN神经元,如果把右侧W去掉,它就变成了全连接神经网络中的一个神经元。循环神经网络的隐藏层的值s不仅仅取决于当前这次的输入x,还取决于上一次隐藏层的值s。隐藏层上一次的值经过权重矩阵 W之后作为这一次输入的一部分。

从上图右侧可以看出,t时刻网络接收到输入 $x_t$ 之后,生成输出层结果 $o_t$,而 $o_t$ 不仅仅与输入 $x_t$ 有关,也与前一时刻的隐藏层结果 $s_{t-1}$ 有关。在 $s_{t-1}$ 和 $x_t$ 的共同作用下,计算出输出结果 $o_{t}$ ,同时生成 $s_{t}$ 用于下一次计算。通过这种类似接力的方式,每一时刻可以保留部分之前时刻的信息。

通过下图可以明显看出在模型训练过程中,模型可以感受到的文档信息:

N-gram模型与神经网络模型上下文信息示意图

上图为unigram、bigram、前馈神经网络和单向循环神经网络四个模型预测“本”字在当前位置出现的概率,其中蓝框部分为网络可以感受到的字的范围。

当我们预测“智能文本实战”这个序列中的“本”字的概率时,N-gram模型只能接收到有限范围的信息,例如unigram只包含当前时刻,即“本”一个字的信息,而bigram除了当前字之外,还可以获取到前一个字,即“文本”二字的信息。

而神经网络模型的感受范围就要广得多,前馈神经网络可以获取到前面数十个字的信息,而循环神经网络则更进一步,每个字都融合了之前字的信息。


  上一篇
NER技术的探索与实践 NER技术的探索与实践
命名实体识别(Named Entity Recognition,简称NER),是指识别文本中具有特定意义的实体,主要包括人名、地名、机构名、专有名词等,一般的也可以识别特定类型的、人为规定的实体。
2021-11-01
下一篇 
语言模型——N-gram模型 语言模型——N-gram模型
N-gram模型是一种基于马尔科夫假设的语言模型,即当前词出现的可能性大小只与这个单词前面一个或者几个单词有关,而与这几个单词之外的其他单词无关。
2021-05-26
   目录