阅读论文 《Train RNN as fast as CNN》

时间:2022-03-07 01:44:03

Train RNN as fast as CNN

@(NLP)[cuDNN-LSTM, SRU]

ABSTRACT

作者提出了一个简单循环单元的架构(SRU),能够轻易的实现并行化。SRU像CNN一样快,比优化后的LSTM实现快5到10倍。

In SRU, the majority of computation for each step is independent of the recurrence and can be easily parallelized. SRU is as fast as a convolutional layer and 5-10x faster than an optimized LSTM implementation.

Architecture

阅读论文 《Train RNN as fast as CNN》

左边是通用的RNN结构,右边是SRU

  • 在传统的结构中,每次输入step x t , t = 1 , , n 依赖于前一步。这阻碍了并行化。
  • SRU的设计,使得处理输入的过程能与其他输入独立(大灰块),用相对轻量级的计算做递归组合(小灰块)。主要的计算(虚线框内)能被轻易的并行化。

Average processing time

阅读论文 《Train RNN as fast as CNN》

使用cuDNN LSTM和字级别的2D卷积,提出的SRU在32个样本每一批的平均处理时间(毫秒)
- D:特征维数
- K:特征宽度
- l :每一个序列的令牌数

METHOD

Formula

SRU的基础形式包含一个遗忘门,给出一个在t时间给出 x t 输入,我们可以计算一个装换 x ~ t 和一个遗忘门 f t

x ~ t = W x t

f t = σ ( W f x t + b f )

计算只依赖 x t ,使得能让所有的时间步并行化, 遗忘门能调制用来产生输出的状态的 h t 的内部状态 c t .
c t = f t c t 1 + ( 1 f t x ~ t )

h t = g ( c t )

其中 g ( ) 是一个激活函数,用来产生 h t 状态。使用公路连接(SRistava等人,2015),并添加类似于遗忘门 f t 计算的复位门 r T 。复位门用于计算输出状态 h t 作为内部状态 g ( c t ) 和输入 x t 的组合。
完整结构如下:
(1) c t = f t c t 1 + ( 1 f t x ~ t )

(2) h t = g ( c t )

(3) r t = σ ( W r x t + b r )

(4) c t = f t c t 1 + ( 1 f t ) x ~ t

(5) h t = r t g ( c t ) + ( 1 r t ) x t

We set g() = tanh for all our experiments, unless specified otherwise

完全抛弃第 t 步的门计算和第 t = 1 n 步之间的联系。给定输入序列 x 1 , , x n ,得到 t = 1 n 时对应的 x ~ t , f t , r t ,能进行并行计算

CUDA-LEVEL Optimization

优化SRU和cuDNN LSTM是如何优化的一样。SRU公式允许两个优化:
- 第一个: 把公式 1 3 中的在批处理中的矩阵运算优化:

U T = ( W W f W r ) [ x 1 , x 2 , , x n ]

- 第二个:序列的所有元素操作可被融合成一个核函数,并在隐藏状态D的维度上并行化。

Algorithm I

阅读论文 《Train RNN as fast as CNN》

论文原文:Train RNN as fast as CNN
机器之星的翻译