您的位置:首页 > 其它

RNN with Adaptive Computation Time

2017-01-03 22:52 417 查看
最近看完了一篇论文《Adaptive Computation Time for Recurrent Neural Networks》,目前正在做相关实验,把总结的PPT贴出来分享下,后面是论文的主体翻译。也可参考我之前翻译的一篇博文:RNN的四种代表性扩展—Attention and Augmented Recurrent Neural Networks(二)

里面有关于“Adaptive Computation Time(自适应计算次数)”的形象解释。建议论文和我翻译的博文结合看,会更好理解ACT的思想。









论文翻译:《Adaptive Computation Time for Recurrent Neural Networks》:

该论文介绍了一种“适应性计算次数(ACT)”算法,该算法允许RNN网络接收一个input后,学习要计算多少步后产出一个output。ACT对整个网络架构的变动需求并不大,是一个确定性的网络结构,并且不用向参数梯度中添加任何噪音。在实验上,我们用了四个合成性问题:确定二进制向量的奇偶性,应用二进制逻辑运算,添加整数和排序实数。综合来看,使用ACT算法在性能上有明显的提升。另外,我们也实验了character-level的语言模型,然后使用ACT模型在效果上并没有产生多大的性能提升。不管怎样,该算法算是一个比较新颖的想法。

皮埃尔·费马特能够在一个假设(如果不是证明)的边缘写了一个定理,花了三个半世纪和大量的数学来解决[35]。简单点的例子是,我们期望在两个城市之间找到一条令人满意的路由,或者检查一个特定事实所需的查询数量,在不同情况下变化很大,并且不可预测。 然而,大多数机器学习算法不能动态地使它们所采用的计算量适应它们执行的任务的复杂性。

对于人工神经网络,其中神经元通常排列在密集连接的层中,计算时间的复杂度一般是网络中层到层转换的数量。在前馈网络中,这由网络深度或堆叠在彼此顶部的层的数量控制。 对于循环网络,变换的数量还取决于输入序列的长度 - 其可以被填充或以其它方式扩展以允许额外的计算。就目前证据表明,通过增加深度可以更好的提升网络性能,而最近的研究结果表明增加序列的长度也有相似功效[ 31, 33, 25]。然后在确定对特定输入向量的计算量时,目前还需要先验(priori)来确定。一个解决方案是简单地使每个网络非常深,并设计其架构,以减轻与长链的迭代[29,17]相关的消失梯度问题[13]。然而为了能即提高计算性能又能减小学习的困难度,似乎在每次输入和输出之间进行动态的改变网络“思考(即计算)”的步数是更可取的。在这种情况下,在沿着序列的每个步骤(即token)处,网络的有效深度变成了一个接收输入的动态函数。

这里使用的方法是增加了一个sigmoidal halting单元作为网络的输出,该sigmoid的激活值决定了计算是否需要继续的概率。得到的halting分布是一个平均场向量,将它用来作为网络的输出和沿着序列在内部网络中状态的传播。一个随机的方案是根据halting分布中的二进制样本来决定是halt还是continue,该技术最近已经应用到了基于场景理解的RNN[7]。而且,平均场方法使用了一个outputs和states的平滑函数,这样的优势使其不需要使用随机梯度估计。我们希望使用平均场方法在遇到长序列halting决策时可以获得益处,因为每一个决策都有可能回会影响到所有后续序列,并且采样噪音也会迅速积累(正如在策略梯度方法[36]中观察到的)。







内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  RNN ACT seq2seq 深度学习