循环神经网络:语言模型

一、语言模型及自然语言处理简介

语言模型是自然语言处理的重要技术,而自然语言处理中最常见的是文本数据

实际上,一段文本可以看做是一段离散的时间序列。假设一段长度为 T T T的文本中的词依次为, w 1 , w 2 , . . . , w T w_1,w_2,...,w_T w1,w2,...,wT,那么在离散的时间序列中, w t ( 1 ≤ t ≤ T ) w_t(1\leq t \leq T) wt(1tT)可看作是在时间步长(time step)   t \ t  t的输出或者标签。

对于这样一段文本来说,语言模型将根据给定的训练数据集(如何计算,后面再说),计算该序列的概率:
P ( w 1 , w 2 , . . . , w T ) P(w_1,w_2,...,w_T) P(w1,w2,...,wT)

并将概率最大的文本作为输出。比如:

  • 语音识别中,给定一段 “ 厨房里食油用完了 ” 的语音,有可能会输出:“ 厨房里石油用完了 ”、“ 厨房里食油用完了 ” 两个读音完全相同的文本序列。而如果语言模型判断出后者概率较大,则后者就作为输出
  • 机器翻译中,对于英文 “ you go first ”,可能得到:“ 你走先 ”、“ 你先走 ” 两段文本。如果语言模型判断后者概率较大,则翻译正确

二、语言模型的计算

对于序列 w 1 , w 2 , . . . , w T w_1,w_2,...,w_T w1,w2,...,wT来说,计算公式如下:
P ( w 1 , w 2 , . . . , w T ) = ∏ t = 1 T P ( w t ∣ w 1 , . . . , w t − 1 ) P(w_1,w_2,...,w_T)=\prod_{t=1}^T P(w_t|w_1,...,w_{t-1}) P(w1,w2,...,wT)=t=1TP(wtw1,...,wt1)

比如,一段含有三个词的文本序列的概率为:
P ( w 1 , w 2 , w 3 ) = P ( w 1 ) P ( w 2 ∣ w 1 ) P ( w 3 ∣ w 1 , w 2 ) P(w_1,w_2,w_3)=P(w_1)P(w_2|w_1)P(w_3|w_1,w_2) P(w1,w2,w3)=P(w1)P(w2w1)P(w3w1,w2)

即需要计算:

  • 每个词的概率
  • 一个词在给定前几个词的情况下的条件概率

如果给定训练数据集,那么:

  • 每个词的概率 可以 = 这个词的频率 / 训练集词的总数
  • 一个词在给定前几个词的情况下的条件概率 可以 = 这几个词相邻的频率 / 前几个词相邻的词频

三、N元语法

对于上述语言模型来说,如果一个序列过长,那么计算和存储词频的复杂度是很大的(可以适当的感受一下^^)。所以提出了 N N N元语法的概念:通过马尔科夫假设简化模型。比如二元语法:只考虑当前词在前面一个词条件下的条件概率;三元语法:只考虑和前面两个词的条件概率;以此类推…

循环神经网络:语言模型_第1张图片

缺点:该方法在简化模型的同时,准确率也会减小。

你可能感兴趣的:(深度学习)