题图:fabian-irsara-92113-unsplash
昨天介绍了神经网络的梯度消失问题,当隐含层的节点个数过多时,对于 RNN 来说理解为经过的时序过多时,梯度变化开始变小,直至消失。并且,这个问题很严重!因为无法无法是真正趋于收敛,还是存在训练误差,这样的结果是直接负面影响预测精度。那么,今天跟读者们讨论下如何解决这个梯度消失的问题。
斯坦福 NLP 的第 9 课后半部分给出了答案:主要应对梯度消失的措施是隐含层中采用更复杂的隐含单元。读者朋友们,你们可以回想下 RNN 的网络结果,隐含层中,前一个节点的输出直接输入到当前节点。过于简单! 学者们也意识到了这个问题,2014年,Cho教授率先提出了 GatedRecurrentUnits(GRU),即带门的循环单元,结构如下所示,OMG!怎么这么复杂呢?不要慌张,大家顺着图,很自然地就可以得出右边的4个公式,至于结构为什么是这样,可以先不必深究。
当前隐含节点的输出 ht 是由上一节点的输出 ht-1 和 新增加的单元节点 ht^ 组成的。问题:
1、reset 门的作用怎么在公式中体现?
2、update 门起到什么作用,zt 接近0还是接近1时,过去的输入才对当前节点的影响变大?
以下是我个人的理解,如果理解不准确,多多包涵,请大家指出来。
reset 门和 update 门都包括上一个隐含节点的输出和当前节点的输入xt,不同的是权重参数和它们各自的指向,前者reset的输出只影响 memory节点,因此memory节点也成为reset记忆节点。
而 update节点会影响上一个节点的输出 ht-1 和 记忆节点的输出 ht^.所以,当 zt 接近 1时,上一个节点的输出会直接复制到当前节点,这是对当前节点的影响是最大的。
3、这种结构,为什么会消除梯度消失? RNN 网络结构的节点间的传输和反向传播只能是近邻传播,绝不会出现跨节点传播的情况,如下,出现了梯度消失
但是,GRU 网络结构使得跨节点传播成为可能,并且可能自适应地建立快捷连接,剪去那些不必要的节点连接,如下所示,正式通过这种节点间的更丰富的连接可能,使得梯度消失的问题得以解决。
所以,如果将节点比作站点地话,GRU就是通过跨越站点,防止梯度消失的。
大家一起思考一个问题,GRU可以忽略前一个节点的状态,满足的条件是什么呢?欢迎大家留言,一起参与讨论。
领取专属 10元无门槛券
私享最新 技术干货