논문_리뷰
BiDAF - Bidirectional Attention Flow for Machine Comprehension
JungGwig
2021. 1. 25. 00:08
BiDAF - Bidirectional Attention Flow for Machine Comprehension
Minjoon Seo, Aniruddha Kembhavi, Ali Farhadi, Hannaneh Hajishirzi
위 논문은 ICLR 2017에서 발표된 논문입니다.
Abstract
- Machine Comprehension(MC)는 주어진 Context paragraph에서 쿼리에 대한 옳바른 답을 하는 것을 의미한다. (QA와 같다)
- 최근 Attention 모델이 MC에 적용되기 시작, 문맥의 작은 부분에 집중 가능하며 fixed-size vector로 표현
- BiDAF
- multi-stage hierarchical process
- fixed-size vector로 context를 요약하면 정보의 손실 발생 --> 요약하지 않고, query-aware context vector를 찾음
- query의 단어마다 필요로하는 context의 정보가 다름 --> 세분화하여 query vector 제공 (Query2Context)
- query와 context의 상호작용이 강해짐
- query-aware context vector로 context summarization 대체
- context summarization은 정보의 손실을 야기함
- query를 보고 주목해야 할 Context를 찾고 이를 반영한 vector를 얻음
Introduction
- 기존 Attention Mechanism
- context를 fixed-size vector로 요약, 그로부터 attention weight 계산
- uni-directional
- BiDAF
- attention layer에서 문맥을 fixed-size vector로 요약하지 않음
- 이전 layer에서 계산된 attended vector를 subsequent model로 flow
- 이전 time step에서 생성된 attention은 현재 attention에 영향 X, subsequent model을 통하여 flow
- memory-less attention
- time step마다 attention 계산 --> 이전 attention layers 사용 X
- Modeling layer와 Attention layer의 분업 유도 --> 현재 time step의 attention을 학습하는 것에 집중
- 이전의 잘못된 attention에 영향 X
- attention layer에서 문맥을 fixed-size vector로 요약하지 않음
Model
- Character Embedding Layer
- charCNN을 이용하여 word를 vector로 임베딩
- CNN output을 pooling으로 차원을 줄여 사용
- Word Embedding Layer
- 사전 학습된 워드 임베딩 모델을 이용하여 word를 vector로 임베딩
- Contextual Embedding Layer
- Bi-LSTM을 통해 주변 문맥을 파악 ( input = d * 2 )
- Attention Flow Layer
- query와 context vector를 연결시키고, 각 단어마다 문맥 속의 query-aware feature vector를 만듦
- context vector와 query를 interaction --> context에서 query에 대한 답이 될 수 있는 특징들 추출
- 이전 time step에서 생성된 attention은 현재 attention에 영향을 주지 않음
- context와 query의 similarity로만 계산
- previous attention은 Bi-LSTM으로 구성된 Modeling layer로만 서로 다른 time step에 전달
- Context2Query, Query2Context --> context와 query의 정보교환에 도움을 줌
- similarity matrix $S_{t,j}$ : context word의 t번째 단어와, query word의 j번째 단어의 유사도
- Context2Query
- $a_t= softmax(S_{t:})$
- query 단어중에서 어떤 단어가 각각의 context 단어와 가장 연관이 있는지 확인
- $S_{t,j}에 $softmax$를 취하였을 때 유사성이 큰 weight만 값이 커짐
- attention이 적용된 attended query vector는 유사성이 큰 query의 단어들만 반영됨
- Query2Context
- $b = softmax(max_{col}(S))$ // $max_{col}$ : 각 row에서 가장 큰 값을 뽑아냄
- 각 context word마다 가장 query words중에서 유사도가 가장 큰 항만 뽑고, softmax를 취해 상대적으로 더 query와 연관성 있는 context word만 남김
- query 입장에서 중요한 word만 살아남음
- Modeling Layer
- Bi-LSTM으로 구성되며 query와 context word의 interaction 파악