当前位置:   article > 正文

门控循环单元(GRU)_gru门控循环单元

gru门控循环单元

入门小菜鸟,希望像做笔记记录自己学的东西,也希望能帮助到同样入门的人,更希望大佬们帮忙纠错啦~侵权立删。

✨完整代码在我的github上,有需要的朋友可以康康✨

​​​​​​https://github.com/tt-s-t/Deep-Learning.git

目录

一、背景

二、原理

1、前向传播

(1)重置门和更新门

(2)候选隐藏状态

(3)隐藏状态

(4)输出

2、反向传播

三、GRU的优缺点

1、优点

2、缺点

四、代码实现GRU

1、numpy实现GRU模型

(1)前期准备

(2)初始化参数

(3)前向传播

(4)后向传播

(5)预测

2、调用我们实现的GRU进行训练与预测

3、result


一、背景

       当时间步数(T)较大或时间步(t)较小的时候,RNN的梯度较容易出现衰减或爆炸。虽然裁剪梯度可以应对梯度爆炸,但是无法解决梯度衰减的问题。这个原因使得RNN在实际中难以捕捉时间序列中时间步(t)距离较大的依赖关系。因此LSTM应运而生,基于LSTM,改进出了GRU

       RNN详解可以看看:RNN循环神经网络_tt丫的博客-CSDN博客_rnn应用领域


二、原理

1、前向传播

(1)重置门和更新门

两个门的输入都是当前时间步输入 X_{t} 与上一时间步的隐藏状态 H_{t-1}

(图片都来源于《动手学深度学习》)

 前向传播的计算为:

\mathrm{R}_{\mathrm{t}}=\sigma\left(\mathrm{X}_{\mathrm{t}} \mathrm{W}_{\mathrm{xr}}+\mathrm{H}_{\mathrm{t}-1} \mathrm{~W}_{\mathrm{hr}}+\mathrm{b}_{\mathrm{r}}\right)

\mathrm{Z}_{\mathrm{t}}=\sigma\left(\mathrm{X}_{\mathrm{t}} \mathrm{W}_{\mathrm{xz}}+\mathrm{H}_{\mathrm{t}-1} \mathrm{~W}_{\mathrm{hz}}+\mathrm{b}_{\mathrm{z}}\right)

其中,\mathrm{X}_{\mathrm{t}} \in \mathbb{R}^{\mathrm{n} * \mathrm{d}},H_{t-1} \in \mathbb{R}^{n*h}, R_{t},Z_{t} \in \mathbb{R}^{\mathrm{n} * h}

\sigma为激活函数(sigmoid函数),故取值范围为:[0,1]

n为样本数,d为输入的特征数,h为隐藏大小。

(2)候选隐藏状态

 对应计算:

\tilde{\mathrm{H}}_{\mathrm{t}}=\tanh \left(\mathrm{X}_{\mathrm{t}} \mathrm{W}_{\mathrm{xh}}+\left(\mathrm{R}_{\mathrm{t}} \odot \mathrm{H}_{\mathrm{t}-1}\right) \mathrm{W}_{\mathrm{hh}}+\mathrm{b}_{\mathrm{h}}\right.)

以此可以看出,重置门控制了上一时间步的隐藏状态流入当前时间步的候选隐藏状态的“幅度”(如果重置门的输出接近0,则重置对应的隐藏状态元素接近0,即丢弃上一时间步的隐藏状态;如果重置门的输出接近1,则保留绝大部分上一时间步的隐藏状态);

相对于RNN来说,他是由一个参数矩阵来控制上一时间步的隐藏状态流入当前时间步的候选隐藏状态的“幅度”,不像这边的重置门——它是由上一时间隐藏状态,当前时间输入和一些可供学习的参数共同决定;

同时,上一时间步的隐藏状态包含的可能不止是上一时刻的信息,而是可能包含所有之前的历史信息,这就可以推断出重置门可以用来丢弃和预测无关的历史信息,决定保留多少历史信息。

重置门有助于捕获序列中的短期依赖关系。

(3)隐藏状态

 对应计算:

H_{t}=Z_{t} \odot H_{t-1}+\left(1-Z_{t}\right) \odot \tilde{H}_{t}

以此可以看出更新门可以控制如何更新包含当前时间步信息的候选隐藏状态(若Z在 t' 到 t 间一直近似为1,那么在 t' 到 t 间的候选隐藏状态(含输入信息X)几乎没有流入H_{t},这也能看作是较早时刻的隐藏状态H_{t'-1}一直保留到了并传递到现在时刻(H_{t'-1}保留在H_{t'}中),相对于RNN与上面的分析类似。

因为它能长期保存以前的部分关键信息并进行传递,所以可以起到缓解梯度消失的问题。

 更新门有助于捕获序列中的长期依赖关系

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/449863
推荐阅读
相关标签