GRU原理白话解析

6,725次阅读
没有评论

共计 1284 个字符,预计需要花费 4 分钟才能阅读完成。

接上一篇描述RNN网络说道gradient vanish的问题,要解决这个问题,那么gru/lstm是解决其问题的,说的抽象一点是解决这个问题,实在一点就是要解决记忆问题。

基本原理

假设给你一个很长很长的文章,一开始你读了很多行还记得前面写了啥,大概描述内容都记得,但是越往后面渐渐的你发现之前的内容是啥记得不太清了,gru就可以帮助你一直记住你想要记住的东西。

让我们回忆一下RNN,如果你记得不太清楚可以看这篇文章RNN模型

RNN中T+1时刻的输入是T时刻的输出与T+1时刻的输入组合经过激活函数(tanh)生成新的T+1结果,当然这个结果也可以经过softmax用于其他用途。

gru重新改造了单元网络,网上的博客或者视频都会提到这个cell部分,也就是记忆的体现点,如何证明这个具有记忆功能?

GRU原理白话解析

上面就是gru基本的描述,你会发现记忆C t+1输出与rnn网络单元t+1时刻输出一样,即二者相等,这个从上面的图就可以直接看出来了。

现在我们要去理解一个句子:

“博主,是一个90后的男生,毕业于电子神技大学,他喜欢写代码。”

好的,现在我们这个网络要干的事情就是要让其记住男生这个关键点,因为我们后面的语句中会使用“他”,所以我们的网络要记住这个信息。

现在这个句子是很短,使用普通的rnn神经网络学习起来我觉得也没啥问题,但是场景的不确定性以及复杂性,以后你肯定还会遇到更复杂的场景你使用RNN网络解决不了的情况,所以还是要依托其他技术手段去实现。

好的,扯远了,在之前的图中间部分有两个环节

GRU原理白话解析

记忆部分在每一个时刻都会去更新结果输出,上面图中最下面的公式是去控制当前的输出结果是否要去更新历史信息。

直白的取理解就是在解析到“男生”的时候,这个时候网络记住了“男生”这个性别,在继续解析“毕业于电子神技大学”的时候这个记忆单元应该不会去更新这个信息,因为这些信息都是不重要的信息,判断是否要更新就是通过此控制。有个

学术的名字叫做“reset gate”。

这个更新的方式会让你想到逻辑回归的损失函数,下面我们看一下这个记忆单元的输出更新方式:

GRU原理白话解析

 

上面公式就是更新的详细公式,这个如果加上求和平均处理那么就是逻辑回归的损失函数了。

现在解释一下梯度消失解决的点在哪?

首先我们可以知道RNN在传播的时候如果按照计算公式的计算发现共享权重W会被累计N次方乘积,这个是不可避免的。所以随着时间的推移一开始的信息就会被慢慢的遗忘,因为到后面起到的作用越来越少。其实梯度消失是体现在 BPTT这一块,

GRU原理白话解析

上面的公式中ht对h1的求导就是梯度消失的关键点,按照链式求导的规则ht->ht-1……>h1,那么这个链式求导就会产生梯度消失的问题。

现在反向传播的时候由于reset gate的作用,梯度下降就不会那么快了,不像RNN那样指数级下降,所以在一定程度上规避了梯度下降。这样也起到了记忆性的功能,也就是说你权值更新可以体现在最初的时刻,那么最初时刻的信息会影响到现在的情况,是吧,本质就是这个意思。

结语

前面举个例子是男生->他的记忆?我们不可能训练一个网络只记住这一个功能吧,那么是怎么实现多个记忆呢?

正文完
请博主喝杯咖啡吧!
post-qrcode
 1
admin
版权声明:本站原创文章,由 admin 2019-07-07发表,共计1284字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(没有评论)
验证码