深度学习在自然语言处理中的应用( 三 )

< 0.25),那么在传播到第三个或第四个模块时,梯度将几乎消失(多级梯度连乘),因此较靠前的单元的隐藏状态得不到更新 。
在传统的RNN模型中,隐藏状态向量的计算公式如下:

深度学习在自然语言处理中的应用

文章插图
而GRU采取了另一种计算方式 。计算过程被分为三块:更新门,重置门和一个新的记忆存储器 。两个门都是输入词向量与上一步隐藏状态的函数:
深度学习在自然语言处理中的应用

文章插图
其实,关键的差别之处就在于不同的门有不同的权重矩阵,通过公式中的上标加以区分 。更新门的符号是Wz和Uz,重置门的符号是WT和UT 。
新存储器的计算公式如下:
式子中的空心点表示逐元素相乘 。
如果仔细观察公式,大家会发现如果重置门单元的输出值接近于0,那么整一项的值都接近于0,相当于忽略了ht-1步的状态 。此时,模型只考虑当前的输入词向量xt 。
h(t)的最终形式如下公式所示:
h(t)函数由三部分组成:更新门,重置门和一个记忆存储器 。当zt接近于1时,新的隐藏状态ht几乎完全依赖于上一次的状态,因为(1-zt)接近0,后一项的乘积也接近于0 。当zt接近于0时,情况则相反 。
长短期记忆单元(Long Short-TermUnits)
如果大家已经理解了GRU的原理,那么就能很容易理解LSTM 。LSTM同样也是由多个门控模块组成:
深度学习在自然语言处理中的应用

文章插图
显然,LSTM引入的信息更多 。由于LSTM可以被看作是GRU思路的引申,因此,作者不打算再做太深入的分析,读者若想要理解每一扇门和每一个公式的来龙去脉,Chris Olah撰写了一篇精彩的文章 。这是目前为止介绍LSTM的最精彩的教程,一定会对大家理解各个单元的原理有着很大的帮助 。
LSTM和GRU对比
我们先来探讨两者的相似之处 。原作者认为,这两种模型都具有保持序列数据长期信息依赖的特殊能力 。长期信息指的是两个词语或者短语之间间隔很远,但是它们之间的关系对理解句子又至关重要 。LSTM和GRU都是通过门控模块来捕捉或是选择性忽略这些依赖关系 。
两者的差异之处在于门的数量,GRU有两扇门,LSTM有三扇门 。门的数量也会影响到输入单词之间的非线性关系,并且影响最终的计算结果 。GRU也不具有LSTM模型的记忆单元 。
写在阅读论文之前
要提醒大家一点,NLP领域还有很多很多其它种类的深度学习模型,有时候递归神经网络和卷积神经网络也会用在NLP任务中,但没有RNN这么广泛 。
不错,我们现在已经对深度学习在自然语言处理领域的应用有了清晰的认识,接下来一起就读几篇论文吧 。NLP领域的方向很多(例如机器翻译、问答系统等等),我们可以挑选阅读的文献也很多,作者从中挑选了三篇具有代表性的 。
记忆网络( )
原作者挑选的第一篇论文是问答领域非常有影响力的一篇文章 。此文的作者是Jason , Sumit , 和,此文介绍了一类称作记忆网络的模型 。
直观的想法是,为了准确地回答一个文本的问题,我们需要以某种方式来存储初始信息 。如果问大家,“RNN指的是什么”?认真阅读了文章前半部分的读者一定能够回答 。只不过大家可能要花几秒钟的时间去前文中查找相关段落 。我们暂且不知道人类大脑执行这一行为的机制是什么,但一般认为大脑中有一块区域来存储这些信息 。
此篇文章所介绍的记忆网络独特之处在于它有一块可以读写的关联记忆区域 。CNN模型、强化学习以及传统的神经网络都没有这种记忆功能 。也许是因为问答系统重度依赖长期的上下文信息,比如要追溯事件发生的时间线 。对于CNN和强化学习而言,它们通过训练不同的滤波器或是状态到行为的映射关系,已经将“记忆”体现在权值矩阵中 。乍一看,RNN和LSTM符合要求,但是一般也无法记忆历史的输入内容(对于问答系统至关重要) 。