赞
踩
本文主要讲述的RNN(循环神经网络)在训练过程中BP算法的推导。
在阅读本文之前希望读者看过我的另一篇文章BP算法心得体会。因为大部分的思路沿用的就是这篇文章的思路。
参考文章:
数学推导-1
数学推导-2
更新-2018-01-23:
之前写完这篇文章之后,回头看了一遍文章,发现在整个推导的过程都无视了时间维度的存在,所以后来查阅了相关的资料,发现目前网上有一部分RNN的推导过程和本文是一样的,比如上面给到的2篇参考文章,思路和本文是一致的。但是也存在另外一些版本的推导,其过程和本文的截然不同。
所以后来在参考了大神的代码后,重新思考了rnn的训练算法,因此重新写一个篇rnn和bptt供大家参考。
RNN的一般原理介绍这里就不再重复了,本文关注的是RNN是如何利用BP算法来进行训练的。
在推导BP算法之前,我们先做一些变量上的规定,这一步非常关键。
本文使用的RNN是只含一个隐藏层(多个隐藏层其实也是一样的道理)。其结构如下图所示:
(大家看到这个网络结构可能有些困惑,比如说,RNN是由多个网络组成的吗?这里值得注意的是,RNN就只由一个网络组成,图上有多个网络是在不同时刻的输入下的网络情况)
现在,作如下的一些规定:
网络中共有
具体为:
经过激活后的输出为:
具体为:
经过激活后的输出为:
这里同样地,为了方便推导,假设损失函数
首先我们需要解决的问题就是求出:
1.先来求最简单的
和之前讲解BP的文章套路一样,我们可以对
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。