本期推出的第二篇文章“理解RNN”则帮我们系统地梳理了有关RNN、LSTM等话题的重要论文。华科才子钟翰廷倾力推荐了5篇该领域的经典文章,其中有丰富的实验能够帮助我们理解RNN是如何工作的。


集智


集智


Empirical Evaluation of Gated Recurrent Neural Networkson Sequence Modeling(arXiv: 1412.3555)



作者

Junyoung Chung、Caglar Gulcehre、KyungHyun Cho、Yoshua Bengio


观点

  • RNN 在很多机器学习任务尤其是变长输入输出的任务上效果拔群;

  • 经典 RNN 有两个主要的问题: 梯度消失, 长期记忆急速衰减;梯度爆炸,训练无法收敛;

  • 解决 RNN 难以训练的尝试有两种: 一种是设计更好的学习方法(Bengio 2013),另外一种是设计更复杂的激活函数;

  • LSTM 不会每次都重写 memory,而是可以通过 input/forget gate 在需要的时候尽量地保留原来的 memory;

  • LSTM/GRU 中额外增加的 cell state,让它们能记住较早之前的某些特定输入,同时让误差反向传播时不会衰减地太快。


模型/实验/结论

数据集:

  • 复调音乐数据集(Boulanger-Lewandowski et al. 2012)

  • Ubisoft Datasets

实验: 

在上述几个数据集上,分别使用经典 RNN、LSTM、GRU 进行训练,并记录 NLL 的变化情况。

结论:

  • 在序列建模问题上,LSTM/GRU 在收敛速度和最终结果上,都要比经典 RNN 好不少;

  •  LSTM 和 GRU 在不同任务上各有胜负,但总体差异不明显,使用 LSTM 还是 GRU 要视具体任务而定。


集智


LSTM: A Search Space Odyssey(arXiv: 1503.04069)



作者

Klaus Greff、Rupesh Kumar Srivastava、Jan Koutnik、Bas R. Steunebrink、Jurgen Schmidhuber


观点

  • LSTM 结构的核心思想是其能维护历史状态的记忆单元,以及能调节信息出入的非线性门控单元(gating unit);

  • 自 LSTM 提出后,陆续有多种对 LSTM 结构的改进工作,并广泛应用到了许多规模、性质迥异的问题上,但却缺乏对 LSTM 及其变体中各个计算部件的系统性分析。


模型/实验/结论

数据集:

    模型:

    LSTM 及八种待对比的 LSTM 变体

    • V: vanilla LSTM,即经典的 LSTM 模型

    • NIG: 在 LSTM 基础上去除 input gate 得到的结构

    • NFG: 在 LSTM 基础上去除 forget gate 得到的结构

    • NOG: 在 LSTM 基础上去除 output gate 得到的结构

    • NIAF: 在 LSTM 基础上去除 input activation function 得到的结构

    • NOAF: 在 LSTM 基础上去除 output activation function 得到的结构

    • NP: 在 LSTM 基础上去除 peephole 得到的结构

    • CIFG: 既 GRU

    • FGR: 在 LSTM 基础上让门控单元互相之间都有连接(full gate recurrence

    实验:

    • 在 TIMIT 数据集和 IAM 在线手写数据库上使用双向 LSTM,在 JSB Chorales 数据集上使用 LSTM;

    • 在 TIMIT 数据集和 JSB Chorales 上使用交叉熵作为损失函数,在 TIMIT 数据集上则使用 CTC;

    • 对总共 27 个模型各进行 200 次对数尺度上的超参搜索,然后进行训练,共进行 5400 次实验;

    • 每个数据集上的每个变体的 200 次实验中,最好的 20 个实验结果被拿来和 vanilla LSTM 模型的结果对比。

    对 LSTM 结构分析的结论:

    • 在三个数据集上,移除 forget gate 或 output activation function 都严重损害了模型性能,forget gate 对 LSTM 来说至关重要;

    • 对连续实数数据上的监督学习问题,input gate、output gate 和 input activation function 的存在非常重要;

    • GRU 和 移除 peephole 的变体相比 vanilla LSTM 没有显著的性能差异,但它们都在一定程度上简化了 LSTM 结构;

    • full gate recurrence 结构没有改善 LSTM 的性能,相反还在 JSB Chorales 数据集上让结果变差了不少,加上它让 LSTM 更复杂了,不建议使用。

      对模型超参分析的结论:

      • 梯度裁剪会损害整体性能;

      • 在使用 SGD 进行训练时,动量项对训练没什么显著好处;但在用 BSGD 进行训练时可能会起到一定的作用;

      • 学习率和网络大小是 LSTM 中非常重要的两个超参。


        集智

        Visualizing and understanding recurrent networks(arXiv: 1506.02078)



        作者

        Andrej Karpathy、Justin Johnson、Li Fei-Fei


        观点

        • LSTM 在实践中表现出了非常好的结果,但我们对其性能的来源和限制理解地都还很不够;

        • 过去的一些分析都是靠最终测试集上的全局困惑度来评价 LSTM 的效果,并没有在「真实数据」上进行分析,也不够直观。


        模型/实验/结论

        数据集:

        • 托尔斯泰的《战争与和平》文本,共 3,258,246 字

        • Linux 内核代码,共 6,206,996 字

        模型:

        • RNN,分别尝试层数为 1 层、2 层和 3 层,隐层大小分别尝试 64, 128, 256 和 512,共 12 个模型;

        • LSTM,同 RNN;

        • GRU,同 RNN。

        实验:

        • 用上述模型在两个数据集上训练语言模型,最后在测试集上计算交叉熵误差,对比三类共 36 个模型之间的结果;

        • 对 LSTM/GRU 的 gate 输出分布做可视化分析。如下图所示,图中的小圆圈代表一个神经元,横轴表示该神经元 gate 值超过 0.9 的比例,纵轴是 gate 值小于 0.1 的比例;

        集智

        • 分析了 LSTM 在《战争与和平》文本上的错误类型。

        结论:

        • 多个隐藏层模型比单个隐藏层模型的效果要好;

        • LSTM 和 GRU 之间难分伯仲,但都显著好于 RNN;

        • LSTM 表现出了对长程结构的记忆能力,如在处理被引号括起来的长文本时,对开头和结尾的引号有特殊的响应;

        • 在多层的 LSTM/GRU 中,高层的神经元都开始分化,会有一部分倾向于接收新信息,有一部分则倾向于记住旧的信息;

        • GRU 的第一层几乎不怎么使用旧的信息,即使到高层后也更倾向于使用当前输入;

        • LSTM 建模长程依赖的能力大大超过 ngram 模型,一个 11MB 的 LSTM 模型效果能略微超过一个 3GB 的 20-gram 模型;

        • 对本身明显包含结构的文本(如内核代码)进行建模,当序列长度在 10 以下时,LSTM 和 20-gram 模型的差异不大,但随着序列变长,两者之间的差距逐渐变大,在 Linux 内核代码上,LSTM 能记忆最大约 70 左右的距离;

        • LSTM 在迭代训练的过程中,首先建模了短程依赖,然后在此基础上逐渐地学习到对长程依赖的建模能力,这也是 seq2seq 论文中提到的逆序源语言序列有效的原因,因为这让模型先开始建模短程依赖再去建模长程依赖;

        • LSTM 并不能完全利用好最近的一些输入,在LSTM 的错误中,有 42% 是 0-9 阶的 ngram 模型能够正确预测的;

        • 相信像 Memory Networks 那样,如果能直接对序列中最近的历史进行 attention 操作,那么能够提高 RNNLM 的效果;

        • 增大数据集、无监督预训练能提高 LSTM 对罕见词的预测效果;

        • 增大模型大小,显著减小了 ngram 错误,但对其他类型的错误却没有明显的改善,这说明光是增大模型大小是不够的,可能需要设计更好、更新的结构。


        集智


        An empirical exploration of recurrent network architectures (JMLR 2015)



        作者

        Rafal Jozefowicz、Wojciech Zaremba、Ilya Sutskever


        观点

        • LSTM 在实践中被广泛应用,但 LSTM 是否是最佳的结构,以及其中各个组成部分的重要性都尚不清晰;

        • RNN 中的梯度爆炸问题可以简单地通过对梯度的大小加上强制约束(裁剪)来解决;

        • 在生物的循环神经网络中的信息处理是基于吸引子的;

        • Bengio 在 1994 年展示,存储一个 bit 并且拥有稳定的吸引子的 RNN ,必然会出现梯度消失现象;

        • 如果 LSTM 也是基于吸引子的记忆网络的话,那么它也会存在梯度消失的问题,但 LSTM 中既然解决了梯度消失问题,就说明 LSTM 已经不能算是基于吸引子的记忆网络了;

        • forget gate 函数的 bias 不应该初始化为接近 0 的数值,而应该再大一些,让 forget gate 的初值更接近 1 一些。


        模型/实验/结论

        数据集:

        • 加减法算术数据,并加上了字母噪声: 3e36d9-h1h39f94eeh43keg3c= -13991064

        • 合成的 XML 数据: <etdomp> <pegshmnaj> <zbhbmg> </zbhbmg> </pegshmnaj> <autmh> </autmh> </etdomp>

        • 宾州树库(Penn Tree-Bank, PTB)

        模型:

        • RNN/LSTM/GRU;

        • 移除 input gate/forget gate/output gate 其中之一的 LSTM;

        • 在 forget gate 上增加 bias 的 LSTM;

        • 在 LSTM/GRU 的模型结构基础上按照下列规则来形成新的网络结构:

        • 随机替换一个激活函数为 tanh(x), sigmoid(x), ReLU(x), Linear(0, x), Linear(1, x), Linear(0.9, x), Linear(1.1, x) 中的一个;

        • 随机将一个 elementwise 的操作替换为其他操作如乘、加、减;

        • 随机在一个位置上增加一个激活函数;

        • 将模型视为一张计算图,随机移除一个只有一个输入和一个输出的节点;

        • 将模型视为一张计算图,随机替换一个节点为当前节点的祖先节点;

        • 将模型视为一张计算图,随机替换一个节点为其祖先节点与当前节点的祖先节点的和、积或差。

        实验:

        • 用上述 7 种确定的模型及随机生成的一万种不同的 LSTM/GRU 变体,在三个数据集上训练语言模型,并进行结果的对比。

        结论:

        • 在 LSTM 的 forget gate 上加上一个 bias 后,能够让 LSTM 和 GRU 的表现更加接近;

        • forget gate 最重要,其次是 input gate,而 output gate 不重要;

        • 发现了三种随机变体在个别任务上的效果比 LSTM/GRU 更好,这说明 LSTM/GRU 的结构还有优化的可能性。


        集智


        Visualization analysis for recurrent networks(2016)



        作者

        Zhiyuan Tang、Ying Shi、Dong Wang


        观点

        • 在 ASR 中,LSTM 已经能表现地比 HMM 更好,原因在于 LSTM 将复杂的音频时序序列作为一个连续状态轨迹来进行建模,而 HMM 则将其当作离散状态转换来进行建模;

        • 经典 RNN 模型会遗忘地更快。


        模型/实验/结论

        数据集:

        • 华尔街日报语音数据库

        实验:

        • 对比 LSTM 和 GRU 在相同数据集上训练语音识别(Automatic Speech Recognition,ASR),并对比字错率;

        • 在 LSTM 和 GRU 模型的每个隐藏层中随机选取 50 个神经元,观察连续输入时神经元的激活值的分布情况,并对比 LSTM 和 GRU 之间的差异。

        • LSTM 中各层神经元的激活值分布情况如下图所示:

          集智

        • GRU 中各层神经元的激活值分布情况如下图所示:

          集智

        • 统计 LSTM 中各个隐藏层中对各个音素的响应率超过 80% 的神经元数量,如下图所示:

        集智

        • 统计 GRU 中各个隐藏层中对各个音素的响应率超过 50% 的神经元数量,如下图所示:

        集智

        • 用 t-SNE 将 LSTM 和 GRU 接受连续输入时的隐藏层 cell vector 输出的变化轨迹进行可视化,如下图所示:

        集智

        • 在语音数据流中插入噪声数据,对比 LSTM 和 GRU 的抗噪能力差异。

        集智

        结论:

        • 在 ASR 任务上,GRU 的效果要稍微好于 LSTM;

        • LSTM 通过绝对值较大的 cell value 来表示信息,而 GRU 通过不同神经元的 cell 值的差异来表示信息;

        • LSTM 能记住更多过去的信息,而 GRU 则倾向于使用当前输入及较近的历史输入,也就是说 GRU 相比 LSTM 会遗忘地更快,这和 Karpathy 的结论是一样的;

        • LSTM 的抗噪能力要比 GRU 弱,这和上面的结论也有关,正因为 GRU 遗忘地更快,噪声带来的扰动在后来就很快地被抚平了;

        • GRU 遗忘地更快的特性,和 GRU 的「lazy cell update」有关系。

        ◆ ◆ 

        福利

        由小S(李嫣然)领衔,钟翰廷和甄慧玲主演的系统性介绍NLP方向以及Deep Learning的线上课程。


        集智



        点击阅读原文可获取:深度学习与层级性:从RNN到注意力与记忆原稿




        集智

        集智QQ群|292641157
        商务合作|zhangqian@swarma.org
        投稿转载|wangting@swarma.org


        ◆ ◆ 

        集智俱乐部

        英文名: Swarma Club ,

        简称“ SA Club ”,

        成立于 2008 年 , 

        是一个从事学术研究、

        享受科学乐趣的探索者的团体 。

        力图搭建一个中国的

         “ 没有围墙的研究所 ”。

        集智

        让苹果砸得更猛烈些吧!

        集智

        长按识别二维码,关注集智Club,

        让我们离科学探索更近一步。


        始发于微信公众号: 集智俱乐部