Recurrent neural network(循环神经网络)

RNN(Recurrent Neural Network)是一类用于处理序列数据的神经网络。在bert,transformer没有问世以前,RNN在NLP任务中的运用是十分广泛的。为此也诞生了许多基于RNN的模型,例如我们常常提到的LSTM等等。在这里我们先介绍最简单的RNN模型,simple-RNN。

1.RNN的模型结构

Recurrent neural network(循环神经网络)_第1张图片

 上图所展示的便是一个单层(单向)的RNN的结构。在结构中我们可以看到,一个单层的RNN的模型可以看成由三个部分组成:输入层,隐藏层和输出层。这里我们按照图中所示,将X_t赋给观察,将H_t赋给隐变量,将O_t赋给输出。我们可以看到O_t的输出依赖于H_t的输出,而H_t的输出又依赖于我H_(t-1)和X_(t-1)的输入。

Recurrent neural network(循环神经网络)_第2张图片

上图所示的便是RNN模型的具体的实现。也就是说,当我们t=1时输入“你”的时候,模型将“你” 和H_1结合,形成H_2,再由H_2生成我们所看到的输出——“好”。也就是说你当前输入得X_t和你所输出的O_t并没有什么关系。

Recurrent neural network(循环神经网络)_第3张图片

上图所示便是RNN的三个部分之间的公式。从公式中我们也可以看出H_t取决于输入的H_(t-1)和X_(t-1)。在这里我们设置两个可以学习的权重矩阵:W_hh以及W_hx。而在H_t到输出O_t之间我们也设置了一个可以学习的参数W_ho。

Recurrent neural network(循环神经网络)_第4张图片

 上图为一个RNN输入输出模块所对应的具体流程及其参数。

2.困惑度(RNN的评价指标)

Recurrent neural network(循环神经网络)_第5张图片

3.梯度裁剪

Recurrent neural network(循环神经网络)_第6张图片

本文的目的更多的在于介绍RNN的结构及其模型相应的运作模式,代码方面还有待后续的补充。

你可能感兴趣的:(机器学习)