RNN改进_GRU_LSTM基本原理及辨析、GRU激活函数为什么使用Sigmoid而不是ReLU

一、RNN存在的问题

对RNN来讲,没有特别关注的部分,都是一个序列进去。而且RNN的梯度消失指的是每一项一项进行相加,可以发现距离拉的越长,连乘的项就越多,远距离的梯度会趋于0的,近距离的梯度不会消失。RNN梯度消失的真正含义是总的梯度受近距离梯度的主导,远距离的梯度消失。
对于激活函数可参考:深度神经网络中的激活函数_导数推理过程_python绘制图像示意_特点及使用场景

二、GRU门控单元

1、引入重置门和更新门

RNN改进_GRU_LSTM基本原理及辨析、GRU激活函数为什么使用Sigmoid而不是ReLU_第1张图片 R t = σ ( X t W w r + H t − 1 W h r + b r ) Z t = σ ( X t W w z + H t − 1 W h z + b z ) R_t=\sigma(X_tW_{wr}+H_{t-1}W_{hr}+b_r) \\ Z_t=\sigma(X_tW_{wz}+H_{t-1}W_{hz}+b_z) Rt=σ(XtWwr+Ht1Whr+br)Zt=σ(XtWwz+Ht1Whz+bz)其中 σ ( ) \sigma() σ()选用 s i g m o i d ( ) sigmoid() sigmoid()作为激活函数。

2、候选隐藏状态

RNN改进_GRU_LSTM基本原理及辨析、GRU激活函数为什么使用Sigmoid而不是ReLU_第2张图片 H t ~ = t a n h ( X t W x h + ( R t ⊙ H t − 1 ) ) \widetilde{H_t}=tanh(X_tW_{xh}+(R_t \odot H_{t-1})) Ht =tanh(XtWxh+(RtHt1))

3、最终隐藏状态RNN改进_GRU_LSTM基本原理及辨析、GRU激活函数为什么使用Sigmoid而不是ReLU_第3张图片

H t = Z t ⊙ H t − 1 + ( 1 − Z t ) ⊙ H t ~ H_t=Z_t \odot H_{t-1}+(1-Z_t)\odot\widetilde{H_t} Ht=ZtHt1+(1Zt)Ht

三、LSTM长短期记忆网络

1、输入门、遗忘门、输出门

RNN改进_GRU_LSTM基本原理及辨析、GRU激活函数为什么使用Sigmoid而不是ReLU_第4张图片 I t = σ ( X t W x i + H t − 1 W h i + b i ) F t = σ ( X t W x f + H t − 1 W h f + b f ) O t = σ ( X t W x o + H t − 1 W h o + b o ) I_t=\sigma(X_tW_{xi}+H_{t-1}W_{hi}+b_i)\\ F_t=\sigma(X_tW_{xf}+H_{t-1}W_{hf}+b_f)\\ O_t=\sigma(X_tW_{xo}+H_{t-1}W_{ho}+b_o) It=σ(XtWxi+Ht1Whi+bi)Ft=σ(XtWxf+Ht1Whf+bf)Ot=σ(XtWxo+Ht1Who+bo)

2、候选记忆元

同理于上面3个门的计算方式:
RNN改进_GRU_LSTM基本原理及辨析、GRU激活函数为什么使用Sigmoid而不是ReLU_第5张图片 C t ~ = t a n h ( X t W x c + H t − 1 W h c + b c ) \widetilde{C_t}=tanh(X_tW_{xc}+H_{t-1}W_{hc}+b_c) Ct =tanh(XtWxc+Ht1Whc+bc)

3、记忆元

RNN改进_GRU_LSTM基本原理及辨析、GRU激活函数为什么使用Sigmoid而不是ReLU_第6张图片 C t = F t ⊙ C t − 1 + I t ⊙ C t ~ C_t=F_t\odot C_{t-1}+I_t\odot \widetilde{C_t} Ct=FtCt1+ItCt 它不像GRU: H t = Z t ⊙ H t − 1 + ( 1 − Z t ) ⊙ H t ~ H_t=Z_t \odot H_{t-1}+(1-Z_t)\odot\widetilde{H_t} Ht=ZtHt1+(1Zt)Ht Z t Z_t Zt ( 1 − Z t ) (1-Z_t) (1Zt)的值是互补的,而LSTM: F t F_t Ft I t I_t It的值相加不一定等于1。

4、最终隐藏状态

RNN改进_GRU_LSTM基本原理及辨析、GRU激活函数为什么使用Sigmoid而不是ReLU_第7张图片 H t = O t ⊙ t a n h ( C t ) H_t=O_t\odot tanh(C_t) Ht=Ottanh(Ct)

四、GRU激活函数为什么使用Sigmoid而不是ReLU

1、为什么用Sigmoid

直观来讲,Sigmoid与之作用后得到r、t,r、t取值范围(0,1)。可以理解为起到了一个概率的作用。极端情况,全为1的时候,完全保留与r或t运算的信息。全为0的时候,完全舍弃与r或t运算的信息。同时Sigmoid处处可导。

2、为什么不用ReLU

单边抑制,小于0的部分神经元全部都不再被激活。

五、参考

[1]https://zh-v2.d2l.ai/chapter_recurrent-modern/gru.html

你可能感兴趣的:(深度学习理论基础,深度学习)