(3강) Generation-based MRC

newbie·2021년 10월 12일
0

강의소개

3강에서는 생성기반 기계독해에 대해 배워보겠습니다. 생성기반으로 기계독해를 푼다는 것의 의미를 이해하고, 어떻게 생성기반 기계독해를 풀 수 있을지 알아보겠습니다. 2강에서와 마찬가지로 모델 학습에 필요한 전처리 단계, 생성기반 모델 학습 단계, 그리고 최종적으로 답을 얻어내는 세 단계로 나눠 생성기반 기계독해를 푸는 방법에 대해 배워볼 예정입니다.

Further Reading


Generation-based MRC

Generation-based MRC 문제 정의

  • MRC 문제를 푸는 방법
    • 1) Extraction-based MRC(2강 내용)
      • 지문(context) 내 답의 위치를 예측 : 분류 문제(classification)
    • 2) Generation-based MRC(이번 강의 내용)
      • 주어진 지문과 질의(question)를 보고, 답변을 생성 : 생성 문제(Generation)
      • 모든 extraction-based MRC도 generation-based MRC 문제로 변형이 가능함, 단 반대는 성립하기 힘듦(정답이 문장 내에 없는 경우가 있기 때문)

Generation-based MRC 평가 방법

  • 동일한 extractive answer datasets => Extraction-based MRC와 동일한 평가 방법을 적용 : EM, F1
  • 단, 조금 더 생성문제와 비슷하게 접근하고자 하면, RUDGE나 BLEU를 사용

Generation-based MRC Oveview

  • input은 동일하지만 extraction-based MRC와 동일하게 진행
  • 반면, extraction-based MRC에서는 output에 해당하는 encoder embedding을 score로 바꿔서 start와 end를 예측했다면
  • generation-based MRC에선 Model에서 정답까지 생성해서 출력을 해줌
  • 따라서, 일종의 seq2seq Model로 볼 수 있음. 그렇기에 decoder가 없는 BERT는 사용이 불가함(RoBERTa, Albert도 사용이 불가하겠네요..)

Generation-based vs Extraction-based

  • MRC 모델 구조
    • Seq2Seq PLM 구조(generation) vs PLM + Classifier 구조(extraction)
  • Loss 계산을 위한 답 형태 / Prediction 형태
    • Free-form text 형태(generation) vs 지문 내 답 위치(Extraction)
      • Extraction-based MRC : F1 계산을 위해 text로의 별도 변환 과정이 필요
    • generation : text를 decoding할 때 teacher-forcing과 같은 방식으로 학습을 진행!!

Pre-processing

  • extraction-based보다 심플함 => 정답의 위치는 제외하고 정답만 넘겨주면 됨
  • wordpiece tokenizer를 사용하여 tokenizing
  • input 형태가 다름
    • Extraction-based : [CLS] + question_tokens + [SEP] + context_tokens + [SEP]
    • Generation-based : [SoS] + 'question:' + question_tokens + 'context:' + context_text + [EoS]
      • 단 이 부분은 모델별로 상이하며, Extraction-based와 같이 input을 넣기도 함
      • 즉, 모델별로 input 형태를 보고 사용하도록 하자
  • input : additional information
    • Attention mask 포함
    • Token type ids 미포함
      • bert와 달리 bart는 입력 시퀀스에 대한 구분이 없어서 token_type_ids가 불필요
      • 따라서 Extraction-based MRC와 달리 input_type_ids가 들어가지 않음
      • 초창기에는 직접적으로 구분을 해줬지만, 이후에는 불필요하다고 판단하였으며, [SEP]를 통해 어느 정도 seq를 구분할 수 있기에 제외된 모델들이 있음
  • output - 정답 출력
    • 출력이 정답 시퀀스에 대한 span 범위가 아니라 text이기에 training은 조금 어렵지만 formulation은 상당히 심플해짐

Model

  • BERT와 상당히 다른 architecture
    • BERT : encoder만 존재하여, 각 단어의 embedding vector가 Encoder를 통과되고 나온 결과를 가지고 answer의 시작과 끝을 출력
    • BART : encoder-decoder 구조로, 텍스트를 내보내고, 학습은 BERT와 같이 masking도 하지만 정답을 생성하는 방식!!
    • GPT(LM) : 다음 단어를 맞추는 방식으로 학습 진행
      - 이런 방식을 일반적으로 noise를 injection하고 원래 sequence를 복원하는 방식으로 학습하기에 de-noising auto-encoder라고도 함.
  • BART의 Encoder와 Decoder
    • Encoder : BERT처럼 bi-directional
    • Decoder : GPT처럼 uni-directional(autogressive)
  • Pre-training BART
    • 텍스트에 노이즈를 주고 원래 텍스트를 복원하는 문제를 푸는 방식으로 pretraining을 하므로 생성쪽으로 용이하게 학습!!

Post-processing

  • decoding 방식으로 text르 생성하기에 이전에 step의 출력을 다음 step에 input으로 사용
  • decoding의 시작은 token이 들어가고, decoding 방법론은 여러가지가 있음
  • searching
    • greedy Search : likehood가 가장 높은 단어를 예측
      • 효율적이고 빠르지만, 개별 step에 대한 확률만 보기에, 각 step에서는 확률이 높더라도 전체적으로 봤을 때 낮을 수가 있음
    • Exhaustive Search : 모든 가능성을 확인, 이 경우 timestep이 진행될 때 경우의 수가 exponential하게 증가하므로 불가
    • Beam Search : 각 timestep에 가장 점수가 높은 k개만 유지하는 방식으로 진행

실습

profile
DL, NLP Engineer to be....

0개의 댓글