Practice makes perfect!

Week 11 (3) Generation-based MRC 본문

Study/AI Tech

Week 11 (3) Generation-based MRC

na0dev 2021. 10. 13. 15:19

1. Generation-based MRC

1) 문제 정의

  • 주어진 지문과 질의 (question)를 보고, 답변을 생성 ⇒ 생성 문제 (generation)
  • 모든 Extraction-based mrc 문제는 generation-based mrc 문제로 치환할 수 있음
  • 정답이 주어진 지문 내에 있다할지라도, 그 위치를 파악하는 것이 아니라 모델이 해당 정답을 생성할 수 있도록 유도함.

2) Overview

  • 시작,끝점으로 예측했던 것과 달리 모델이 바로 정답까지 생성해줌
  • 일종의 seq-to-seq 모델
  • BERT는 encoder만 있고 decoder가 없기 때문에 generation-based mrc에 활용할 수 없음

3) Generation-based MRC & Extraction-based MRC 비교

  • MRC 모델 구조
    • Seq-to-seq PLM 구조 (generation) vs. PLM + Classifier구조 (extraction)
    • extraction은 decoder가 없는 PLM
  • Loss 계산을 위한 답의 형태 / Prediction의 형태
    • Free-form text 형태 (generation) vs. 지문 내 답의 위치에 대한 확률분포 (extraction)
    • ⇒ Extraction-based MRC: F1 계산을 위해 text로의 별도 변환 과정이 필요
    • generation 방식에선 text를 decoding할 때 teacher forcing과 같은 방법으로 학습하여 정답 도출

 

2. Pre-processing

  • extraction보다 procssing 과정 심플
  • input 단계는 동일하고, extrction은 해당 정답의 위치를 특정해야했는데 generation은 정답 그대로 넘겨주면 됨.

1) 입력 표현 - 토큰화

  • Extraction-based MRC 와 같이 WordPiece Tokenizer를 사용함
    • WordPiece Tokenizer 사전학습 단계에서 먼저 학습에 사용한 전체 데이터 집합(코퍼스)에 대해서 구축되어 있어야 함
    • 구축 과정에서 미리 각 단어 토큰들에 대해 순서대로 번호(인덱스)를 부여해둠
  • Tokenizer 은 입력 텍스트를 토큰화한 뒤, 각 토큰을 미리 만들어둔 단어 사전에 따라 인덱스로 변환함

2) 입력 표현 - Special Token

학습 시에만 사용되며 단어 자체의 의미는 가지지 않는 특별한 토큰
- SOS(Start Of Sentence), EOS(End Of Sentence), CLS, SEP, PAD, UNK.. 등등
⇒ Extraction-based MRC : CLS, SEP, PAD 토큰을 사용
⇒ Generation-based MRC : PAD 토큰은 사용됨. CLS, SEP 토큰 또한 사용할 수 있으나, 자연어를 이용하여 정해진 텍스트 포맷(format)으로 데이터를 생성

 

3) 입력 표현 - additional information

  • Attention mask
    • Extraction-based MRC 와 똑같이 어텐션 연산을 수행할 지 결정하는 어텐션 마스크 존재
    • 무시할 단어들에 대해 표시
  • Token type ids
    • BERT 와 달리 BART 에서는 입력시퀀스에 대한 구분이 없어 token_type_ids 가 존재하지 않음
    • 따라서 Extraction-based MRC 와 달리 입력에 token_type_ids 가 들어가지 않음
    • 스페셜 토큰이 있으면 token_type_id가 제공되지 않아도 모델이 어느정도 구분할 수 있음

4) 출력 표현 - 정답 출력

Sequence of token ids

  • Extraction-based MRC에서는 시작/끝 토큰의 위치를 출력하는 것이 모델의 최종 목표였음
  • Generation-based MRC는 그보다 조금 더 어려운 실제 텍스트를 생성하는 과제를 수행
  • task 자체는 좀 더 어렵지만 formultaion은 simple
  • 전체 시퀀스의 각 위치 마다 모델이 아는 모든 단어들 중 하나의 단어를 맞추는 classification 문제

  • 디코딩
    1. 모델의 출력을 선형 레이어에 넣음
    2. seq length 내 각 위치마다 들어가야 할 단어를 하나씩 선택
    3. 정해진 횟수 또는 전체 길이의 수만큼 반복

3. Model

1) BART

  • 기계 독해, 기계 번역, 요약, 대화 등 sequence to sequence 문제의 pre-training을 위한 denoising autoencoder (노이즈 injection 후 노이즈 없었던 원래 버전을 reconstructor하는 문제)
  • BERT는 인코더만 존재, BART는 실제로 text를 내보내는 방식
  • pre-train할 때도 BERT는 단어 2개를 마스킹한 후 알아맞히는 방식, BART는 기존 문장을 비슷하게 마스킹하지만 이를 알아맞히는 것이 아니고 정답을 생성하는 방식으로 진행됨. GPT는 심플하게 다음 단어를 맞히는 방식으로 진행.

2) Pre-training BART

BART는 텍스트에 노이즈를 주고 원래 텍스트를 복구하는 문제를 푸는 것으로 pre-training함

4. Post-processing

  • BART는 디코딩하는 방식으로 text 생성 -> 이전 스텝에서의 출력을 다음 스텝의 입력으로 사용
  • 맨 처음 입력은 문장의 시작을 뜻하는 스페셜 토큰 활용

Searching

  • Greedy search : 속도 빠름, decision making을 early stage에서 해 최종적으로 안좋은 결과가 나올 수 있음
  • Exhaustive search : 모든 가능성을 다 살펴봄, 문장의 길이와 vocab 사이즈가 조금만 커져도 불가능한 방법 
  • Beam search : 각 time step마다 가장 점수가 높은 top-k만 유지. candidate list 개수는 유지됨.

반응형

'Study > AI Tech' 카테고리의 다른 글

Week 11 (5) Passage Retrieval - Dense Embedding  (0) 2021.10.14
Week 11 (4) Passage Retrieval - Sparse Embedding  (0) 2021.10.14
Week 11 (2) Extraction-based MRC  (0) 2021.10.13
Week 11 (1) MRC Intro  (0) 2021.10.12
Week 10 (1) GPT 언어 모델  (0) 2021.10.05
Comments