PStage MRC 3강 - Generation-based MRC

Generation-based MRC

Generation-based MRC 문제 정의

Extraction-based mrc와 다르게 주어진 질문의 답이 지문 내에 존재하지 않을 수도 있기 때문에 기본적으로 답변을 ‘생성’하는 문제로 분류한다.

input은 Extraction-based mrc와 동일하지만, generation-based mrc에서는 fine-tuning 시 정답 text까지 생성하는 seq2seq 모델로 분류할 수 있다.

Generation-based MRC vs. Extraction-base MRC

  1. MRC 모델 구조
    • Seq-to-Seq PLM 구조 (Generation) vs. PLM + Classifier 구조 (Extraction)
  2. Loss 계산을 위한 답의 형태 / Prediction의 형태
    • Free-form text 형태 (Generation) vs. 지문 내 답의 위치 (Extraction)
    • Extraction-based MRC는 f1 계산을 위해 text로의 별도의 전환 과정이 필요하다.

Pre-processing

Tokenize

Extraction과 같이 토큰화를 진행한 뒤 input_ids(또는 input_token_ids)를 생성한다.

Generation 모델에서는 PAD 토큰은 사용되지만, CLS와 SEP 토큰의 경우 사용할 수는 있지만 보통 자연어를 이용한 텍스트 포맷으로 대신하는 경우가 많다. ex) CLS -> Question, SEP -> Context

입력표현

Extraction 모델과 달리 어텐션 마스크만 사용한다. 대부분 decoder가 사용된 모델에서는 입력시퀀스를 구분하지 않기 때문이다.

출력표현

토큰의 시작과 끝 위치를 맞추는 것이 아닌 정답 텍스트를 표현하기만 하면 된다.

모델의 출력을 선형 레이어에 넣고, sequence_length 내 각 위치마다 들어가야할 단어를 하나씩 선택하면서 전체 길이만큼 반복하며 시퀀스를 생성한다.

Model

BART

  • seq2seq 문제의 pretraining을 위한 denoising autoencoder를 사용한다.
  • 인코더는 BERT와 같은 bi-directional 구조이며, 디코더는 GPT와 같은 uni-directional(autoregressive)이다.
  • 텍스트에 노이즈를 주고 원래 텍스트를 복구하는 문제를 푸는 것으로 pretraining을 진행한다.

Post-processing

Decoding

보통 스페셜 토큰을 사용하여 문장의 시작점부터 search를 진행한다.

  • Greedy Search
    • 빠르지만 처음에 선택한 답이 잘못된 선택일 수 있다.
  • Exhaustive Search
    • 모든 가능성을 고려하기 때문에 vocab이나 문장 길이가 조금만 길어도 불가능에 가까워진다.
  • Beam Search
    • Exhaustive Search를 하되 각 타임스텝마다 가장 가능성이 높은 Top-k만 유지한다.
Author

Yohan Lee

Posted on

2021-10-13

Updated on

2021-10-13

Licensed under

댓글