循环神经网络RNN(很简洁的讲解)

介绍

循环神经网络(recurrent neural network)或 RNN (Rumelhart et al., 1986c)
是一类用于处理序列数据的神经网络。就像卷积网络是专门用于处理网格化数据 X(如一个图像)的神经网络, 循环神经网络是专门用于处理序列 x ( 1 ) , …. x ( T ) 的神经网络。正如卷积网络可以很容易地扩展到具有很大宽度和高度的图像,以及处理大小可变的图像, 循环网络可以扩展到更长的序列(比不基于序列的特化网络长得多),大多数循环网络也能处理可变长度的序列。

从多层网络出发到循环网络,我们需要利用上世纪 80 年代机器学习和统计模
型早期思想的优点:在模型的不同部分共享参数。 参数共享使得模型能够扩展到不同形式的样本(这里指不同长度的样本)并进行泛化。如果我们在每个时间点都有一个单独的参数,我们不但不能泛化到训练时没有见过序列长度,也不能在时间上共享不同序列长度和不同位置的统计强度。当信息的特定部分会在序列内多个位置出现时,这样的共享尤为重要。例如,考虑这两句话: “I went to Nepal in 2009’’ 和“In 2009, I went to Nepal.” 如果我们让一个机器学习模型读取这两个句子,并提取叙述者去Nepal的年份,无论 “2009 年’’ 是作为句子的第六个单词还是第二个单词出现,我们都希望模型能认出 “2009 年’’ 作为相关资料片段。假设我们要训练一个处理固定长度句子的前馈网络。传统的全连接前馈网络会给每个输入特征分配一个单独的参数,所以需要分别学习句子每个位置的所有语言规则。相比之下, 循环神经网络在几个时间步内共享相同的权重,不需要分别学习句子每个位置的所有语言规则。

RNN模型

话不多说了,直接上图吧!清晰明了~~~

这里写图片描述
这里写图片描述

RNN模型计算公式:

这里写图片描述

其中:

  • a ( t ) 为中间结果
  • h ( t ) 为隐藏层
  • o ( t ) 为未归一化的输出层
  • y ^ ( t ) 为归一化的输出层

注意:其中的参数的偏置向量 b 和 c 连同权重矩阵 U、 V 和 W,分别对应于输入到隐藏、隐藏到输出和隐藏到隐藏的连接,上述公式种的W、U、V在所有序列数据上共享。

梯度更新

这里写图片描述

注意:对于U、W、V来说,它们每次的总更新是所有序列上数据对U、W、V更新的叠加。

猜你喜欢

转载自blog.csdn.net/qq_29462849/article/details/80633975