Search

Question Answering 中 Reading Comprehension

해당 포스트는 카이스트 김현승 멘토님의 강의 내용을 정리한 글입니다.

What is Question Answering?

QA는 자연어로 주어진 질문에 대해 정답을 찾아주는 시스템이다.
질문의 종류와 답을 찾을 수 있는 source에 따라 다양한 QA 방법이 있다.
ex. 뉴스기사에서 찾기, 그림에서 찾기 등

Machine Reading Comprehension, 기계 독해

다양한 QA 방법 中 Reading Comprehension이 있다.
Reading Comprehension은 주어진 문단을 이해하고, 질문에 답을 찾는 것이다.
하나의 질문에 대해 다양한 답이 가능하다.

Dataset, 어떤 데이터셋을 이용하는가

1 . Stanford Question Answering Dataset (SQuAD)

SQuAD Dataset 예시
Evaluation 예시
특 징 - 10만개의 (문단, 질문, 답) 쌍이 존재한다. - English Wikipedia에서 가져온 문단을 사용하고, 100~150개의 단어로 이루어짐. - 정답은 문단의 일부분으로 만들어져 있다. ⇒ 정답에 제한이 있기 때문에 모든 질문에 답을 할 수 있는 것은 아님. - 정답이 없을 경우 No answer 선택지가 있다. (버전 2.0부터) - 가장 유명한 reading comprehension dataset이고 SOTA 성능이 이미 사람을 능가함. 평 가 - Exact Match(0/1)와 F1(partial credit), 두 가지 지표를 이용한다. - 하나의 질문에 대해 다양한 답이 가능하기 때문에 최대 3개까지 gold Answer를 설정함. - 예측값과 gold Answer를 비교해서 EM과 F1을 구하고, 가장 큰 값을 선택. 이때, a, an, the, punctuation은 삭제하고 진행함. - 사람의 performance : EM = 82.3 / F1 = 91.2
Plain Text

2 . Korean Language Understanding Evaluation (KLUE)

KLUE 예시
F1대신 ROUGE를 쓰는 이유
특 징 - 3만개의 (문단, 질문, 답) 쌍이 존재한다. - Wikipedia, The Korea Economy Daily, ACROFAN에서 가져온 문단을 사용. - 정답은 문단의 일부분으로 만들어져 있다.(SQuAD와 마찬가지) ⇒ 정답에 제한이 있기 때문에 모든 질문에 답을 할 수 있는 것은 아님. - 정답이 없을 경우 No answer 선택지가 있다. - 정답을 쉽게 찾지 못하도록 질문을 문단에 있는 단어로 만들지 않음. (예시의 Good/Bad Question을 보자) 평 가 - Exact Match(0/1)와 Rouge(partial credit), 두 가지 지표를 이용한다. SQuAD에서 F1을 사용했던 것과 달리 Rouge를 사용함. - 하나의 질문에 대해 다양한 답이 가능하기 때문에 다양한 gold Answer를 설정함. - 예측값과 gold Answer를 비교해서 EM과 Rouge를 구하고, 가장 큰 값을 선택. - 사람의 performance : EM = 85.9 / ROUGE = 88.48
Plain Text

Model, 기계독해 모델의 변천사

0 . Problem Formulation

Input:C=(c1,c2,...cN)  and  Q=(q1,q2,...qM),ci  qiVOutput:1startendNInput : C = (c_1,c_2,...c_N)\; and\; Q = (q_1,q_2,...q_M), c_i \;q_i\in V \\ Output:1\leq start \leq end \leq N
Context와 Question을 입력하면, 정답의 start&end index를 반환한다.

1 . 변천사

2016 - 2018 LSTM-based Models with Attention 2019 - current Fine-tuning BERT-like Models
Transformer 등장 이후 많은 모델들이 트랜스포머로 대체되었고, 좋은 성능을 내고 있다.
하지만, LSTM-based 모델에서 사용되었던 아이디어를 배우는 것은 매우 의미있다.
단, 모델의 구체적인 계산 방식보다는 모델의 컨셉과 직관을 집중적으로 알아보자.
(왼) LSTM-based (오) BERT
LSTM-based Model에는 휴리스틱 요소가 포함되어 복잡해 보인다.

2 . Seq2Seq Model with Attention (LSTM-based)

- Machine Translation에서 사용하는 방법을 Reading Comprehension에 적용. - Source와 Target Sentence 대신, Passage와 Question을 사용. - Passage에서 Question과 가장 관련 있는 부분을 찾아야 함. Attention을 사용해서 Question과 Passage의 관련성을 측정하고 정답의 Span을 찾음 - 매번 Decoder를 통해 단어를 예측하는 것이 아니라, 정답의 start와 end position을 예측하는 두 개의 classifier를 학습함.
Plain Text

3 . BIDAF : the Bidirectional Attention Flow model (LSTM-based)

카이스트 서민준 교수님이 만드신 모델이다
- 단어의 embedding을 구할 때 word embedding(GloVe)와 character embedding을 concat해서 사용함 ⇒ 단어에서 최대한의 정보를 뽑아내기 위한 의도로 추측 - 2개의 bidirectional LSTMs을 사용해서 context와 query의 문맥적 의미를 각각 생성. - Context2Query attention : context의 각 단어가 query의 어떤 단어와 가장 관련 있는지 ... 생략 결론은, 최대한 많은 정보를 모델에 반영하기 위한 다양한 방법들이 사용되었음.
Plain Text

4 . BERT for reading comprehension

BERT를 Fine-Tuning해서 Reading Comprehension Task에 적용하는 방법을 알아보자.
Segment Embeddings를 사용해서 Question과 Context를 구분함.
[SEP] 토큰을 사용해서 Question과 Context의 경계를 알려줌.
start와 end를 각각 맞추게 됨.
BERT의 성능

5 . 사람보다 좋은 성능을 냈으니 Rading Comprehension은 끝났나?

No! 여전히 문제점들이 존재한다.
Adversarial Examples가 추가되었을 때 성능이 확 떨어짐.
Adversarial(적대적) Examples : 모델을 속이거나 혼동을 주기 위해 추가된 데이터.
다양한 Dataset에 대해서 Generalize 되지 않는다.
위 이미지를 보면, SQuAD로 Fine-Tuning한 모델을 나머지 Dataset에 적용하면 성능이 떨어짐.
특정한 경우에 터무니 없는 성능을 내기도 함.
위 41.5와 100.0 등의 숫자는 모델이 잘못 예측할 확률임.