程一-计算所 发表于 2016-11-23 15:02:47

【VALSE 前沿技术选介16-25期】

http://mp.weixin.qq.com/s/USElQTOaalLDwhRTo9J5ew




【VALSE 前沿技术选介 16-25期】Fast Weights to Attend Recent Past
                                                                                                            小S


今天要介绍的是一篇 Hinton 二作的论文,《Using Fast Weights to Attend to the Recent Past》。这篇论文与现在很火的 Memory Networks,LSTM,Layer Normalization 都非常有关系。加之之前,与大家分享过最新的一些 Memory Networks 的进展,所以从这篇开始,会分两到三次总体介绍这边的相关工作。


我们知道,经典的 Recurrent Neural Networks(RNN)中,hidden states 就可以被称为一种“memory”,这种 memory 每个 timestep 都改变,像一种短时记忆。而后来改进的 LSTM,更是直接翻译过来中文就是 long short term memory,则更强调一种 memory 的概念,里面因为有了 gate 的设计,可以计算 memory 的一种变化值,一种增量。也就因此,LSTM 比 RNN 能保存相对更多的 memory。这两种 memory 其实在我们神经生物上,都有相对应的概念——也就是短时记忆和长时记忆。短时记忆可以被长时记忆,尽管有”长短“之分,其实只是一种(长期)不需要被记住的记忆和(长期)需要被记忆的区别。也就是说,无论是 RNN 还是 LSTM 中的 memory,都是一种相对改变起来比较缓慢的 memory cell——被这篇论文 称为 slow weights。


与此同时,相关的神经科学研究表明,我们是存在第三类记忆的——可以被称为瞬时记忆。在论文中,用”突触“记忆来举例这种瞬时记忆。在我们的神经元之间,有一种信息传递是 Ca2+ 钙离子流入突触前膜,使得小泡释放神经递质,传入突触后膜。因为这种钙离子的存在,在一次发放动作电位之后,会有多余的钙离子留在突触末梢使得下一次发放电位更容易(因为会更容易超过静息电位);而如果上一次释放量大了,来不及合成,就会相反导致抑制现象。这种突触上的“记忆”叫做 spike-timing-dependent-plasticity,它可以实现一种如上述例子中的 facilitation 现象。那么这种突触上的记忆与我们的 RNN、LSTM 那两种记忆最大的不同就在于,它是一种脉冲记忆。RNN,LSTM 上的记忆,是一种绝对化的,有即有,没有即没有;突触这种记忆是脉冲的,既可以被抑制,也可以被激活——我的理解就是,它像一种缓存,等待一个条件去激活或者抑制。


那么这种脉冲一样的 memory,就更符合一种动态 memory 的感觉,需要去关注 memory 的一种实时状态(因为这种改变它的条件是实时的、动态的)。这种更反映实时状态的 memory,就被可以理解为一种 fast memory,而刻画方式就是去关注 memory 的 dynamics——其研究的目标就是 memory 的变化。这种变化,虽然是连续的,但也可以因为我们拆解成每个 timestep,而变成一种离散观测——即我们要关注每个 timestep 时的 memory。为了去建模这种 memory dynamics,这篇论文 就用了他们称为 Fast Associative Memory 的模型去做了一种差分形式的表达。


那么这个 fast memory 是怎么实现的呢,他们就定义了一种 fast weights(公式1,图1):


这个 A(t) 就是 fast weights,可以看出来,它也是一种迭代的,是基于 hebbian-like rule 的。那么这个迭代是在哪里发生的呢,是比我们 RNN 和 LSTM 里的 timestep 更短的 time-scale——所以被作者称为一种 inner loop。也就是说,在 h(t) 和 h(t+1) 之间,发生了 S 次 A(t) 的改变或者说迭代。我们继续分析公式1 可以看出来,这个 A(t) 也很有 LSTM 里的 forget 的感觉,其中的 \lambda 是一种 decay factor,类似一种 forget gate 的概念,而 \eta 就还是 learning rate 的感觉。于是乎,这个 fast weights A(t) 扮演的就是一种,利用 recent past 来快速调整到 recent hidden states 的作用。


如此,利用这个 fast weights 的定义,新的 h(t) 和 h(t+1) 之间的关系就如下式(公式2):


其中,当 h_0(t) 是通过 slow weights 中的 W 和 C 矩阵来初始化的。也因此,在 h_0(t) 到 h_S(t)(也就是 h(t+1))的改变过程中,我们只需要计算一次 W,C 矩阵,后续都是在逐步计算 A(t)。那么,如果我们迭代地计算这个 S 步的 A(t),就可以得到如下公式:

注意,这俩公式和原文中的公式(3)(4)是有一点区别的——个人觉得是原文写错了。从上面第二个式子可以看出,A_t*h_s(t+1) 就很像一种 attention 上的 attention。那么,从这个角度看,这篇论文和之前的相关 attention, memory models 就更像了。最大的区别就在于,这篇论文 的 attention 没有经过非线性层。


到此为止,这个新提出的 fast weights 还不太能 work。原因是,新的 A(t) 和原来的 h(t) 不在一个 time-scale 上,就可以看成是两种不同类型的 pattern。为了让他们能一起 serve 好,就需要做一种 scale renormalization——就好像是物理中的无量纲化,或者高斯化过程。在这篇工作中,就是他们的公式(5):


即他们采用了 Layer Normalization 的方式来完成最终的 fast weights 网络。这一步被作者指出非常重要。










Jimmy Ba, Geoffrey Hinton, et al. "Using Fast Weights to Attend to the Recent Past". arXiv preprint 2016.
Jimmy Ba, et al. "Layer Normalization". 2015.


页: [1]
查看完整版本: 【VALSE 前沿技术选介16-25期】