循环神经网络-语言模型

在构建语言模型中,我们需要理解n元模型以及网络架构。

一、 n元语法

n元语法通过马尔可夫假设简化模型,马尔科夫假设是指一个词的出现只与前面n个词相关,即n阶马尔可夫链(Markov chain of order n)。

来看以下几个例子,下面分别是1元,2元,3元语法模型的结果。

$P\left(w_{1}, w_{2}, w_{3}, w_{4}\right)=P\left(w_{1}\right) P\left(w_{2}\right) P\left(w_{3}\right) P\left(w_{4}\right)$
$P\left(w_{1}, w_{2}, w_{3}, w_{4}\right)=P\left(w_{1}\right) P\left(w_{2} | w_{1}\right) P\left(w_{3} | w_{2}\right) P\left(w_{4} | w_{3}\right)$
$P\left(w_{1}, w_{2}, w_{3}, w_{4}\right)=P\left(w_{1}\right) P\left(w_{2} | w_{1}\right) P\left(w_{3} | w_{1}, w_{2}\right) P\left(w_{4} | w_{2}, w_{3}\right)$

事实上,我们只需要了解n元语法的意义便可,并不需要做更加细致的探讨。

$P\left(w_{1}, w_{2}, \dots, w_{T}\right)=\prod_{t=1}^{T} P\left(w_{t} | w_{t-(n-1)}, \dots, w_{t-1}\right)$

对于语言模型,我们所用的则是n-1元语法,意味着当我们预测第n的字的时候,我们是基于前n-1个词进行判断的。

二、 网络架构

以下便是语言模型的网络架构,可以看到我们这里只是输入了一个字符x<1>,后续的输入均是上一步的输出y得出的。

根据这个模型,我们可以让模型自动生成文本,这也就是之前网络中流行的傻瓜论文,歌词谱写等的模型原型。

三、 梯度裁剪

由于循环神经网络的深度非常大,因此我们需要考虑解决梯度爆炸的问题。常用的方法则是梯度裁剪。梯度裁剪是一种常用解决梯度爆炸的方法,即当梯度超过一定大小时,梯度自动取该阈值。

模型在梯度下降的过程中,始终不会超过该阈值。

posted @ 2020-03-06 16:39  金思远  阅读(485)  评论(0编辑  收藏  举报