새소식

부스트캠프 AI Tech 4기

[ODQA] 2. Extraction-based MRC & Generation-based MRC

  • -
1. Extraction-based MRC
2. Generation-based MRC
3. Summary

 

1. Extraction-based MRC

▮ Extraction-based 문제 정의

  • 질문과 답변이 항상 주어진 지문(context)내에 span으로 존재
    • SQuAD, KorQuAD, NewsQA 등

정답은 하나의 연속된 span으로 존재한다.

 

▮ Extraction-based 평가 방법

  • Exact Match (EM) Score
    : 예측값과 정답이 character 단위로 완전히 똑같을 경우에만 1점, 하나라도 다른 경우 0점
  • F1 Score
    : 예측값과 정답의 overalp을 비율로 계산, 0점~1점

 

 Extraction-based MRC

  1. Pre-processing
    Context와 Question이 Tokenization을 통해 토큰화 되어 입력으로 들어간다.
  2. Fine-tuning
    Word Embedding을 통해 각 토큰들을 벡터화 시키고 이 벡터들이 Extraction-based MRC Model의 Input으로 사용되고 Output은 각 token이 정답의 start/end일 확률이 된다.
  3. Post-processing
    Post processing을 거쳐서 정답을 내보낸다.

 

 

▮ Pre-processing

  • Special Token
    • [CLS]토큰으로 시작하며 [SEP]을 이용해 Question과 Context를 구분한다.

 

  • Attention Mask
    • 입력 Sequence 중 attention 연산을 할 때 무시할 토큰을 표시
    • 0 : 계산    1 : 계산 X
    • [PAD]와 같은 의미 없는 Special token을 무시하기 위해 사용한다.

 

 

  • Token Type IDS
    • 입력이 2개 이상의 sequence일 때, 각각에게 id를 부여하여 모델이 구분해 해석하도록 유도
    • 해당 Task에서는 질문은 0, context는 1

 

  • Output
    • Extraction-based에서는 답안을 생성하기보다 정답 span의 시작 위치와 끝 위치를 예측하도록 학습한다.
    • Token Classification 문제로 치환

+ '미국'ㅇ; '미' '##국'으로 쪼개진 경우 원래 text를 최소한으로 포함하는 단어들을 전부 정답에 포함하여 학습한다.

 

 

 Fine-tuning

 

  • 정답에 해당되는 각 임베딩을 linear transformation을 통해 각 단어마다 하나의 숫자(점수)를 출력한다.
  • context의 각 토큰마다 하나의 숫자가 output으로 나오게 되고 그 점수가 높을 수록 정답으로 볼 수 있다.
  • 정답은 문서 내 존재하는 연속된 단어 토큰(span)이므로 span의 시작과 끝 위치를 알면 정답을 맞출 수 있으므로 이렇게 출력된 점수를 기준으로 시작과 끝 위치를 구한다.

 

▮ Post-processing

불가능한 답 제거하기

다음과 같은 경우 candidate list 에서 제거

  • End position이 start position보다 앞에 있는 경우 (e.g. start = 90, end = 80)
  • 예측한 위치가 contexet를 벗어난 경우 (e.g. question 위치쪽에 답이 나온 경우)
  • 미리 설정한 max_answer_length보다 길이가 더 긴 경우

최적의 답안 찾기

  1. Start/end position prediction에서 score(logits)가 가장 높은 N개를 각각 찾음
  2. 불가능한 start/end 조합을 제거
  3. 가능한 조합들을 score의 합이 큰 순서대로 정렬
  4. Score가 가장 큰 조합을 최종 예측으로 선정
  5. Top-k가 필요한 경우 차례대로 내보냄

 

 

 

 

2. Generation-based MRC

▮ Generation-based 문제 정의

  • 주어진 Context와 Question을 보고 답변을 생성하는 Generation 문제이다.
  • 정답이 Context내에 있을 수도, 없을 수도 있지만 Answer를 생성해내는 것으로 답변을 하겠다는 방식이다.
  • 설사 정답이 지문 내에 존재하더라도 그 정답의 위치를 파악하는 것이 아니라 모델이 해당 정답을 생성할 수 있도록 유도한다.

 

 

▮ Generation-based 평가방법

  • Extractive answer dataset을 사용한다면 Extraction-based MRC와 동일한 평가 방법인 EM이나 F1 Score를 사용한다.
  • 일반적인 생성 문제와 비슷하게 접근한다면 ROGUE-L이나 BLEU Score를 사용하기도 한다.

 

 

Generation-based MRC

 

 

  • Generation-based MRC는 Seq2Seq 모델 구조를 사용한다.
  • Extraction-based MRC와 input과정은 동일하나 Generation-based는 정답의 위치를 예측하는 것이 아니라 정답을 생성한다.

 

▮ Pre-processing

  • Special Token
    • 학습 시에만 사용되며 단어 자체의 의미는 가지지 않는 특별한 토큰
    • Extraction-based MRC에서는 [CLS] [SEP] [PAD] 토큰을 사용한다.
      Generation-based MRC에서는 [PAD] 토큰은 사용하지만 [CLS] [SEP] 토큰은 해당 토큰 대신 자연어를 이용해 정해진 텍스트 format으로 데이터를 생성한다. (물론 [CLS] [SEP] 토큰을 사용할 수는 있다.)

 

 

  • Attention mask
    • Extraction-based MRC와 똑같이 어텐션 연산을 수행할 지 결정하는 어텐션 마스크가 존재한다.

 

  • Token type ids
    • BERT와 달리 BART에서는 입력시퀀스에 대한 구분이 없어 token_type_ids가 존재하지 않는다.
    • 따라서 Extraction-based MRC 와 달리 token_type_ids가 들어가지 않는다.
    • [SEP] 토큰이 있으면 token type id는 직접적으로 제공되지 않아도 어느 정도 모델이 구분이 가능하다.
      초창기에는 직접 구분해주려고 했지만 나중에는 크게 중요하지 않다고 판단되어 token type ids를 input에서 뺀 모델들도 있다.

 

 

  • Output
    • Sequence of token ids
      • Extraction-based MRC에선 텍스트를 생성해내는 대신 시작/끝 토큰의 위치를 출력하는 과제를 수행한다.
      • Generation-based MRC는 그보다 조금 더 어려운 실제 텍스트를 생성하는 과제를 수행한다.
        즉, 전체 시퀀스의 각 위치마다 모델이 아는 모든 단어들 중 하나의 단어를 맞추는 classification 문제

 

 

정답을 출력할때 모델 출력값을 선형 layer에 넣어서 각 sequence_length 내에 각 위치마다 들어가야할 단어를 선택하는 방식

→ 일반적인 decoding 방법론

 

 

▮ Model - BART

  • 기계 독해, 기계 번역, 요약, 대화 등 sequence to sequence 문제의 pre-training을 위한 denoising autoencoder

  • BERT : Masking 된 단어를 알아맞추는 방식
  • GPT : 다음 단어를 알아 맞추는 방식
  • BART : Masking 된 부분을 생성하는 방식
    이런 방식을 일반적으로는 noising을 injection 을 하고 그 다음에 nois 가 없었던 원래 버전을 reconstruct 하는 문제라고 보기 때문에 denoising autoencoder 라는 표현도 많이씀

 

 

▮ BART Encoder & Decoder

 

 

  • Encoder : BERT 처럼 bi-directional
  • Decoder : GPT처럼 uni-directional (autoregressive)

 

 

▮ Pre-training BART

  • BART는 텍스트에 노이즈를 주고 원래 텍스트를 복구하는 문제를 푸는 것으로 pre-training한다.
    → denoising autoencoder

 

▮ Post-processing

▮ Decoding

  • 디코더에 이전 스텝의 출력이 다음 스텝의 입력으로 들어간다. (Autoregressive)
  • 맨 처음 입력은 문장 시작을 의미하는 Special token을 활용해 decoder가 시작할 수 있도록 유도한다.

 

▮ Searching

  • Greedy Search : decision making을 early stage에서 하므로 나중에 가서는 잘못된 선택일 수 있다.
  • Exhaustive Search : 모든 가능성을 다 보는 방법 → 문장이 길어질 수록 시간이 너무 오래걸리는 비효율적인 방법
  • Beam Search : Exhaustive Search를 하긴 하되 각 time step 마다 가장 점수가 높은 top-k 만 유지하는 방식

 

 

 

 

3. Summary

 

 

 

728x90
Contents