前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >学界 | Nested LSTM:一种能处理更长期信息的新型LSTM扩展

学界 | Nested LSTM:一种能处理更长期信息的新型LSTM扩展

作者头像
机器之心
发布2018-05-10 11:04:50
1.1K0
发布2018-05-10 11:04:50
举报
文章被收录于专栏:机器之心机器之心

选自arXiv

作者:Vihar Kurama

机器之心编译

参与:刘晓坤、李亚洲

近日,CMU 和蒙特利尔大学联合提出一种新型的多级记忆的 RNN 架构——嵌套 LSTM。在访问内部记忆时,嵌套 LSTM 相比传统的堆栈 LSTM 有更高的自由度,从而能处理更长时间规模的内部记忆;实验也表明,NLSTM 在多种任务上都超越了堆栈 LSTM。作者认为嵌套 LSTM 有潜力直接取代堆栈 LSTM。

虽然在层级记忆上已有一些研究,LSTM 及其变体仍旧是处理时序任务最流行的深度学习模型,例如字符级的语言建模。特别是默认的堆栈 LSTM 架构使用一系列 LSTM 一层层地堆叠在一起来处理数据,一层的输出成为下一层的输入。在此论文中,研究者们提出并探索了一种全新的嵌套 LSTM 架构(Nested LSTM,NLSTM),并认为其有潜力直接取代堆栈 LSTM。

在 NLSTM 中,LSTM 的记忆单元可以访问内部记忆,使用标准的 LSTM 门选择性地进行读取、编写。相比于传统的堆栈 LSTM,这一关键特征使得模型能实现更有效的时间层级。在 NLSTM 中,(外部)记忆单元可自由选择读取、编写的相关长期信息到内部单元。相比之下,在堆栈 LSTM 中,高层级的激活(类似内部记忆)直接生成输出,因此必须包含所有的与当前预测相关的短期信息。换言之,堆栈 LSTM 与嵌套 LSTM 之间的主要不同是,NLSTM 可以选择性地访问内部记忆。这使得内部记忆免于记住、处理更长时间规模上的事件,即使这些事件与当前事件不相关。

在此论文中,作者们的可视化图证明了,相比于堆栈 LSTM 中的高层级记忆,NLSTM 的内部记忆确实能在更长的时间规模上操作。实验也表明,NLSTM 在多种任务上都超越了堆栈 LSTM。

嵌套 LSTM

直观上,LSTM 中的输出门会编码仍旧值得记忆的信息,这些记忆可能与当前的时间步骤不相关。嵌套 LSTM 根据这一直观理解来创造一种记忆的时间层级。访问内部记忆以同样的方式被门控,以便于长期信息只有在情景相关的条件下才能选择性地访问。

图 1:嵌套 LSTM 架构

架构

在 LSTM 网络中,单元状态的更新公式和门控机制可以表示为以下方程式:

这些方程式与 Graves (2013) 等人定义的是非常相似的,但不包括 peephole 连接。Nested LSTM 使用已学习的状态函数 c_t = m_t(f_t⊙c_t−1, i_t⊙g_t) 来替代 LSTM 中计算 c_t 的加运算。我们将函数的状态表示为 m 在时间 t 的内部记忆(inner memory),我们会调用该函数以计算 c_t 和 m_t+1。我们可以使用另一个 LSTM 单元来实现该记忆函数,因此如上图 1 所示就生成了 Nested LSTM。同样,该记忆函数能够由另一个 Nested LSTM 单元替换,因此就能构建任意深的嵌套网络。

给定以上所述的架构特性,NLSTM 中记忆函数的输入和隐藏状态为:

特别的,注意如果记忆函数是加性的,那么整个系统将退化到经典的 LSTM,因此记忆单元的状态更新为:

图 2:LSTM、堆叠 LSTM 和嵌套 LSTM 的计算图。隐藏状态、外部记忆单元和内部记忆单元分别由 h、c 和 d 表示。当前隐藏状态可以直接影响下一个内部记忆单元的内容,而内部记忆单元只通过外部记忆单元才影响隐藏状态。

在本论文提出的 Nested LSTM 变体架构中,我们会使用 LSTM 作为记忆函数,且内部 LSTM 的运算方式由以下一组方程式控制:

现在,外部 LSTM 的单元状态更新方式为:

实验

可视化

图 3:关于内部单元(图左)和外部单元(图右)的输入特征的单元激活的可视化。红色表示负单元状态值,蓝色表示正单元状态值。更深的颜色表示更大的值。对于内部 LSTM 的状态,对 tanh(c_t tilde)进行了可视化(因为 c_t tilde 未约束),而对于外部 LSTM 的状态,则直接可视化了 c_t。

图 4:tanh(c^n_t)的可视化,表征第一(图右)和第二(图左)堆栈层的输入字符的单元激活。红色表示负单元状态值,蓝色表示正单元状态值。更深的颜色表示更大的值。

Penn Treebank 字符级语言建模

图 5:在 PTB 的测试和验证集上的 BPC(bits per character)vs. Epoch 曲线。

表 1:嵌套 LSTM 和多个基线模型的 BPC 损失的对比。测试(test)的 BPC 损失分别和各个模型在最小验证(valid)BPC 值的 epoch 的损失相关。

中文诗歌生成

表 2:嵌套 LSTM 和多个基线模型在中文诗歌生成数据集(Chinese Poetry Generation dataset)上的困惑度的对比。

图 6:在中文诗歌生成的测试和验证集上进行字符级预测的困惑度 vs. Epoch 曲线。

MNIST Glimpses

表 3:嵌套 LSTM 和多个基线模型在 MNIST Glimpses 任务上的 NLL(负对数似然度)和准确率的对比。其中采用的 epoch 是每个模型在验证集上有最高准确率的 epoch。和 NLL 相似,模型的验证 NLL 被用于确定测试 NLL 的 epoch。

图 7:在 MNIST Glimpses 的训练集和验证集上的 NLL(图左)和误差率(图右)vs. Epoch 的曲线图。

论文:Nested LSTMs

论文地址:https://arxiv.org/pdf/1801.10308.pdf

我们在本文中提出嵌套 LSTM(Nested LSTM,NLSTM),这是一种新型的多级记忆的 RNN 架构。NLSTM 通过嵌套(和堆栈相对)为 LSTM 增加深度。NLSTM 的一个记忆单元的值由一个 LSTM 单元(有自身的内部记忆单元)计算。具体来说,NLSTM 记忆单元不会如经典 LSTM 那样计算(外部的)记忆单元的值:

,而是利用级联:

作为内部 LSTM(或 NLSTM)记忆单元的输入,并设定

。我们的实验表明,在相似的参数数量下,嵌套 LSTM 在多种字符级语言建模任务中的表现都超越了堆栈和单层 LSTM,并且和堆栈 LSTM 的高层级单元相比,LSTM 的内部记忆可以学习更长期的依赖关系。

本文为机器之心编译,转载请联系本公众号获得授权。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-02-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 机器之心 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档