NL-039, Stochastic Answer Networks for Machine Reading Comprehension (2018-ACL)

0.  Abstract

  • Stochastic answer network을 제안하고 MRC multi-step 추론을 하는 것이다.
  • 이전 연구인 ReasonNet(강화학습을 사용한)과 비교해서 unique feature은 stochastic prediction dropout on the answer module(마지막 층)을 학습시에 한다.
    • 일반적으로 마지막 layer에는 dropout을 안쓴다. 왜냐하면 classification에서는 항상 같은 수의 출력이 나와야하기 때문..근데 어떤 의미로 쓴 것일까?
    • 모델이 confidence을 높이기 위해, 즉 calibration을 하기 위해 MCMC 기법(?)을 이용하여 dropout을 사용하는 논문이 있는 것으로 알고 있다. (이것과 비슷한 트릭일까?)

1. Introduction

  • MRC에 대한 평가로 SQuAD 데이터를 사용하는게 일반적이다.
    • Q: What collection does the V&A Theator & Performance galleries hold?
    • P: The V&A Theator & Performance galleries opened in March 2009. ... They hold the UK’s biggest national collection of material about live performance
    • 이것을 맞추려면 TheyThe V&A Theator & Performance galleries을 가리키고 있는 것을 알고 있어야 한다.
    • 그리고 They가 material about live performance을 hold 함을 추출하는 것을 알아내면 된다.
  • 이렇게 추론을 하는 과정은 multi-step reasoning (multi-step strategy)임을 알 수가 있다.
  • 이렇게 다단계 추련을 할 때, 첫 번째 모델은 fixed number of steps을 가지는 형태이다.
  • 나중에는 Shen의 논문에서 dynamic하게 number of steps을 강화학습으로 학습하게 하였다.
  • 그 결과 dynamic multi-step reasoning이 fixed multi-step reasoning보다 성능이 좋게 나옴을 SQuAD와 MS MARCO을 통해서 보였다.
  1. 학습시에 number of reasoning steps을 고정하게 되나, answer module(마지막 층)에서 dropout을 적용하게 된다.
  2. Decoding에는 all steps에서 예측하는 것의 average을 기반으로 정답을 구하게 된다. (즉 마지막 층으로만 answer을 예측하지 않는다는 것)
  3. 이러한 네트워크를 SAN이라 부르는 것이고 stochastic dropout 개념이기 때문이다.
  4. 이는 예측에 대한 앙상블 개념이다.
  • SAN 네트워크
    • 그림보면, 주황색에서 노랑색으로 넘어가서 정답을 예측하게 되는데, 노랑색을 몇 step까지할지를 모른다는 것이다.
    • 위 그림에서는 3개의 step을 거치게 되었고 정답을 예측할 때, 3개의 step 모두 활용해서 정답을 구하겠다는 것

2. Proposed model: SAN

  • MRC 데이터 셋 <Q, P, A>에 대한 설명 생략
  • 총 4개의 layer로 위 그림과 같이 이루어져 있다.

2.1 Lexicon Encoding Layer

  • word-level에서 normalize을 하여 encoding 하는 layer이다.
  • 기본적으로 많이 쓰던, POS(Part-Of-Speech) tags와 pre-trained Glove 300-dim vectors을 이용한다.
  • Passage representation(좀 더 자세히..)
    • 9-dim POS tagging embedding for total 56 different types of the POS tags
    • 8-dim NER recognizer embedding for total 18 different types of the NER tags
    • 3-dim binary exact match feature (토큰 p가 Q에서 original or lowercase or lemma 으로 겹치는지)
    • 280-dim single layer neural network with ReLU을 다음과 같이 적용
      • 즉 Question 토큰들의 glove 300-dim을 attention 개념으로 encoding
    • 따라서 9+8+3+280=300차원의 embedding
    • 이것과 기존 glove 300-dim embedding과 합쳐서 총 600-dim representation을 생성
  • Question representation
    • Glove 300-dim representation
  • 이렇게 되면, passage와 question이 600, 300으로 embedding dimmension이 다르다.
  • 또한 그 다음 layer에서 BiLSTM을 통과하는데 많은 파라미터가 필요하게 되기 때문에 FFN layer을 통과시켜준다.
  • FFN(x)=W2*ReLU(W1*x+b1)+b2
    • 즉 600과 300을 같은 차원으로 축소시켜주는 효과
  • 최종 lexicon embeddings (d차원이라 할 때)
    • 으로 표시할 수 있다.

2.2 Contextual Encoding Layer

  • question과 paragraph에서 사용하는 2개의 BiLSTM을 공유한다.
  • 단순히 BiLSTM을 두 번 통과시키는게 아니라 pre-trained CoVe vectors 600-dim을 첫 번째 contextual encoding layer의 출력에 concat을 하여 두 번째 encoding layer의 입력으로 넣어준다.
  • 각 BiLSTM에는 maxout을 통과시켜 차원수를 감소시킨다. (정확히 max를 어떤 방식으로 취하는지는 모르겠음)
  • 그 결과 가 된다.

2.3 Memory Generation Layer

  • 가  2.2에서 구해졌고 이 두 vector을 attention을 취할 것이다.
    • 일반적으로 와  를 dot product을 하고 normalizing을 하여 score값을 매긴다.
    • 하지만 여기서는 normalizing을 하지 않고 다음과 같은 식을 취한다.
    • 은 ReLU(W3*)으로 하나의 layer을 통과시킨 값이다. (도 마찬가지)
    • f_attention은 dot product을 의미하고 그 뒤에 dropout을 취한다.
    • 각 Q와 P의 token들에 다 계산을 하면, C(m x n) attention matrix가 만들어진다.
    • 이렇게 하면, 0~1로 강제 normalizing을 시키는 것은 아니지만.. 나름대로 효과가 있나보다.
  • 다음에은 contextual information ()와 question-aware representation *C을 concat을 취한다.
    • *C가 question-aware representation이라고 그냥 갖다 붙인듯 한데..?
  • 일반적으로 passage에는 수 많은 tokens들이 있기 때문에 long dependency가 그 안에서 발생할 수 밖에 없다.
    • 따라서 self-attended layer을 추가한다.
    • 앞의 contextual encoding에서 사실 LSTM을 통하여 서로가 연관성이 있게 하나, 여기서 dependency가 생긴다는 말 같다. 따라서 self-attention을 하는 것
    • (passage tokens)끼리 이제 self-attention을 해서 nxn matrix가 생성이 된다.
    • 여기서도 dot product을 attention을 하게 되고 대각선을 drop하게 된다.
    • 대각선 drop은 이제 자기 자신에 대한 attention은 고려하지 않고 다른 tokens들로 align을 하겠다는 의미이다.
    • 최근 Attention is all u need에서 쓰이는 self-attention은 자기 자신도 고려하던데.. 
  • 마지막으로 BiLSTM을 취해준다.
    • 여기서 는 vector고 는 matrix인데 concat을 한다는 것은 에서  token에 해당하는 위치에 맞는 행(or 열) vecotr와 concat을 한다는 것 같다.
    • 이 논문에서 쓴 self-attention은 사실 생각해보면, 은 score 개념에 해당하는 matrix다.
    • score matrix을 이용하여 보통 weighted sum을 하여 새로운 attented vector을 생성하는게 일반적인데, 바로 score vector와 기존 와 concat을 하여 BiLSTM을 취하는게 다른 점인 것 같다.

2.4 Answer module

  • wisdom of masses exceeds that of any individual
    • 개인보단 대중의 지혜가 좋다.
  • 즉 다른 multi-step reasoning 모델들에서는 대부분 마지막 step을 이용해서 정답을 예측하지만, 여기서는 모든 step 출력을 이용한다는 것이다.
    • 직관적으로 Dropout을 이용하여 step bais problem을 피하도록 하고 every individual step에서 좋은 정답을 추측할 수 있도록 한다.
    • 이러한 방법을 stochastic prediction dropout이라고 부른다.
  • 그러면 어떤 step에 있는 출력을 말하고 합친단 것일까?
    • 그림을 그려보면 이해가 쉬울 것...
    • 그림이 이쁘진 않으나 이런 개념으로 hidden layer들로 s_t들을 구성한다.
    1. 초기 s_0은 hidden layer의 weighted sum으로 s0을 구성한다.
    2. s_t은 GRU로 계산을 하는데 이 때 hidden state의 값은 x_t로 구성을 한다.
    3. x_t는 Memory layer의 출력들의 weighted sum으로 구성을 한다.
    4. 이 때 weight는 s_(t-1)와 M을 이용하여서 구성한다.
    • 마치 R-net과 비스무리함..MS는 다 이런 스타일로 하는 것 같음
  • 이제 s_t들을 이용하여 정답을 span해보자. 이 때 마지막 s_t만을 이용하여서 구하는 개념이 아니고 모든 s_t을 이용하는 것이 여기서 강조하는 SAN의 개념이다.
    • 학습시에는 여기서 stochastic dropout을 사용하게 된다.
      • 위와 같이 학습 중에는 dropout을 하겠다는 것이다. (와우)
      • 이전 연구에서는 중간 단계의 dropout을 사용하여 하는 비슷한 방법이 있으나 SAN은 마지막 layer에서 하는 것이 다른 점이라고 한다.
      • Dropout rate는 0.4을 사용했다고 함.

3. Experiment Setup

  • Spacy tool 사용하여 tokenize
  • 2-layer BiLSTM with d=128
  • mini-batch size 32
  • Adamax 이용
  • Learning rate 0.002 / 10 epochs마다 반으로 감소
  • 모든 LSTM에 dropout 적용과 함께 마지막 layer에서도 dropout을 적용

4. Result

  • 표만..

5. Analysis

  • 표, 그림만..

6. Related Work

  • 생략

7. Conclusion

  • Fixed step인 모델 ReasoNet보다 더 강력한 성능을 도출하고 SOTA달성
  • SNA과 다른 모델 ReasoNet, memory network들과의 연관성을 분석할 것이다.
  • 이를 통해 SAN을 좀 더 general하게 만들어서 text classification과 NLI등에 일반적인 모델로 하고 싶다.
  • 이 논문에서는 SAN을 되게 밀고 있고 되게 다이나믹하게 모델이 움직이는 것을 일반적으로 목표로 삼고 싶어하는 것 같다.
  • 이 이후에도 MS 여러 논문들이 SAN 방식을 이용하는 것 같아보임!
    • 자세한 과정은 까먹을지라도 개념정도는 기억하면 좋을 것 같다.
Reference

댓글