기본 콘텐츠로 건너뛰기
인공지능, AI, NLP, 논문 리뷰, Natural Language, Leetcode
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
- 이것을 맞추려면 They가 The 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을 통해서 보였다.
- 학습시에 number of reasoning steps을 고정하게 되나, answer module(마지막 층)에서 dropout을 적용하게 된다.
- Decoding에는 all steps에서 예측하는 것의 average을 기반으로 정답을 구하게 된다. (즉 마지막 층으로만 answer을 예측하지 않는다는 것)
- 이러한 네트워크를 SAN이라 부르는 것이고 stochastic dropout 개념이기 때문이다.
- 이는 예측에 대한 앙상블 개념이다.
- 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들을 구성한다.
- 초기 s_0은 hidden layer의 weighted sum으로 s0을 구성한다.
- s_t은 GRU로 계산을 하는데 이 때 hidden state의 값은 x_t로 구성을 한다.
- x_t는 Memory layer의 출력들의 weighted sum으로 구성을 한다.
- 이 때 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
7. Conclusion
- Fixed step인 모델 ReasoNet보다 더 강력한 성능을 도출하고 SOTA달성
- SNA과 다른 모델 ReasoNet, memory network들과의 연관성을 분석할 것이다.
- 이를 통해 SAN을 좀 더 general하게 만들어서 text classification과 NLI등에 일반적인 모델로 하고 싶다.
- 이 논문에서는 SAN을 되게 밀고 있고 되게 다이나믹하게 모델이 움직이는 것을 일반적으로 목표로 삼고 싶어하는 것 같다.
- 이 이후에도 MS 여러 논문들이 SAN 방식을 이용하는 것 같아보임!
- 자세한 과정은 까먹을지라도 개념정도는 기억하면 좋을 것 같다.
Reference
댓글
댓글 쓰기