首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

抛弃RNN吧!序列建模有前馈网络就够了

作者 | John Miller

译者 | 李志

编辑 | Vincent

AI 前线导读:在令人眼花缭乱但各种神经网络中,循环神经网络似乎独霸江湖。然而现在,很多自回归前馈模型正在逐步取代着 RNN。为什么 RNN 会被前馈网络打倒?何时需要使用前馈网络代替 RNN?为何前馈网络可以取代 RNN?本文将给你一些思考。

本文最早发布于 Off the Convex Path(链接:http://www.offconvex.org/2018/07/27/approximating-recurrent/),已获得作者授权转载。

更多优质内容请关注微信公众号“AI 前线”(ID:ai-front)

在过去的几年里,深度学习实践者们已经发明了一系列的各式各样的序列模型。虽然循环神经网络曾经是一大霸主,但现在,诸如自回归 Wavenet(https://deepmind.com/blog/wavenet-generative-model-raw-audio/)或 Transformer(https://ai.googleblog.com/2017/08/transformer-novel-neural-network.html)等模型,已经在很多任务上取代了 RNN。本文主要讨论循环模型和前馈模型之间的权衡问题。前馈模型训练更稳定、速度更快,而循环模型表达能力更强。有趣的是,更强的表达能力并没能让循环模型获得很大的性能提升。许多研究表明,在序列任务数据集上,前馈网络的性能可以与最好的循环模型相匹敌。这一现象可以为理论研究引出一个有趣的问题:

在什么情况下前馈网络可以取代循环神经网络而性能不受影响?为什么?

我们将讨论这一问题的几个合理解释,并着重介绍我们最近的工作(https://arxiv.org/abs/1805.10369)。该工作从基本稳定性的角度解释了该问题。

两种序列模型简介

循环神经网络

循环模型虽然种类很多,但基本形式是相似的。模型当前的状态 h_t 综合了过去状态的序列输入信息。对于每一个时间步 t,当前状态根据以下等式更新:

这里 x_t 表示 t 时刻的输入,ϕ是一个可微映射,而 h_0 表示初始状态。在最原始的循环神经网络中,该模型由矩阵 W 和 U 初始化,其状态更新公式为:

在实际应用中,长短时记忆网络(LSTM,http://colah.github.io/posts/2015-08-Understanding-LSTMs/)更为常见。而无论哪种情况,为进行预测,都需要将状态传递给一个函数 f,以得出模型的预测结果(输出)y_t = f(h_t)。由于状态 h_t 是过去所有输入 x_0, ..., x_t 的函数,预测值 yt 也就依赖于所有历史输入 x_0, ..., x_t。

循环模型可以由下图直观地表示。

循环网络拟合数据的方式是反向传播。然而,要从时间步 T 反向传播梯度到时间步 0 通常需要大量内存,而如此大量的内存需求通常难以满足。因此,在代码的具体实现中,对模型进行“截断”处理是很有必要的,即仅反向传播 k 个时间步的梯度。

(图片来源:https://r2rt.com/styles-of-truncated-backpropagation.html)

进行“截断”处理后,循环模型的预测结果仍然依赖于所有历史输入 x_0, ..., x_t。然而,这种训练过程在学习长期模式的情形下会对模型产生怎样的影响,目前尚不明晰,尤其是当模型需要的时间步大于 k 时。

自回归前馈模型

相对于依赖整个历史输入来进行预测,自回归前馈模型直接利用 k 个最近的输入 x_t-k+1, ..., x_t 来预测 y_t。这对应于一个很强的条件独立性假设。特别地,前馈模型假设目标仅依赖于 k 个最近的输入。谷歌的 WaveNet(https://arxiv.org/abs/1609.03499)就很好地阐明了这一通用原则。

相比于 RNN,前馈模型的上下文有限性意味着它无法获取超过 k 个时间步的信息。然而,使用诸如膨胀卷积等技术,我们可以将 k 设置得很大。

为何要关注前馈模型?

开始时我们认为,循环模型绝对是比前馈模型更加灵活、表达能力更强的模型。毕竟,前馈网络中包含强条件独立性假设,而循环模型并无此限制。然而,即使前馈模型表现能力稍稍欠缺,以下几个原因仍然让我们更倾向于使用前馈神经网络。

并行化:卷积前馈网络在训练时更容易实现并行化(https://arxiv.org/abs/1705.03122)。由于没有隐藏状态需要更新和维护,因此前馈模型的输出没有序列依赖性。在现代的高性能硬件上,这种训练更容易高效实现。

可训练性:训练深度卷积网络是深度学习的基础。然而,循环模型经常难以训练、难以优化(https://arxiv.org/abs/1211.5063)。反观深度前馈神经网络,研究者们已经在设计有效、可靠的训练架构和软件方面付出了很多努力,相关技术也更加成熟些。

推理速度:在某些情况下,前馈模型可以显著地更加轻量,并比类似的循环系统更快地执行推理(https://arxiv.org/abs/1211.5063)。在其他情况下,尤其是对于长序列问题,自回归推理是一个很大的瓶颈。这一瓶颈需要巨大的工作量或精妙的技巧(https://arxiv.org/abs/1702.07825)才能突破。

前馈模型可以比循环模型性能更好

虽然前馈模型可训练性和并行化的优点看似是以牺牲精度为代价的,但是最近的一些例子表明,实际上,前馈网络在基准任务上可以达到与循环网络相同的精度。

语言建模:语言建模的目标是根据给定的所有当前单词预测下一个单词。前馈模型仅使用最近的 k 个单词来进行预测,而循环模型可能会使用整个文档。门卷积语言模型(https://arxiv.org/abs/1612.08083)是一个前馈自回归模型,其性能可以与大型 LSTM 基准模型(https://arxiv.org/abs/1602.02410)抗衡。在截断长度 k = 25 的情况下,该模型在 Wikitext-103 的基准测试上表现优于大型 LSTM 模型。这一基准测试被设计用于测试模型是否善于获取长期依赖关系。在 Billion Word Benchmark(http://www.statmt.org/lm-benchmark/)上,该模型的表现略次于最大的 LSTM,但训练速度更快、占用资源更少。

机器翻译:机器翻译的目标是将英语句子映射到其它语种句子中,如映射为法语。前馈模型仅使用句子的 k 个单词进行翻译,而循环模型可以利用整个句子的信息。在深度学习领域,有各式各样的基于 LSTM 的序列到序列注意力模型(https://arxiv.org/abs/1409.0473),最典型的要数谷歌神经机器翻译(https://arxiv.org/abs/1609.08144)。 其一开始使用全卷积序列到序列模型(https://arxiv.org/abs/1705.03122),后来使用 Transformer(https://arxiv.org/abs/1706.03762)进行构建。(注:Transformer 并不是严格意义上的如前述的前馈模型,因为它不进行 k 步条件独立性假设。但它又不是一种循环模型,因为它不保存隐藏状态。)

(图片来源:https://github.com/facebookresearch/fairseq/blob/master/fairseq.gif)

语音合成:语音合成的目标是生成逼真的人类语音。前馈模型仅限于过去的 k 个样本,而循环模型可以使用所有历史样本。截至本文发布,LSTM-RNN 模型的最重大改进是前馈自回归 WaveNet(https://arxiv.org/abs/1609.03499)。

其他任务:最近,Bai 等人(https://arxiv.org/abs/1803.01271)提出了一种利用膨胀卷积的通用前馈模型,并表示该模型在从合成复制任务到音乐生成的任务中优于基准循环模型。

前馈模型为何会超过循环模型?

在上面举的例子中,前馈网络能实现与循环网络相同或更好的结果。这很奇怪,因为循环模型看起来从理论上更先进。对于这种现象,Dauphin 等人(https://arxiv.org/abs/1612.08083)给出了一种解释:

对于语言建模问题,循环模型的上下文信息无限性并非绝对必要。

也就是说,为完成预测任务,我们可能并不需要大量的上下文信息去求平均。近期,有理论工作(https://arxiv.org/abs/1612.02526)为这种观点提供了一些支持证据。

Bai 等人(https://arxiv.org/abs/1803.01271)对这一现象的另一种解释是:

RNN 的“无限记忆”优势在实际应用中几乎是不存在的。

正如 Bai 等人在报告中说的那样,即使在明确需要长期上下文的实验中,RNN 族模型也无法学习长序列。谷歌的一篇精彩的学术报告(https://arxiv.org/abs/1703.10724)表明,在 Billion Word Benchmark 上,记忆 n = 13 字上下文的 LSTM n-gram 模型与记忆任意长上下文的 LSTM 表现无异。

这一证据引出了我们的一个猜想:循环模型在实际应用中其实就是前馈模型。这是可能的。由于截断操作的存在,沿时间的反向传播并不能学习比 k 步更长的模式,因为通过梯度下降训练的模型没有长期记忆。

在我们最近的论文(https://arxiv.org/abs/1805.10369)中,我们研究了使用梯度下降训练的循环模型和前馈模型之间的差距。我们表示如果循环模型是稳定的(也就是没有梯度爆炸),那么循环模型的训练或推断过程都可以通过前馈网络很好地逼近。换句话说,我们证明了通过梯度下降训练的前馈和稳定循环模型在测试上是等价的。

如果训练不稳定,梯度下降就是无意义的。实际上,即使是对非常简单的不稳定模型,梯度下降在某个固定点也会失效。由于实际应用中训练的模型并不能保证一定稳定,不稳定模型无论稳定性如何,(只要它不是绝对稳定的),其表现都是相似的。

使用 Wikitext-2 language modeling benchmark(https://einstein.ai/research/the-wikitext-long-term-dependency-language-modeling-dataset),我们展示了可以在不损失性能的情况下提高某些循环模型的稳定性。具体地说,我们对超参数进行了研究,来寻找性能最好的不稳定 RNN 和 LSTM。然后,我们重新训练了两种模型,并施加了论文中提到的稳定性条件。在两种情况下,不稳定和稳定模型的表现居然一模一样

结 论

虽然我们已经进行了一些初步尝试,但要理解为什么前馈模型可以与循环模型抗衡,并阐明如何在序列模型之间做权衡,仍有很长的路要走。比如,想要在序列基准测试上取得良好效果,究竟需要多大内存?在截断的 RNN(可以被看作前馈)和常用的卷积模型中如何在表达能力方面做权衡?

如果能找到这些问题的答案,那么我们离建立可解释性理论就又进了一步。我们就可以解释我们现在模型的优点和局限,并在特定条件下选择模型时获得一些理论指导。

英文原文:

http://bair.berkeley.edu/blog/2018/08/06/recurrent/

今日荐文

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180808B0S7NH00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

相关快讯

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券