Skip to content

TRAINING RNNs AS FAST AS CNN

Jooong edited this page Jan 25, 2018 · 5 revisions

TRAINING RNNs AS FAST AS CNN

0. Abstract

  • 문제의식
    • 기존 RNN 계열의 아키텍쳐는 state 연산을 병렬적으로 진행하기 힘든 구조(recurrence에 대한 sequential dependency)
    • 따라서 학습 / inference가 느리다.
  • 제안
    • SRU: Simple Recurrent Unit
    • 대다수 연산이 recurrence에 대해 독립적이 되도록 재구조화.
    • 그 결과 연산 속도가 Conv-layer와 비슷, LSTM에 비해 5~10배 빨라짐.

1. Introduction

RNN의 특징

  • sequential symbol들을 처리한다.
  • 한 번의 step에서 하나의 symbol만 처리한다.
    • 이전 step 연산 결과를 이용하여 다음 step을 계산함.
    • 따라서 병렬 연산이 태생적으로 어렵다.

이러한 문제를 해결하기 위해, 본 논문에서는 이전 스텝에 대한 dependency를 최소화하고, 병렬 연산이 쉬운 아키텍처를 제시한다. 기존 방법론들이 그림1 의 왼쪽과 같이 모든 연산을 순차적으로 시행한다면, 본 논문의 SRU는 오른쪽과 같이 큰 연산들을 병렬처리 한 이후 작은 연산들을 sequential하게 수행하는 형태.

[그림1] 기존 RNN계열의 연산 수행과 SRU의 연산 수행

그림1

SRU의 장점

  • 연산 시간의 단축
    • 병렬연산을 늘리고 순차연산을 줄임
  • 하드웨어 아키텍처에 알맞게 optimization이 가능
    • 예를 들어 CUDA-level에서의 최적화가 가능

2. Method

2.1 SIMPLE RECURRENT UNITS

Gate 연산

  • LSTM, GRU 등 대다수 RNN 계열에서는 정보의 흐름을 gating한다.
    • vanishing & exploding gradient 문제를 완화하기 위해
  • 구성: 1-layer + sigmoid
  • 적용: point-wise multiplication between new input & gate output
    • matrix multiplication에 비해 값싼 연산

본 논문에서는 값싼 gate 연산(point-wise multiplication)만 순차적으로 처리해주고, 나머지 값비싼 matrix multiplication은 병렬처리하는 것을 목표로 한다.

forget gate ()

  • SRU는 하나의 forget gate를 사용

  • 먼저 x_t(t기의 input)를 선형변환 한다.

  • 이후 편향을 더해주고 sigmoid를 씌운다.

internal state()

  • 이전 internal state()에 forget gate를 씌운다.
  • 에 ()를 입힌다.

output state()

  • 에 활성화함수를 취한다.

이런 기본 구조에 highway connection을 추가한다.

  • forget gate와 유사한, reset gate를 추가한다.

reset gate를 포함한 최종적인 계산식은 아래와 같다.

  • highway connection을 통해 계산에 정보를 포함 시킨것이다.

Imgur

2.2 RELATION TO COMMON ARCHITECUTRES

LSTM과의 비교

  • LSTM에서의 계산

    • , 즉, 직전 output state가 이용된다.
    • 이 때문에 를 계산하려면 이 완전히 끝날때까지 기다려야 하는 것
  • SRU의 계산

    • gate값 계산 자체는 이전 state와 무관하게 진행한다.

      • 매트릭스 연산을 수행한다. 병렬화가 가능하다.
    • 이후에 ,를 계산한다.

      • 이들은 sequential하게 연산한다. 하지만 point-wise 연산이기 때문에 비교적 빠르게 연산이 가능하다.

2.3 CUDA-LEVEL OPTIMIZATION

  1. 매트릭스 연산 최적화

    • 아래와 같이 모든 매트릭스 연산을 묶어서 할 수 있다.

    Imgur

    * Q&A 매트릭스 사이즈는 같다. elementwise 연산을 해야 하니까.
    
  2. element-wise 연산 최적화

    • 하나의 커널 함수에 몰아넣는다.
      • 그렇지 않으면 커널을 여러번 띄우게 되고, 데이터를 이동시키는 데서 비효율이 생긴다.

3. RELATED WORK

시퀀스 처리

SRU는 Quasi-RNN, KNN(Kernel Network), RCNN(Recurrent CNN) 등과 깊은 관련을 맺고 있다.

(이해 못함.)

cuDNN 최적화

cuDNN LSTM으로부터 많은 영향을 받았다.

(이해 못함.)

Representational power

축소된 RNN 모델들의 representational power에 대한 연구가 있었는데, 걔네들도 embedding 시퀀스에 대한 유사도 함수로 볼 수 있다는게 결론이었다. 레이어를 더 많이 쌓을 수록 non-linearity를 많이 거쳐서 high-order 시퀀스 유사도를 표현할 수 있었다고 한다. 실험 결과 SRU도 비슷하다고 한다.

4. EXPERIEMENTS

1) CLASSIFICATION

Imgur

2) QUESTION ANSWERING

Imgur

3) LANGUAGE MODELING

Imgur

4) MACHINE TRANSLATION

Imgur

5) SPEECH RECOGNITION

Imgur

reddit: https://www.reddit.com/r/MachineLearning/comments/6zduh2/r_170902755_training_rnns_as_fast_as_cnns/?st=jcudy15l&sh=f143d29d

Clone this wiki locally