解读表示学习中的自适应计算时间 Adaptive Computation Time (ACT)

本文介绍了自适应计算时间(ACT)算法,该算法用于控制递归神经网络(RNN)中每个时刻的计算次数,以适应不同输入的复杂性。ACT通过引入停止单元和概率模型来自动调整网络深度,解决了深度学习中网络深度选择的难题。此外,文章讨论了ACT算法的工作原理、如何控制重复运算次数以及输出结果的获取,并提出了对重复运算次数的约束以避免过拟合和增加计算开销。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近在学习网红模型Universal Transformers时接触到了自适应计算时间(Adaptive Computation Time, ACT)这个新奇的算法。查了一下,这个算法其实并不算新,2016年就被Google DeepMind组的Alex Graves在论文《Adaptive Computation Time for Recurrent Neural Networks》中提出。但是如果从引用量来说,这篇论文确实还算很新的,截止到发稿时止,该论文的引用量仅为113次。这个引用量对于Transormers模型的红火程度来说确实太少了。那为何ACT算法引用数如此少呢?是太难理解没有流传?还是适用范围太小?抑或是并没有那么实用的效果呢?本文就来解读一下这个ACT算法。

自适应计算时间ACT的用途

上来先划重点,说说这个方法有什么用吧。这个方法最直接的用途是控制RNN模型中每一个时刻重复运算的次数。如果不太理解的话,可以看做是控制RNN在每一个时刻状态计算网络的深度。扩展来说,ACT算法的思想还可以用到自动控制深度网络的深度,甚至控制模型的复杂度

自适应计算时间ACT的原理

问题定义

考虑一个传统的递归神经网络(recurrent neural network) R \mathcal{R} R,这个网络由一个输入权重矩阵(maxtrix of input weights) W x W_x Wx,一个参数化的状态转移模型(parametric state transition model) S \mathcal{S} S,一组输出权重(a set of output weights) W y W_y Wy,以及一个输出偏置量(output bias) b y b_y by组成。当输入一个序列 x = ( x 1 , ⋯   , x T ) \mathbf{x} = (x_1, \cdots, x_T) x=(x1,,xT)时, R \mathcal{R} R在时间 t = 1 t=1 t=1 T T T通过迭代如下公式来计算状态序列 s = ( s 1 , ⋯   , s T ) \mathbf{s} = (s_1, \cdots, s_T) s=(s1,,sT)和输出序列 y = ( y 1 , ⋯   , y T ) \mathbf{y} = (y_1, \cdots, y_T) y=(y1,,yT)

(1) s t = S ( s t − 1 , W x x t ) s_t = \mathcal{S}(s_{t-1}, W_xx_t) \tag{1} st=S(st1,Wxxt)(1)

(2) y t = W y s t + b y y_t = W_ys_t +b_y \tag{2} yt=Wyst+by(2)
在这儿,公式(1)中得到的状态 s t s_t st是一个向量,包含着序列的动态信息。我们可以理解公式(1) S \mathcal{S} S模型将当前的输入 x t x_t xt和上一时刻的状态 s t − 1 s_{t-1} st1按照某种关系进行结合,从而产生了当前状态 s t s_t st。当前状态 s t s_t st又经过某一种线性变换,即公式(2),(也可以不变换,如GRU中,此时 W y W_y Wy固定为全1矩阵, b

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值