语言模型及RNN模型

语言模型

一段自然语言文本可以看作是一个离散时间序列,给定一个长度为 T T 的词的序列 w 1 , w 2 , , w T w_1, w_2, \ldots, w_T ,语言模型的目标就是评估该序列是否合理,即计算该序列的概率:

P ( w 1 , w 2 , , w T ) . P(w_1, w_2, \ldots, w_T).

语言模型

假设序列 w 1 , w 2 , , w T w_1, w_2, \ldots, w_T 中的每个词是依次生成的,我们有

在这里插入图片描述

例如,一段含有4个词的文本序列的概率

P ( w 1 , w 2 , w 3 , w 4 ) = P ( w 1 ) P ( w 2 w 1 ) P ( w 3 w 1 , w 2 ) P ( w 4 w 1 , w 2 , w 3 ) . P(w_1, w_2, w_3, w_4) = P(w_1) P(w_2 \mid w_1) P(w_3 \mid w_1, w_2) P(w_4 \mid w_1, w_2, w_3).

语言模型的参数就是词的概率以及给定前几个词情况下的条件概率。设训练数据集为一个大型文本语料库,如维基百科的所有条目,词的概率可以通过该词在训练数据集中的相对词频来计算,例如, w 1 w_1 的概率可以计算为:

在这里插入图片描述

其中 n ( w 1 ) n(w_1) 为语料库中以 w 1 w_1 作为第一个词的文本的数量, n n 为语料库中文本的总数量。

类似的,给定 w 1 w_1 情况下, w 2 w_2 的条件概率可以计算为:

在这里插入图片描述

其中 n ( w 1 , w 2 ) n(w_1, w_2) 为语料库中以 w 1 w_1 作为第一个词, w 2 w_2 作为第二个词的文本的数量。

n元语法

序列长度增加,计算和存储多个词共同出现的概率的复杂度会呈指数级增加。 n n 元语法通过马尔可夫假设简化模型,马尔科夫假设是指一个词的出现只与前面 n n 个词相关,即 n n 阶马尔可夫链(Markov chain of order n n ),如果 n = 1 n=1 ,那么有 P ( w 3 w 1 , w 2 ) = P ( w 3 w 2 ) P(w_3 \mid w_1, w_2) = P(w_3 \mid w_2) 。基于 n 1 n-1 阶马尔可夫链,我们可以将语言模型改写为

P ( w 1 , w 2 , , w T ) = t = 1 T P ( w t w t ( n 1 ) , , w t 1 ) . P(w_1, w_2, \ldots, w_T) = \prod_{t=1}^T P(w_t \mid w_{t-(n-1)}, \ldots, w_{t-1}) .

以上也叫 n n 元语法( n n -grams),它是基于 n 1 n - 1 阶马尔可夫链的概率语言模型。例如,当 n = 2 n=2 时,含有4个词的文本序列的概率就可以改写为:
在这里插入图片描述

循环神经网络

本节介绍循环神经网络,下图展示了如何基于循环神经网络实现语言模型。我们的目的是基于当前的输入与过去的输入序列,预测序列的下一个字符。循环神经网络引入一个隐藏变量 H H ,用 H t H_{t} 表示 H H 在时间步 t t 的值。 H t H_{t} 的计算基于 X t X_{t} H t 1 H_{t-1} ,可以认为 H t H_{t} 记录了到当前字符为止的序列信息,利用 H t H_{t} 对序列的下一个字符进行预测。
Image Name

循环神经网络的构造

我们先看循环神经网络的具体构造。假设 X t R n × d \boldsymbol{X}_t \in \mathbb{R}^{n \times d} 是时间步 t t 的小批量输入, H t R n × h \boldsymbol{H}_t \in \mathbb{R}^{n \times h} 是该时间步的隐藏变量,则:

H t = ϕ ( X t W x h + H t 1 W h h + b h ) . \boldsymbol{H}_t = \phi(\boldsymbol{X}_t \boldsymbol{W}_{xh} + \boldsymbol{H}_{t-1} \boldsymbol{W}_{hh} + \boldsymbol{b}_h).

其中, W x h R d × h \boldsymbol{W}_{xh} \in \mathbb{R}^{d \times h} W h h R h × h \boldsymbol{W}_{hh} \in \mathbb{R}^{h \times h} b h R 1 × h \boldsymbol{b}_{h} \in \mathbb{R}^{1 \times h} ϕ \phi 函数是非线性激活函数。由于引入了 H t 1 W h h \boldsymbol{H}_{t-1} \boldsymbol{W}_{hh} H t H_{t} 能够捕捉截至当前时间步的序列的历史信息,就像是神经网络当前时间步的状态或记忆一样。由于 H t H_{t} 的计算基于 H t 1 H_{t-1} ,上式的计算是循环的,使用循环计算的网络即循环神经网络(recurrent neural network)。

在时间步 t t ,输出层的输出为:

O t = H t W h q + b q . \boldsymbol{O}_t = \boldsymbol{H}_t \boldsymbol{W}_{hq} + \boldsymbol{b}_q.

其中 W h q R h × q \boldsymbol{W}_{hq} \in \mathbb{R}^{h \times q} b q R 1 × q \boldsymbol{b}_q \in \mathbb{R}^{1 \times q}

发布了123 篇原创文章 · 获赞 71 · 访问量 11万+

猜你喜欢

转载自blog.csdn.net/boke14122621/article/details/104321048
今日推荐