赞
踩
GRU(Gate Recurrent Unit)是循环神经网络(Recurrent Neural Network, RNN)的一种。和LSTM(Long-Short Term Memory)一样,也是为了解决长期记忆和反向传播中的梯度等问题而提出来的。
GRU与LSTM在实际表现上相差无几,但是由于GRU更便于计算,更容易进行训练,能够在很大程度上提高模型的训练效率,所以被提出来了。
GRU的输入输出结构与普通的RNN是一样的。
当前的输入x_t,上一节点传递下来的隐状态(hidden state)h_t-1,这个隐状态包含了之前节点的相关信息。
结合上面两个数据就可以得到当前节点的输出y_t和传递给下一个节点的隐状态h_t。
首先我们会从上一个节点传递下来的状态h_t-1以及当前的输入x_t来获取两个门控状态,如下图,r控制重置的门控,z为控制更新的门控。
Tips: 为 sigmoid函数,通过这个函数可以将数据变换为0-1范围内的数值,从而来充当门控信号。
得到门控信号之后,首先我们先用重置门“重置”h_t-1,,再让h_t-1与x_t进行拼接,再通过一个tanh激活函数来将数据放缩到-1~1的范围中。得到下面h'。
这里的 h' 主要是包含了当前输入的 x_t 数据。有针对性地对 h' 添加到当前的隐藏状态,相当于”记忆了当前时刻的状态“。类似于LSTM的选择记忆阶段。
最后GRU最重要的一个步骤,可以称之为“更新记忆”阶段。
这个阶段我们同时进行记忆和遗忘两个步骤。使用之前得到的门控z。
如果z中的值越靠近0,则对上个cell传过来的状态选择遗忘的越多,对这次的输入生成的h'记忆的越多。
GRU很聪明的一点就在于,我们使用了同一个门控 z 就同时可以进行遗忘和选择记忆(LSTM则要使用多个门控)。转存失败重新上传取消(可以看到这里的遗忘z和选择(z-1)是联动的,就是说我们对于传递过来的信息我们会选择性的遗忘,但是遗忘了多少我们则会通过选择来弥补,这里两个动作是相互平衡的)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。