Massive Exploration of Neural Machine Translation Architectures

Massive Exploration of Neural Machine Translation Architectures

在cs224N中推荐了这篇文章,本文记录一下我读的一些总结和个人看法。

原文链接:https://arxiv.org/pdf/1703.03906.pdf

Introduction

RNN的问题在于训练太慢了,因此未曾有人去大规模搜索最优的超参数,没人知道为什么这些超参数性能是这样的,也没人知道如何改进它们。在本文中,谷歌团队第一次进行了大规模的搜索,记录了BLEU分数、困惑度、模型大小和收敛时间,同时还把实验框架开源了。

这篇文章的主要贡献如下:

  • 给出了一个行之有效的超参数组合,拿着这个去BLEU刷分不会低,同时给出了未来研究的方向
  • 给出了随机初始化和细微的超参数变化对BLEU的影响程度,有助于研究人员从随机噪声中找出具有统计学意义的结果
  • 将实验过程的代码都开源了,框架也在GitHub上给出:https://github.com/google/seq2seq/

Background and Preliminaries

大致介绍了以下NMT以及Attention,没啥好说的。

Experimental Setup

数据集方面的准备:

  • 任务为将英语翻译为德语。团队也做了小部分英语翻译为法语的实验以证明结果的普遍性,不过训练时间过长所以还是德语为主(接下来的数据中并没有注明哪部分是德语哪部分是法语,因此我认为作者并未将法语的实验结果展示在论文中)。作者认为翻译德语比翻译法语更复杂,所以这样的结果仍然有说服力。
  • 使用newstest2013资料集进行训练,newstest2014和newstest2015资料集进行测试
  • 使用字节对编码(BPE)

基线模型

基线模型示意图如上:

  • 嵌入向量维度为512
  • 两层编码器,使用双向编码,两个方向各一个
  • 注意力分数计算公式使用乘法
  • 解码器仅有一层
  • RNN中的cell使用GRU

还有一些不参与本次实验的超参数:

  • 使用Adam优化
  • 0.0001的学习率且无衰减
  • 0.2的随机丢失
  • 其他超参数需要参阅代码
  • 每次运行最多进行2.5M次
  • 每个实验组重复4次

接下来的每次实验中都会按照控制变量的思想进行,如果作者认为某些参数之间会有交互作用,也会进行额外的测试。

Experiments and Discussion

Embedding Dimensionality

在这里插入图片描述

结论:

  • 在空间上,从128维到2048维模型大小是逐渐增大的(看起来比线性慢一点?)
  • 但在性能上,增大维度毫无意义,128维就能获得很好的效果了
  • 实验过程中,五种维度的梯度更新速度也没有很明显的区别
  • 五种维度的困惑度也十分接近

猜测:

  • 当前的模型无法利用额外的参数
  • 更高维度的词嵌入可能需要更多的运行次数(大于2.5M)才能收敛

RNN Cell Variant

本节测试RNN的各种变种,作者先进行了一个假设:引入注意力系统后,门控系统就没有意义了。理由主要来源于:在没有注意力系统时,解码器使用最后一个编码器的状态进行初始化;在有注意力系统后,解码器进行随机初始化就可以了。因此作者在其中一组测试(Vanilla-Dec)中去除编码器中的门控系统使用普通的RNN。测试结果如下:

在这里插入图片描述

结论:

  • LSTM总是优于GRU
  • 因为softmax计算占据了大部分的耗时,未能观察到LSTM和GRU有明显的速度差距
  • 去除了门控系统的实验组运行的非常差劲,说明门控系统还是十分有用的。不过作者也无法断定是如何其作用的,只能猜测有两种原因:
    • 编码器的状态通过某一路径传输给了译码器(我没有很看懂原文的意思)
    • 或者是门控系统去除了一些无关紧要的信息,起到了掩码的作用

Encoder and Decoder Depth

作者主要测试了普通模型,以及残差网络和密集网络,测试结果如下:

在这里插入图片描述

结论:

  • 对编码器而言,两层网络就够了;在更深的网络中,使用残差网络比密集网络更容易收敛(密集网络在4次实验中只收敛了一次,可以看到表中密集网络和残差网络的最高分都不低,但不同试验间差值很大)(我觉得残差网络看起来也不容易收敛,毕竟平均分比普通模型低了两分左右)
  • 解码器中增加网络深度收益也不是很大,而且在不引入残差网络和密集网络的情况下,无法训练8层或更深的网络(可以看到普通模型在8层的时候直接炸了,只得了1分),密集网络始终优于残差网络,且能在更少得步骤内收敛,如下图:

在这里插入图片描述

Unidirectional vs. Bidirectional Encoder

测试结果如下:

在这里插入图片描述

结论:

  • 对源序列进行取反能获得更好得效果(因为整个过程采用得是贪心算法,取反源序列后,能保证最前面的几个单词不会错的很离谱)
  • 即使加深网络,单向编码器的效果也不如双向编码器(这里有个很有意思的问题是,如果加深双向编码器结果会变好还是变坏呢?表中并没有给出结果,但事实上,在上个实验Encoder and Decoder Depth中就已经做了这方面的研究啦,答案是变差!)

Attention Mechanism

作者主要测试了加法和乘法两种注意力分数计算方法

s c o r e ( h j , s i ) = < v , t a n h ( W 1 h j + W 2 s i ) > s c o r e ( h j , s i ) = < W 1 h j , W 2 s i > score(h_j,s_i)=<v,tanh(W_1h_j+W_2s_i)>\\ score(h_j,s_i)=<W_1h_j,W_2s_i> score(hj,si)=<v,tanh(W1hj+W2si)>score(hj,si)=<W1hj,W2si>
同时还进行了两个比较特殊的测试,一个是不使用注意力机制(None-State),另一个也不使用注意力机制但将所有编码器的状态直接连接到最后一个译码器(None-Input)(具体如何使用需要参阅源代码)。

测试结果如下:

在这里插入图片描述

结论:

  • 使用加法公式总是优于乘法
  • 维度对性能的影响十分微弱(文中将 W 1 h j W_1h_j W1hj的维度称为注意力的维度,个人感觉就是作者认为矩阵维度越高参数就越多,效果会更好,但却发现没这回事)
  • **None-Input **表现非常差和没连差不多,明明这种模型也能拿到所有状态的信息,怎么回事呢?作者开始好奇注意力究竟扮演了怎样的角色,他猜测是有权重的残差连接或者密集连接

Beam Search Strategies

测试结果如下:

在这里插入图片描述

结论:

  • 增大搜索宽度会让结果变差
  • coverage penalty并没有产生比length penalties更好的效果(我第一次看到length penalty这种叫法,感觉其实就是做了个长度归一化)

(这张图的问题在于不加长度惩罚时B5表现得比B10要好,但并未展示B5加上长度归一化的分数,有点不严谨)

Final System Comparison

作者最后用单项表现最好的参数组了套模型,和其他已知模型过招

在这里插入图片描述
在这里插入图片描述

除了GNMT之外一个能打的都没有,作者又说GNMT模型过于复杂,而且没有公共的实现方法(不确定是不是这个意思,我可怜的英语啊QAQ),总之就是赢麻了。

Conclusion

把前面的结论重复了一下,还有一些展望:

  • 更高的词向量维度没有产生更好的结果

    • 当处理高维度的词嵌入向量时,如何利用额外的信息?
  • 更深的神经网络没有产生更好的结果

    • 能否找到更好的组织方式,使8层或更深的网络运作更加有效?
  • 更宽的搜索范围没有带来更好的结果

    • 能否找到更好的计分规则,使得更宽的波束搜索产生更好的结果

个人评价

优点:

  • 给想刷BLEU分的人提供了很好的工具和材料
  • 间接地说明了RNN已经没办法搞下去了,这个框架驾驭不住更深的网络

缺点:

  • 只展示了自己做了什么实验,参数怎么调比较好,至于原因一概不管,在做Embedding Dimensionality的时候,明明多运行几步就能弄明白到底是不是训练步数不够限制了高维度的收敛,作者就是不做下去了
  • 未考虑学习率等其他超参数的影响,而且这些超参数的重要性一点也不比实验中测的部分更差,但本实验直接给限定死了,万一在更大的学习率下2048维嵌入很猛呢?不过这归根结底还是NMT训练太慢导致的,作者可能不愿与花更多时间在这上面了
    ality***的时候,明明多运行几步就能弄明白到底是不是训练步数不够限制了高维度的收敛,作者就是不做下去了
  • 未考虑学习率等其他超参数的影响,而且这些超参数的重要性一点也不比实验中测的部分更差,但本实验直接给限定死了,万一在更大的学习率下2048维嵌入很猛呢?不过这归根结底还是NMT训练太慢导致的,作者可能不愿与花更多时间在这上面了
  • 评价标准单一,一切都以BLEU为准,而且只做英语到德语的翻译,换一个评分标准或者换一个任务这些结果就毫无用处了
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值