一文读懂循环神经网络

循环神经网络分类

(1)RNN

(2)LSTM

RNN循环神经网络

为什么需要RNN

之前的DNN和CNN中,训练样本的输入和输出是比较的确定的。但是有一类问题DNN和CNN不好解决,就是训练样本输入是连续的序列,且序列的长短不一。且某些任务需要能够更好的处理序列的信息,即前面的输入和后面的输入是有关系的。

举例来说:当我们在理解一句话意思时,孤立的理解这句话的每个词是不够的,我们需要处理这些词连接起来的整个序列; 当我们处理视频的时候,我们也不能只单独的去分析每一帧,而要分析这些帧连接起来的整个序列。

所以为了解决一些这样类似的问题,能够更好的处理序列的信息,RNN就诞生了。

RNN网络结构

简单理解:

(1)如果把上面有W的那个带箭头的圈去掉,它就变成了最普通的全连接神经网络。

(2)x是一个向量,它表示输入层的值(这里面没有画出来表示神经元节点的圆圈)。

(3)s是一个向量,它表示隐藏层的值(这里隐藏层面画了一个节点,你也可以想象这一层其实是多个节点,节点数与向量s的维度相同)。o也是一个向量,它表示输出层的值。

(4)U是输入层到隐藏层的权重矩阵,V是隐藏层到输出层的权重矩阵。

(5)W代表什么?循环神经网络的隐藏层的值s不仅仅取决于当前这次的输入x,还取决于上一次隐藏层的值s。权重矩阵 W就是隐藏层上一次的值作为这一次的输入的权重。

上图中左边是RNN模型没有按时间展开的图,如果按时间序列展开,则是上图中的右边部分。我们重点观察右边部分的图。

这幅图描述了在序列索引号t附近RNN的模型。其中:

1)x^{(t)}代表在序列索引号t时训练样本的输入。同样的,x^{(t-1)}x^{(t+1)}代表在序列索引号t−1和t+1时训练样本的输入。

2)h^{(t)}代表在序列索引号t时模型的隐藏状态。h^{(t)}x^{(t)}h^{(t-1)}共同决定。

3)o^{(t)}代表在序列索引号t时模型的输出。o^{(t)}只由模型当前的隐藏状态h^{(t)}决定。

4)L^{(t)}代表在序列索引号t时模型的损失函数。

5)y^{(t)}代表在序列索引号t时训练样本序列的真实输出。

6)U,W,V这三个矩阵是我们的模型的线性关系参数,它在整个RNN网络中是共享的,这点和DNN很不相同。 也正因为是共享了,它体现了RNN的模型的“循环反馈”的思想。 

RNN前向传播算法

有了上面的模型,RNN的前向传播算法就很容易得到了。

对于任意一个序列索引号t,隐藏状态h^{(t)}x^{(t)}h^{(t-1)}得到:

h^{(t)} = \sigma(z^{(t)}) = \sigma(Ux^{(t)} + Wh^{(t-1)} +b )

其中σ为RNN的激活函数,一般为tanh.

序列索引号t时模型的输出o^{(t)}的表达式比较简单:

o^{(t)} = Vh^{(t)} +c

在最终在序列索引号tt时我们的预测输出为:

\hat{y}^{(t)} = \sigma(o^{(t)})

通常由于RNN是识别类的分类模型,所以上面这个激活函数一般是softmax。

通过损失函数L^{(t)},比如对数似然损失函数,我们可以量化模型在当前位置的损失,即\hat{y}^{(t)}y^{(t)}的差距。

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值