MACHINE LEARNING/Artificial Neural Network

BIDAF / Bidirectional Attention Flow for Machine Comprehension 논문 요약

24_bean 2022. 8. 7. 17:48

논문링크: https://arxiv.org/abs/1611.01603

 

Bidirectional Attention Flow for Machine Comprehension

Machine comprehension (MC), answering a query about a given context paragraph, requires modeling complex interactions between the context and the query. Recently, attention mechanisms have been successfully extended to MC. Typically these methods use atten

arxiv.org


Abstract 

Machine Comprehension(이하 MC) 는 주어진 context 단락에 대한 query에 응답하는 동작을 합니다.

MC는 context와 query사이의 복잡한 상호작용을 모델링 해야하는데, 일반적으로 이런 방법은 context의 작은 부분에 초점을 맞추고 고정된 크기의 벡터로 요약하기 위해 attention을 사용합니다.

또한 종종 uni-directional attention을 형성하기도 합니다.

 

이러한 문제를 해결하기 위해 고안한 Bidirectional Attention Flow 즉, BIDAF 네트워크는 다양한 수준의 세분화에서 context를 나타내고, Early summarization 없이 query-aware context representation 을 얻는 다단계 계층적 프로세스입니다.

 


Model

해당 그림은 BIDAF 모델의 기본 구조입니다.

 

가장 좌측을 보시면, 크게 6가지 부분으로 계층적인 프로세스를 가짐을 알 수 있습니다.

각각의 Layer는 다음과 같은 의미를 가집니다.

  1. Character Embed Layer : 문자 임베딩 레이어
    1. 고차원 벡터 공간에 대한 단어에 대한 매핑을 담당합니다.
    2. 문자 레벨의 임베딩되어 벡터화된 각각의 문자는 CNN에 대한 1D 입력으로 간주 될 수 있습니다.
    3. CNN의 출력은 전체 폭에 걸쳐 max-pooling되어 각 단어에 대한 고정 크기 벡터입니다.
    4. -----------------------------------------------------------------------------------------------------------
    5. 여기서는 각 단어에 ID Vector를 부여하고, 이를 Input으로 받는 형식을 가진다. (d크기의 차원을 가짐)
  2. Word Embed Layer : 단어 임베딩 레이어
    1. 각 단어를 고차원 벡터 공간에 매핑합니다.
    2. 각 단어의 고정 단어 임베딩을 유지하기 위해 pre-trained word vector, GloVe 를 사용합니다.
    3. 문자와 단어의 임베딩 벡터는 2-layer-highway-network로 보내집니다.
    4. -----------------------------------------------------------------------------------------------------------
    5. Pre-trained Word Embedding 모델을 사용해서 Embedding하는 과정이다. 이 논문에서는 Pre-trained model로 GloVe를 사용하고 있다. (Character Embedding Layer에서와 같이 d 크기의 차원을 가진다)
  3. Contextual Embed Layer : 맥락적 임베딩 레이어
    1. 단어 간의 시간적 interaction을 modeling하기 위해 이전 계층(Word Embed Layer) 위에 LSTM(Long Short-term Memory Network)을 사용합니다.
    2. 양방향으로 LSTM을 배치하고 두 LSTM의 출력을 연결합니다.
    3. Context word vector H와 U의 각 열 벡터는 전방 및 후방 LSTM의 출력 연결로 인해 각각  각각 d차원 출력을 갖는 2차원입니다.
    4. 모델의 처음 세 계층은 query와 세분화 수준이 다른 context에서 feature를 계산합니다.
    5. -----------------------------------------------------------------------------------------------------------
    6. Bi-LSTM을 통해 주변 문맥을 파악하는 과정이다. 
    7. 여기서는 Character Embedding Layer에서의 Output과 Word Embedding Layer에서의 Output을 받아서 Concatenate한 후, 이를 그대로 Highway Network의 Input으로 사용한다.
    8. Bi-LSTM의 특성상 d차원의 Output이 Forward에서 한번, Backward에서 한번 나오므로 2d차원의 Output을 가지게 된다
    9. 다만 여기서 주의할 것은, Concatenate될 때, 방향이 Column-wise하다는 것이다. 즉, m번째 단어는 m번째 Column을 가지게 된다
  4. Attention Flow Layer : Attention 흐름 레이어
    1. context와 query의 정보를 연결 및 융합하는 것을 담당합니다.
    2. 기존의 유행하던 attention mechanism과 달리, query와 context를 single feature vector로 요약하는 데 사용되지 않습니다.
    3. 각 time step의 attention vector는 이전 레이어의 임베딩과 함께 후속 모델링 레이어로 flow할 수 있습니다. 이는 위에서 언급한 Early-summarization으로 인한 정보 손실을 감소시킨다.
    4. 해당 레이어에서는 두가지 방향으로 attention을 계산합니다. (query -> context, context -> query)
      1. context -> query attention (C2Q) vector : 어떤 query 단어가 context 단어와 가장 관련이 있는지를 나타냅니다.
      2. query -> context attention (Q2C) vector : 어떤 context 단어가 query 단어 중 하나와 가장 유사한지를 나타냅니다.
    5.  context 단어에 있는 weight는 Softmax를 통해 구합니다.
    6. 최종적으로, Contextual embedding과 Attention vector가 결합되어 G가 생성되며, 각 열 벡터는 각 context단어의 query-aware representation로 간주 될 수 있습니다.
    7. -----------------------------------------------------------------------------------------------------------
    8. 여기서는 이전에 사용하는 Attention방법들과는 다르게 Attention을 SIngle vector(혹은 Fixed-sized Vector)로 요약하는 용도로 사용하지 않는다. 때문에 요약을 하면서 생기는 정보 손실에 대한 문제가 여기서는 일어나지 않는다는 점이 특징이다.
  5. Modeling Layer : 모델링 레이어
    1. Attention Flow Layer에서 최종적으로 생성한 G가 input으로 들어옵니다.
    2. 해당 레이어의 출력은 query에서 conditioned word 간의 interaction을 포착합니다.
    3. -----------------------------------------------------------------------------------------------------------
    4. 여기서는 Query와 Context간의 Interaction을 학습하기 위해 Bi-LSTM을 사용한다.
  6. Output Layer : 출력 레이어
    1. BIDAF의 모듈형 특성은 나머지 아키텍처가 정확히 동일하게 유지되면서 작업에 따라 출력 계층을 쉽게 바꿀 수 있게 합니다.

Result

해당 논문에서는 SQuAD MC Dataset으로 다른 모델들과의 비교를 진행합니다.

 

표 b) 에서는 SQuAD dataset에 ablation(제거)을 통해 각 항목이 어느정도 영향을 미치는 지 보여주고 있습니다.

BIDAF (ensemble) 의 F1 지표가 80.7인 반면, word embedding과 C2Q attention vector의 F1 지표를 비교해보면 이 두가지 항목이 성능에 가장 큰 역할을 한다고 추론해볼 수도 있겠습니다.

 

 

Word에 비해 Context가 Query에 대한 정보를 더 잘 표현하고 있음을 볼 수 있습니다.

 

 

항목 a)를 보면 May와 may의 차이점도 잘 구분하고 있고, 기존 Baseline과 비교하여 분류를 괄목적으로 잘 하고 있는 모습을 볼 수 있습니다.

 

 

query(좌측)에 대하여 context의 어느 부분에 Attention 해야하는 지(우측)를 시각화하고 있습니다.


Conclusion

 

해당 논문에서 제시하는 모델 구조인, Bidirectional Attention Flow (BiDAF) 모델은 Context와 Query의 양방향 Attention을 통해 Context나 Query의 요약없이 Query-aware context representation을 찾아내는 것이 핵심입니다.

 

처음 해보는 논문 요약이어서 어려운 점이 많았지만 여기저기 레퍼런스를 띄우고 열심히 만들어 봤습니다.

차후에 해당 논문을 구현한 게시글도 올릴 예정이니 관심 바랍니다.

 

그리고, 혹여나 오역 및 잘못된 내용이 있는 경우 댓글 혹은 메일 주시면 감사하겠습니다.


Reference : https://towardsdatascience.com/the-definitive-guide-to-bi-directional-attention-flow-d0e96e9e666b

 

An Illustrated Guide to Bi-Directional Attention Flow (BiDAF)

This article illustrates the workings of BiDAF, an NLP model that has pushed the envelope in the Question and Answer domain.

towardsdatascience.com

https://github.com/allenai/bi-att-flow

 

GitHub - allenai/bi-att-flow: Bi-directional Attention Flow (BiDAF) network is a multi-stage hierarchical process that represent

Bi-directional Attention Flow (BiDAF) network is a multi-stage hierarchical process that represents context at different levels of granularity and uses a bi-directional attention flow mechanism to ...

github.com