目录
参考:https://zhuanlan.zhihu.com/p/30844905
1. 概述
输出会反馈到输入的神经网络:
循环神经网络(Recurrent Neural Networks ,以下简称RNN),它广泛的用于自然语言处理中的语音识别,手写书别以及机器翻译等领域。
在前面讲到的DNN和CNN中,训练样本的输入和输出是比较的确定的。但是有一类问题DNN和CNN不好解决,就是训练样本输入是连续的序列,且序列的长短不一,比如基于时间的序列:一段段连续的语音,一段段连续的手写文字。这些序列比较长,且长度不一,比较难直接的拆分成一个个独立的样本来通过DNN/CNN进行训练。
2. RNN的模型
简单的循环神经网络如,它由输入层、一个隐藏层和一个输出层组成:
如果把上面有W的那个带箭头的圈去掉,它就变成了最普通的全连接神经网络,
x是一个向量,它表示输入层的值(这里面没有画出来表示神经元节点的圆圈);
s是一个向量,它表示隐藏层的值(这里隐藏层面画了一个节点,你也可以想象这一层其实是多个节点,节点数与向量s的维度相同);
U是输入层到隐藏层的权重矩阵,
o也是一个向量,它表示输出层的值;
V是隐藏层到输出层的权重矩阵。
那么,现在我们来看看W是什么。循环神经网络的隐藏层的值s不仅仅取决于当前这次的输入x,还取决于上一次隐藏层的值s。权重矩阵 W就是隐藏层上一次的值作为这一次的输入的权重。
关键一点是,
的值不仅仅取决于
,还取决于
。
公式来表示循环神经网络的计算方法:
U矩阵是连接输入层m与隐藏层n之间的权重矩阵 U矩阵维度 mn
W矩阵是一个nn的方阵 用于跟S_t-1相乘
m是x的长度也就是输入神经元的个数
n为隐藏神经元的个数
实际在实施的时候会将X_t 与 S_t-1进行拼接 得到 BS(m+n)的矩阵
将U跟W进行拼接得到 (m+n)n的矩阵
再进行相乘 得到 BS*n 的S_t
如图:
xxxxx
总结一下:
之前DNN 只要X跟U矩阵相乘 只不过再多了个S_t-1跟W相乘