• 为了保证你在浏览本网站时有着更好的体验,建议使用类似Chrome、Firefox之类的浏览器~~
    • 如果你喜欢本站的内容何不Ctrl+D收藏一下呢,与大家一起分享各种编程知识~
    • 本网站研究机器学习、计算机视觉、模式识别~当然不局限于此,生命在于折腾,何不年轻时多折腾一下

GRU原理白话解析

Alg admin 4个月前 (07-07) 507次浏览 0个评论 扫描二维码

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

基本原理

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

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

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

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

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

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

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

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

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

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

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

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

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

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

 

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

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

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

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

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

结语

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


Deeplearn, 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明GRU 原理白话解析
喜欢 (0)
admin
关于作者:
互联网行业码农一枚/业余铲屎官/数码影音爱好者/二次元

您必须 登录 才能发表评论!