Geoffrey Hinton讲座回顾:使用快速权重来存储临时记忆

By 吴攀2017年1月09日 16:05

介绍:这个讲座谈了快速权重(fast weight)的思想及其实现。这种快速权重可以被用于存储最近的临时记忆,并且它们提供了一种实现这种类型的对过去的注意(attention)的神经上可行的方法——近期它已被证明在序列到序列模型上是非常有帮助的。通过使用快速权重,我们可以不再需要存储神经活动模式的副本。

其中的基本思想是临时记忆(temporary memories)可以不通过添加活动神经元(active neurons)来存储,而是可以通过在一些已有神经元上进行一些修改来实现。


对于每一个神经元连接,与这个连接相关的权重都有两个组分。一是标准慢权重(standard slow weight),其代表了长期记忆,学习慢衰减也慢。另一个是快速权重,代表了短期记忆,学习快衰减也快。快速权重是真正存在的,比如:启动(priming)。假设你听到了一个带有大量噪声的词,如果这是你第一次听到这个词,你可能无法识别它。但如果你在半个小时之前听过这个词,你就可以将其识别出来,这是因为你识别这个词的阈值(threshold)被你半小时之前的记忆降低了。一般而言,假设我们有一个局部表示(localist representation),为了实现上述效果,我们就可以临时降低某个特定词的阈值,而不是改变整个结构。你也可以从另一个角度来思考:假设你有一种活动模式,你可以改变活动模式之间的神经元的权重,以使其中一个特定的模式变成一个更强的吸引子(attractor,比如更容易识别一个词)。这是我们存储记忆的方式,我们通过改变权重来存储模式而不是直接存储模式。因为如果我们使用权重矩阵(weight matrix)而非活动向量(activity vector)来存储短期记忆,我们就能通过有限的神经元实现远远更大的容量。


存储临时知识的方式有两种:


长短期记忆(LSTM):在隐藏单元存储活动。它的容量非常有限。假设一个隐藏状态有 H 个单元,那么在关于当前序列的历史上,LSTM 就会受限于 O(H) 的短期记忆(吸引子)。除此之外,LSTM 将信息存储在其隐藏单元之中,从而使得该短期记忆与正在进行的过程无关。


快速权重:让你可以使用权重矩阵来存储短期记忆,这能带来更高的容量。除此之外,该短期记忆可以存储特定于当前序列的历史的信息,从而使得该信息可被用于影响正在进行的过程。


我们可以怎样应用快速权重的思想?


让我们从 ReLU RNN 开始。ReLU RNN 很易于训练,而且很擅长学习长期依赖(长期记忆)。下面的左图表示了普通的 RNN,右图则表示一个相同的 RNN(如果我们使用空矩阵进行了「隐藏→隐藏」权重初始化,如蓝色箭头所示)。为了应用快速权重的思想,这里使用了外积学习规则(outer product learning rule)来更新快速权重矩阵 A。

Screen Shot 2016-11-19 at 1.25.16 PM.png

更新快速权重矩阵 A 的规则:每次我们在时间步骤 t 学习到一个隐藏状态 h(t),我们就将当前快速权重 A(t-1) 与权重衰减参数 λ 相乘,并且加上乘以学习率 η 的新学习到的隐藏状态 h(t) 的外积(outer product)。这个更新函数如下所示。其快速权重即为过去的贡献(contribution)与随时间衰减的贡献的总和。在数学上,该贡献即为该隐藏状态的外积 h(t)h(t)^T。


A(t) = λA(t − 1) + ηh(t)h(t)^T

hs+1(t + 1) = f([Wh(t) + Cx(t)] + A(t)hs(t + 1))


Screen Shot 2016-11-19 at 3.56.20 PM.pngScreen Shot 2016-11-19 at 11.06.39 AM.png


增加层归一化(LN)技巧使其效果更好。


在标准 RNN 中,循环单元(recurrent units)的输入总和的平均幅度有一个趋势——每一个时间步骤要么会增大、要么会减小,这会导致梯度爆炸或消失。LN 则是在向隐藏单元所接收到的总输入向量应用非线性(ReLU)之前,将该向量归一化到零均值和单位方差。在一个层归一化的 RNN 中,其归一化项使其在该层的所有输入的总和的规模调整时保持不变,这能得到远远更加稳定的隐藏到隐藏动态(hidden-to-hidden dynamics)?


这样有效吗?


任务 1:联想任务


Screen Shot 2016-11-18 at 3.37.14 PM.png

Screen Shot 2016-11-18 at 3.35.32 PM.png

任务 2 :使用快速权重结合 glimpse


Screen Shot 2016-11-19 at 10.40.52 AM.png

实现:

https://github.com/jiamings/fast-weights


Hugo Larochelle 所做笔记:

http://www.shortscience.org/paper?bibtexKey=journals/corr/1610.06258#hlarochelle


思考



声明:本文由机器之心原创出品,版权归作者Yuting、Joshua Chou所有,转载请查看要求,机器之心对于违规侵权者保有法律追诉权。