赞
踩
引用翻译:《动手学深度学习》
在一个递归神经网络中计算梯度,矩阵的长积会导致梯度消失或发散。
可能会遇到这样的情况:早期的观察结果对于预测所有未来的观察结果来说是非常重要的。考虑一下这样一种有点矫揉造作的情况,即第一个观察包含一个校验和,而目标是在序列的最后辨别校验和是否正确。
在这种情况下,第一个符号的影响是至关重要的。我们希望有一些机制,将重要的早期信息储存在记忆单元中。如果没有这样的机制,我们将不得不给这个观察分配一个非常大的梯度,因为它影响到所有后续的观察。
我们可能会遇到这样的情况:一些符号是不相关的观测。例如,在解析一个网页的时候,可能会有一些辅助的HTML代码,这些代码对于评估网页上所传达的情感是不相关的。我们希望有一些机制来跳过潜在状态表示中的这些符号。
我们可能会遇到这样的情况:一个序列的各个部分之间存在着逻辑上的中断。例如,一本书的章节之间可能有一个过渡,证券市场的熊市和牛市之间可能有一个过渡,等等;在这种情况下,最好能有一种方法来重置我们的内部状态表示。
已经提出了一些方法来解决这个问题。最早的方法之一是Hochreiter和Schmidhuber的长短时记忆(LSTM),1997175,Cho等人的门控递归单元(GRU),2014176是一个稍微精简的变体,通常具有可比的性能,而且计算速度明显加快。更多细节见Chung等人,2014177。
普通RNN和GRU之间的关键区别在于,后者支持隐藏状态的门控。这意味着我们有专门的机制来控制隐藏状态何时被更新,何时被重置。
这些机制是经过学习的,它们解决了上面列出的问题。例如,如果第一个符号非常重要,我们将学习在第一次观察后不更新隐藏状态。同样地,我们将学习跳过不相关的临时观察。
最后,我们将学会在需要的时候重置隐性状态。我们将在下面详细讨论这个问题。
我们首先需要介绍的是重置门和更新门。我们把它们设计成条目为(0,1)的向量,这样我们就可以进行凸式组合,例如,一个隐藏状态和一个替代状态的组合。例如,一个重置变量将允许我们控制我们可能还想记住多少以前的状态。同样地,一个更新变量将允许我们控制新状态中有多少只是旧状态的副本。
我们首先通过工程闸门来生成这些变量。下图说明了GRU中复位和更新门的输入,给定的是当前时间步骤的输入
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。