神经网络知识点汇总——RNN

RNN,循环神经网络是一种最新的神经网络结构,和CNN不同的是,它不光在spatial上有一个forward的方向,同时还有一个依赖于时间的传播方向。其中最出名的,当属LSTM(long short time memory)长短期记忆网络。

RNN architecture

RNN

  传统的RNN的结构如上所示(左边的图为原始结构,右边的为按照时间序列展开后的结构,这里一个圆圈代表一层,是一系列神经元的集合,这里只画了一个隐藏层),这里纵向方向为FNN中的空间索引防线,横向方向为时间方向,需要注意的是,在所有时间方向上的参数矩阵W是相同的,空间方向上V和U亦是如此,这也体现了RNN“循环反馈”的思想

RNN UNIT

  每个隐藏单元按照如上的方式进行操作,隐藏层的激活函数为tanh函数(现也常用ReLU)。

Input layer

  上图中的 x(t) ,不同的时刻有不同的输入。

Out layer

  每一个时刻都有一个对应的输出,这个跟FNN是一致的,因此最终的输出也是一个时间序列。回归问题使用均方误差,分类问题使用交叉熵。

Forward propagation in RNN

  RNN的前向传播和FNN基本一致,唯一不同的就是在空间方向上的每个节点不光与前一个空间节点有关,还与前一个时间节点有关。
我们有:

h(t)=σ(z(t))=σ(Ux(t)+Wh(t1)+b)σtanhReLU
o(t)=Vh(t)+c
a(t)=σ(o(t))softmax

Backpropagation in RNN

  同FNN,反向传播的基点即是损失函数对输入求导,采用梯度方法更新参数。这里我们需要求解的有 U,W,V,b,c 共5个参数。

  在每个时间 t ,我们的输出都有一个损失Lt,因此定义损失函数 L=Tt=1Lt
  可以看到 V,c ,只与前一个空间方向的节点有关:

Lc=t=1TLta(t)a(t)o(t)o(t)c
LV=t=1TLta(t)a(t)o(t)o(t)V

  根据损失函数的不同,上式的第一项有不同的结果,接下来求解 W,U,b ,这三项既跟空间上的前一个单元有关,还和时间方向的上一个单元有关。同样地,我们定义在索引t位置的隐藏状态的梯度为:
δt=Lh(t)

求解最后一个时刻 T 的梯度:
δT=La(t)a(t)o(t)o(t)h(t)

递推:
δt=La(t)a(t)o(t)o(t)h(t)+Lh(t+1)h(t+1)h(t)

上述式子可以直接化简,然后我们求解:

LW=t=1TLh(t)h(t)W
Lb=t=1TLh(t)h(t)b
LU=t=1TLh(t)h(t)U

RNN-LSTM architecture

LSTM

  长短期记忆网络是RNN的一个变体,也是目前应用最多的RNN结构。它的核心是在每个隐藏层,有三个门:
1.input,用来控制是否让当前时间的新信息进入。
2.output,输出。
3.forget,用来控制遗忘哪些历史信息。
  图中的 σ 为sigmoid激活函数,它将结果映射为0-1之间的数,这也是为什么称之为“门”:值在0-1从而决定是否让信息通过。
  LSTM的前向传播过程在图中已经说的很清楚了,至于反向传播,类似RNN,只不过这里的每个梯度需要考虑更多的信息来源,

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值