딥러닝 초짜의 논문 리뷰

Source: Deep Learning on Medium

P(y|x) 는 주어진 X 가 있을 때, for all i, Y_i = Y*_i 일 확률들의 곱이다. 주어진 X 와 이전 time step 까지의 y<i 들로 계산하고, learning 은 P(y|x) 를 maximize 하면서 이루어진다.

Listen

listener encoding 은 Bidirectional Long Short Term Memory(BLSTM) RNN 을 피라미드 형태로 3개 쌓은 구조에서 forward 된다. next 피라미드 RNN 으로 forward 될때마다, layerOutput/layerInput = 1/2 로 차원이 감소된다. 결과적으로 (X_1, …, X_T) 는 (H_1, …, H_u) 로 차원감소 된다. 차원을 감소 시키는 이유는 T 가 음성길이에 따라 변하는 값이고, 그것을 fixed value 인 u 로 고정하고자 함과, 러닝속도 증가를 위함이다. encodingPart에서 decodingPart 로 forward 될때, T 를 유지한다면, 그만큼 attention 계산도 오래걸린다. [피라미드 형태의 BLSTM RNN 을 pBLSTM 이라고 부른다.]

j = 0 일때는 concatenation 부분을 [X_2i, X_(2i+1)] 로 대체하면 될것 같다.

Attend and Spell

  • Y_i 는 decoder state S_i 와 context C_i 로 계산한다.
  • S_i 는 previous decoder state S_(i-1), previously emitted character Y_(i-1), context C_(i-1) 으로 계산한다. RNN 은 2 Layers of LSTM 으로 구성한다.
  • C_i S_i H 로 아래와 같이 계산한다.
    1. ϕ, ψ는 MLP로 구현되며 S_i H_u 의 내적을 구하기 위해 차원을 맞춰주는 역할을 한다. e_i,u S_iH_u와 유사한 정도를 나타낸다.
    2. e_i,u 에 softmax 함수를 취해주면 H_u 에 대한 가중치 α_i,u를 구할 수 있다.
    3. H 에 대한 가중치 합을 구해서 context vector C_i 를 계산한다.

Learning

log(P) 를 maximize 하면서 learning 이 이루어지는데, 이 때, ~Y_i 는, 일정확률 r로 [Y*_i(groundTruth) , Y_i] 에서 뽑는 값이다. 전부 groundTruth 에서 뽑지 않는 이유는, groundTruth 는 <unk> 이지만 <unk> 이 distribution 에서 가장 높은 확률이 나오는 것은 모델에게 좋은 방향은 아니기 때문에 그렇다.
예를 들어, “I had a headache $ for 10 days” 라는 문장에서 $ 가 e 의 next character 로 나오기를 바라지는 않기 때문이다.
추가로, pre-training 은 필요하지 않았다고 한다.

Decoding and Rescoring

  • Decoding
    맨처음 character 부터 <eos> token 이 나올때까지 진행되는데, 시작은 <sos> token 으로 한다. P(y_i|x) 을 argMax 함수에 넣어 가장 큰 hypotheses 를 차례대로 뽑아낸다. argMax 함수에 넣었을 때 <eos> token 이 튀어 나오면 completely transcribed 됐다고 여긴다.
  • Rescoring
    이미 만들어져 있는 language dictionary PLM을 사용하여 decoding 된 Y 안에 있는 단어들이 dictionary 안에 있는 단어인지 테스트하는 것으로 진행됐다. Rescoring 은 아래와 같다.

Experiments

실험은 300만 개의 Google voice search utterances(대략 2000시간)을 가지고 진행됐다. 학습에 앞서 data augmentation 을 하였는데, room simulator ? 와노이즈도 더했다.

listener는 3 * 512 nodes pBLSTM + 1 * input BLSTM .
Speller : 2 * 512 nodes LSTM
weight : (-0.1,0.1) uniform distribution
optimize : Asynchronous Stochastic Gradient Descent(ASGD)
learning rate : 0.2
geometric decay : 0.98 for every 1/20 epoch

score 관련해서는 생략.