Practice makes perfect!

Week 11 (2) Extraction-based MRC 본문

Study/AI Tech

Week 11 (2) Extraction-based MRC

na0dev 2021. 10. 13. 12:17

1. Extraction-based MRC

1) 문제 정의

  • 질문(question)의 답변(answer)이 항상 주어진 지문(context)내에 span으로 존재
  • text를 생성하는 것이 아닌 위치만 파악하는 것으로 문제 formulate할 수 있음.
  • ex) SQuAD, KorQuAD, NewsQA, Natural Questions, etc.

2) 모델 overview

  • context와 question이 토크나이저를 활용해 쪼개짐. 
  • 이것들을 word embedding을 이용해 벡터화시킴.
  • 벡터들이 모델 안에 들어감
  • 모델은 시작점과 끝점을 내보냄 (context와 question의 각 단어에 해당하는 contextualize vector를 스칼라 값으로 내보낸 것)
  • 시작과 끝 사이의 span을 가져와 답으로 내보냄

2. Pre-processing

1) Tokenization

  • 텍스트를 작은 단위(Token)로 나누는 것
  • 띄어쓰기 기준, 형태소, subword 등 여러 단위 토큰 기준이 사용됨
  • 최근에는 Out-Of-Vocabulary (OOV) 문제를 해결해주고 정보학적으로 이점을 가진 Byte Pair Encoding
    (BPE)을 주로 사용함
  • BPE 방법론 중 하나인 WordPiece Tokenizer : 자주 나오는 단어는 하나로, 자주 나오지 않는 단어는 따로 나눠줌
    • “미국 군대 내 두번째로 높은 직위는 무엇인가?”
      [‘미국’, ‘군대’, ‘내’, ‘두번째’, ‘##로’, 높은, ‘직’, ‘##위는’, ’무엇인가’, ‘?’]

2) Special Tokens

  • special token을 이용해 question과 context를 구분하도록 함
  • 편의상 사용하는 토큰
  • 토크나이즈 이후에도 계속 존재

3) Attention Mask

  • 입력 시퀀스 중에서 attention을 연산할 때 무시할 토큰을 표시
  • 0은 무시, 1은 연산에 포함
  • 보통 [PAD]와 같은 의미가 없는 특수 토큰을 무시하기 위해 사용
  • 모델에 입력값을 줄 때 attention mask 값도 같이 줌

4) Token Type IDs

  • 입력이 2개 이상의 시퀸스일 때 (예: 질문 & 지문), 각각에게 ID를 부여해 모델이 구분해서 해석하도록 유
  • [SEP] 토큰을 이용해 질문과 지문을 나눠주거나 token type ids를 이용해 각 단어에 직접적으로 flag를 줄 수 있음

5) 모델 출력값

  • 정답은 문서 내 존재하는 연속된 단어토큰 (span)이므로, span의 시작과 끝 위치를 알면 정답을 맞출 수
    있음
  • Extraction-based에선 답안을 생성하기 보다, 시작 위치와 끝위치를 예측하도록 학습함. 즉 Token
    Classification문제로 치환.

3. Fine-tuning

지문 내에서 정답에 해당하는 각 임베딩을 linear transformation을 통해 각 단어마다 하나의 숫자가 나올 수 있도록 바꿔주고, 각 지문 토큰마다 하나의 숫자 아웃풋이 나오게 되고 이 숫자를 점수로 볼 수 있음. 시작, 끝 점을 이런 방식으로 구하고 최종 답변을 구함.

4. Post-processing

1) 불가능한 답 제거하기

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

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

2) 최적의 답안 찾기

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