加载中…
正文 字体大小:

分享【VALSE 前沿技术选介16-24期】

(2016-11-24 11:43:34)
标签:

it

该文章属于“VALSE”原创,未经授权禁止转载。


【VALSE 前沿技术选介16-24期】Neural GPU and Active Memory Models

作者:小 S 

继 Winsty 之后,我也回归了(泪 QAQ。今天给大家带来的是一篇比较新的工作,《Can Active Memory Replace Attention?》[1] 这篇工作的推荐之处有以下几点。首先它是 Neural GPU [2] 的一个延续工作,Neural GPU 又是 Neural Turing Machine(NTM) 的一个改进工作——NTM 的火爆程度就不用赘述了。二,它分析了 Attention 和 Active Memory 的一些区别,也缩短了 NTM 这类模型和 Attention-based models 在实际任务上(非 algorithm learning)的表现差距。第三,它给出了一些 insight,比如 recurrent/dependency 在 output 上的重要性。

Neural GPU 其实可以认为是一种 Recurrent Convolutional Neural Networks ,只不过它的 Convolutional 操作是作用在 GRU 这种单元上的。它的基本公式就是一个 Convolutional operator,公式如下:
分享【VALSE <wbr>前沿技术选介16-24期】
如果这个 Convolutional Operator 直接操作在 memory 上,做一种 residual memory models(即每次 m' = m + update),那么就会出现和 RNN 中的 gradient vanishing 类似的问题。于是乎,Neural GPU 就是让这个 Convolutional Operator 作用在拥有 gate 的 GRU 单元上,变成了 CGRU,得到了如下的公式:
分享【VALSE <wbr>前沿技术选介16-24期】
现在有了 CGRU 单元作为每一个 layer,就可以有多个 layer(stack)的网络。剩下的就是解决 input 和 output 了。在 input 上,neural GPU 比较有创新性,它不像我们以前的 recurrent neural networks 一样,每个 timestep 都会读取新的 input 进来,而是一次把全部 input 读进来。比如如下图,即使是两个数字相加(相当于两个序列相加,也是连加号一起读进来):
分享【VALSE <wbr>前沿技术选介16-24期】
这个读进来后,也不是立刻作为一列 input,而是转换为 embedding 后作为一个”mental image“s 中的第一列——s_0 中的第一列。而 s_0,作为整个网络的 input,它其他列(取决于 width)全是0。这些0会在后续的计算过程中,逐渐变成非0,就变成了 weight。那么这个设计的原理其实就是,把这些 input 为0 的单元,作为 memory,用于储存中间的计算结果。而在 output 时,也是这样,取 output layer 中的第一列来做计算(不取 memory)。

讲完了 Neural GPU,再多讲一句,这个东西为什么叫 Neural GPU 呢,本来明明就是 CGRU 罢了。按照作者的意思,他们在设计上,比 NTM 更并行化,更浅,所以更像 GPU 的计算——于是乎……

那么这篇论文[1] 是讲什么呢,它是讲,Neural GPU 这个东西,其实可以归为一类叫 Active Memory Models 的东西。Active Memory 主要是有别于 Attention,因为 Attention 只是在计算过程中,改变输入或者说改变 canvas 中的某一些单元的值(是部分更新);而 Active Memory 是计算全部 canvas 的值(全部更新)。这篇论文也是主要来讨论,是否这种全部更新可以取代部分更新,也就是是否可以从实验表现上,超越 Attention-based model。

Neural GPU 这类模型,虽然理念上很好,很 exciting,却在过去的实际任务上表现得很让人失望——比如机器翻译,远不如 Attention-based sequence-to-sequence models。论文[1] 的作者指出,这可能是因为 Neural GPU 在输出时,是彼此独立的。也就是它输出 N 个 output(比如 N 个 digits,或者 N 个 character),是独立进行决策的(这和传统 RNN 就不一样了)。于是乎,这些 output 之间彼此没有信息传递,没有序列性,没有相互依赖。作者认为这才是它表现差的原因。也就是说,你在 input 时候为了性能,把 recurrence 给我去掉了,那么也影响了我的 output。

于是乎,论文[1] 的作者就自然而然地想到了改进它的办法,就是把 Neural GPU 的输出给变成相互依赖的——重新变成有序序列化的。如图:
分享【VALSE <wbr>前沿技术选介16-24期】
这个结果就瞬间好了起来,在 NMT 的 benchmark 上超过了 state-of-art 的 Attention-based sequence-to-sequence 模型。从而为 Active Memory 打了一次翻身仗。
分享【VALSE <wbr>前沿技术选介16-24期】

[1] Łukasz Kaiser, Samy Bengio. "Can Active Memory Replace Attention?"
[2] Łukasz Kaiser, Ilya Sutskever. "Neural GPUs Learn Algorithms".

0

阅读 评论 收藏 禁止转载 喜欢 打印举报
已投稿到:
  • 评论加载中,请稍候...
发评论

    发评论

    以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

      

    新浪BLOG意见反馈留言板 不良信息反馈 电话:4006900000 提示音后按1键(按当地市话标准计费) 欢迎批评指正

    新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

    新浪公司 版权所有