NLP

[딥러닝 NLP] Machine reading comprehension (MRC)

공돼 2022. 8. 14. 01:01

* KAIST 서민준교수님 강의자료의 QA 부분을 공부하고, 제가 이해한대로 적었습니다. https://seominjoon.github.io/kaist-ai605/

 

Machine reading comprehension (MRC)는 말 그대로 기계 독해입니다. text로 된 지문(context)를 이해하는 것이 목표이며, 잘 이해했는지 주어진 질의(query, question)에 대해 답변을 잘 하는지로 평가합니다.

 

 

최근에는 Google, Naver 등 검색 엔진들에서 MRC를 활용하여, 질문을 입력하면 아래와 같이 이에 대한 답변을 맨 위에 띄워주고 있습니다. 

 

 

MRC 평가를 위한 QA dataset에는 세 가지 종류가 있습니다.

- extractive answer datasets  : 질의에 대한 답이 주어진 지문에 존재하는 dataset입니다. 지문에서 답이 있는 위치를 찾도록 모델 출력을 설정합니다. SQuAD, NewsQA, Natural Questions 등이 이 종류입니다.

- descriptive(narrative) answer datasets : 답이 지문 내에 존재하지 않을 수 있습니다. 질의를 보고 답을 생성해 내야하는 dataset입니다. MS MARCO, Narrative QA 등이 있습니다. 

- Multiple-choice dataset : 질문과 지문을 보고 객관식 문제를 푸는 dataset 입니다. MC Test, RACE 등이 있습니다. 

 

MRC 평가 지표는 아래와 같습니다.

1. EM / F1 score : extractive answer data 평가 지표로 주로 사용되며 EM 은 정확히 맞추면 1 아니면 0이고, F1-score는 예측 값과 GT 사이의 token overlap을 F1으로 계산한 것입니다.

2. ROUGE-L / BLEU : descriptive answer data 평가 지표로 주로 사용되며, ROUGE-L은 예측 값과 GT사이의 recall, BLEU는 precision 

 

MRC의 주요 challenge들은 아래와 같습니다

1. 단어가 다른 유사어로 표현된 서로 다른 두 문장을 이해하여 유사하다고 해야하는 것

2. 답이 없는 질문이 나왔을 때, 답이 없다고 대답해야 하는 문제 ( unanserable questions )

3. 하나의 context가 아닌 여러 context를 이해하고 이들을 연결해야만 답이 나오는 문제 ( multi-hop reasoning )

 

 

 

extractive answer 모델

descriptive(narrative) answer 모델이나 extractive answer 모델이나 핵심은 질문과 지문을 잘 이해해야 한다는 것 입니다. 질문과 지문을 잘 이해하고 답을 내는 형태가 다른 것으로 이 글에서는 출력이 좀 더 간단한 extractive answer 모델로 설명을 합니다. extractive answer 모델은 아래와 같이 동작합니다. 크게 보면 question과 conetxt를 입력으로 받는데, 각각의 내용을 잘 표현하도록 embedding 하고 이 둘 간의 관계를 파악하여 prediction(출력)을 내보내게 됩니다. 이제 각 step 별로 어떤 일이 일어나는지 보려고합니다. 

 

 

tokenization (토큰화)

우리가 익숙한 한글과 영어만 생각해봐도 어떤 문장이나 문서를 공백으로 나누어(단어) 따로 보더라도 공백으로만 나누면 가짓수가 너무 많아지고, 의미를 갖는 최소한의 단위로 나눠지지 않았음을 알 수 있습니다. 예를 들어 영어에는 n't, 's가 있고, 한글에는 '의', '는' 등이 있습니다. 주어진 text를 의미를 가지는 가장 작은 단위로 만드는 것을 tokenization이라고 합니다. 보통 library를 사용해 쉽게 처리할 수 있습니다. 

 

- subword tokenization

자주 쓰이는 글자 조합은 한 단위로 취급하고, 자주 쓰이지 않는 글자들은 subword로 쪼개는 방식. ##를 붙여서 단위를 만드는 경우가 있는데 이는 해당 토크 앞에 띄어쓰기가 아닌 다른 글자와 붙어있음을 의미한다. 

 

- Byte-pair encoding (BPE)

가장 자주 나오는 글자 단위를 다른 글자로 치환하면서 단위를 만들어가는 방식이다. 

 

- wordpiece tokenizer 

wordpiece tokenizer는 BPE 방식의 하나의 방법론

 

Special token 

SOS (start of sentence), EOS (end of sentence) 

CLS (class) : classification task에 사용하는 token

PAD : 입력 길이 맞추기 위해 추가되는 token

UNK : tokenization 시 사전 정의된 token에 없는 경우 UNK로 표시됨.

 

 

Pre-trained language model (BERT)

extractive answer QA task에서도 기본적으로 pre-trained language model인 BERT를 주로 활용합니다.

context에서 start와 end token의 위치를 뽑아내는 것이 목표이므로 BERT 출력 중 context token들에 대한 출력을 각 token이 시작 token일 확률, 끝 token일 확률로 다루어 fine-tuning 합니다. start에 대한 확률과 end에 대한 확률이 필요하므로 BERT를 두 번 통과 시킵니다.

 

Post processing

Pre-trained language model 로 부터 context token들의 start token 확률와 end token 확률을 받아 최종적인 답을 어떻게 내는지에 대한 설명입니다.

context token들이 start/end token이 될 확률이 가장 높은 K개를 뽑습니다. start token index <= end token index 인 모든 조합을 만들어내고 두 확률을 더 해서 가장 큰 확률이 되는 start token index과 end token index를 최종적으로 사용하여 해당 context 부분을 출력합니다.