RNN-bptt简单推导

本文详细介绍了RNN中BPTT(Back Propagation Through Time)算法的推导过程,阐述了如何将RNN按时间维度展开成多层神经网络,并通过链式法则计算权重的梯度。通过具体的时刻分析,揭示了在误差反向传播过程中权重共享带来的复杂性。最后,总结了BPTT与常规BP算法的相似性和差异性,为读者理解RNN训练提供了帮助。
摘要由CSDN通过智能技术生成

摘要:


在前面的文章里面,RNN训练与BP算法,我们提到了RNN的训练算法。但是回头看的时候在时间的维度上没有做处理,所以整个推导可能存在一点问题。

那么,在这篇文章里面,我们将介绍bptt(Back Propagation Through Time)算法如在训练RNN。

关于bptt


这里首先解释一下所谓的bptt,bptt的思路其实很简单,就是把整个RNN按时间的维度展开成一个“多层的神经网络”。具体来说比如下图:
这里写图片描述

既然RNN已经按时间的维度展开成一个看起来像多层的神经网络,这个时候用普通的bp算法就可以同样的计算,只不过这里比较复杂的是权重共享。比如上图中每一根线就是一个权重,而我们可以看到在RNN由于权重是共享的,所以三条红线的权重是一样的,这在运用链式法则的时候稍微比较复杂。

正文:


首先,和以往一样,我们先做一些定义。
hti=f(netthi)

netthi=m(vimxtm)+s(uisht1s)

nettyk=mwkmhtm
最后一层经过softmax的转化
otk=enettykkenettyk
在这里我们使用交叉熵作为Loss Function
Et=kztklnotk

我们的任务同样也是求 Ewkm Evim Euim
注意,这里的 E 没有时间的下标。因为在RNN里,这些梯度分别为各个时刻的梯度之和。
即:
Ewkm=stept=0Etwkm
Evim=stept=0Etvim
Euim=stept=0Etuim

所以下面我们推导的是 Etwkm Etvim Etuim

我们先推导 Etwkm
Etwkm=kEtotkotknettyknettykwkm=(otkztk)htm 。(这一部分的推导在前面的文章已经讨论过了)。
在这里,记误差信号:
δ(output,t)k=Etnettyk=kEtotk

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值