새소식

부스트캠프 AI Tech 4기

[ODQA] 1. MRC Intro & Python Basics

  • -
1. Introduction to Machine Reading Comprehension
2. Unicode & Tokenization
3. Looking into the Dataset

 

1. Introduction to Machine Reading Comprehension

MRC의 개념

  • 기계 독해
  • 주어진 지문(Context)를 이해하고, 주어진 질의(Query/Question)의 답변을 추론하는 문제
  • 주어진 지문에서 질문에 대한 답변을 하는 방식이지만 이걸 응용하게되면 지문이 주어져있지 않은 상태에서 질문이 들어와도 질문과 관련이있는 지문을 웹상에서 찾아가지고 답변을 줄 수 있는 형태, 즉 Question Answering system 을 만들 수 있다.

 

 MRC의 종류

1. Extractive Answer Datasets

- Question에 대한 답이 항상 주어진 Context의 segment(or span)으로 존재해야 한다.

중간의 어떤 단어를 빼고 그걸 맞추는 방식(cross test)이며 엄밀하게는 Question & Answering 은 아니다.
  (QA 같은 경우는 아주 비슷하지만 질문이 더 이상은 빠진 단어를 맞추는 것이 아니라 실제로 지문형태로 들어온다.)

- 질문에 대한 답변이 context(지문) 안에 존재한다는 가정으로 문제를 진행한다.

 

 

2. Descriptive/Narrative Answer Datasets

- 답이 지문 내에서 추출한 span 이 아니라, 질의를 보고 생성된 sentence (or free-form) 의 형태이다.

- 지문내에는 없는 답변을 생성해내는 task로 진행됨

 

 

3. Multiple-choice Datasets

- 질의에 대한 답을 여러 개의 answer candidates 중 하나로 고르는 형태이다.

 

 

Challenges in MRC

1. Paraphrasing

  • 단어들의 구성이 유사하지는 않지만 동일한 의미의 문장을 이해해야 한다.
    (같은 의미의 문장이지만 다른 단어로 이루어진 문장)
  • P1은 질문과 유사한 단어가 많으므로 답을 유추하기 쉽지만 P2는 질문과 유사한 단어가 나오지 않아서 답을 유추하기 어렵다.

 

2. Coreference Resolution

  • 대명사가 무엇을 지칭하는지 이해해야 한다.

 

3. Unanswerable questions

  • 지문내에 답변이 존재하지 않는 경우
  • "모르겠다"라고 답해야 맞는것인데 여러 문법적인 구조상 답변을 내고마는 오류가 발생한다.

 

4. Multi-hop reasoning

  • 질문에 대한 답을 하기 위해서 여러개의 문서를 조합해야 하는 경우
  • 여러 개의 document에서 질의에 대한 supporting fact를 찾아야지만 답을 찾을 수 있다.

 

 

▮ MRC의 평가 방법

1. Exact Match / F1 Score

  • Extractive answer, multiple-chloice answer datasets에 많이 사용된다.
  • free-form answer dataset에는 사용하기 어렵다.
    • 완전히 일치하는 답을 찾기 어렵기 때문에 대부분의 점수가 0점이 될 수 있다.
    • F1 Score를 사용할 수 도 있겠지만 F1 score는 overlap으로만 평가하다보니 답변 자체의 언어적인 부분을 평가하기가 어렵다 → ROGUE-L / BLUE를 사용

Exact Match (EM) or Accuracy

  • 예측한 답과 Ground-truth가 정확히 일치하는 샘플의 비율
  • Number of correct samples / Number of whole samples

F1 Score

  • 예측한 답과 ground-truth 사이의 token overlap을 F1으로 계산

EM score는 정확히 같지 않기 때문에 0점이지만
F1 Score 같은 경우에는 겹치는 음절에 대해 partial score를 부여해 0.8점이다.

 

 

2. ROUGE-L / BLEU

  • descriptive answer datasets
    • descriptive answer 의 경우는 완벽하게 일치하는 답변을 찾기 쉽지 않기 때문에 EM score의 경우 대부분 0점일 수 있다.
      F1 Score 같은 경우 단어의 overlap으로만 보다보니 답변 자체의 언어적인 부분에서 변화를 보기 힘든 부분이 있어서 실제로는 BLEU 나 ROUGE-L 을 많이 사용한다.

ROUGE-L Score

  • Ground-truth와 예측한 답 사이의 overlap recall
  • ROUGE-L 같은 경우 overlap을 보긴 하지만 각 단어 뿐만 아니라 정의에 따라 여러개의 단어가 겹치는지 안겹치는지를 Logest common subsequence라는 개념으로 찾게 찾는다.
  • L → Longest Common Subseuquence → prediction과 정답의 겹치는 subsequence 길이가 얼마인지

BLEU Score (Bilingual Evaluation Understudy)

  • 예측한 답과 ground-truth 사이의 precision
  • BLEU-n : unitforn n-gram weight : n gram 끼리 겹치는 비율 계산



 

2. Unicode & Tokenization

Unicode

  • 전 세계 모든 문자를 일관되게 표현하고 다룰 수 있도록 만들어진 문자셋
  • 각 문자마다 숫자 하나에 매핑된다.

 

▮ 인코딩 & UTF-8

  • 인코딩 : 문자를 컴퓨터에서 저장 및 처리할 수 있게 이진수로 바꾸는 것
  • UTF-8 (Unicode Transformation Format)
    • UTF-8 는 현재 가장 많이 쓰이는 인코딩 방식
    • 문자 타입에 따라 다른 길이의 바이트를 할당함
      • 1 byte: Standard ASCII
      • 2 bytes: Arabic, Hebrew, most European scripts
      • 3 bytes: BMP(Basic Multilingual Plane) - 대부분의 현대 글자 (한글 포함)
      • 4 bytes: All Unicode characters - 이모지 등

영어를 쓰게되면 영어는 ASCII 내에서 보통 해결이 된다.
ASCII의 경우 character의 개수가 256개로 제한하고 있기 때문에 byte 1개 즉, $ 2^{8} $ 개만 필요하다.
그래서 문자를 1byte로 모두 나타낼 수 있습니다

그러나 영어가 아닌 다른 언어들을 쓰기 시작하면 더 많은 byte가 필요하게 된다.
그래서 그때그때 필요할 때마다 byte를 추가 할당하는 방식으로 효율적인 문자 인코딩을 사용한다.

 

▮ Python에서 Unicode 다루기

  • ord → 문자를 유니코드 code point로 변환
  • chr → Code point를 문자로 변환

▮ Unicode와 한국어

  • 한국어는 한자 다음으로 유니코드에서 많은 코드를 차지하고 있다.
  • 완성형
    • 현대 한국어의 자모 조합으로 나타낼 수 있는 모든 완성형 한글 11,172자(가, 각, …, 힢, 힣)
    • (U + AC00 ~ U + D7A3)
  • 조합형
    • 조합하여 글자를 만들 수 있는 초    종성
    • (U + 1100 ~ U + 11FF, U + A960 ~ U + A97F, U + D7B0 ~ U + D7FF)

 

▮ Tokenizing

  • 텍스트를 토큰 단위로 나누는 것
  • 단어(띄어쓰기 기준), 형태소, subword 등 여러 토큰 기준이 사용된다.

 

Subword 토크나이징

  • 자주 쓰이는 글자 조합은 한 단위로 취급하고, 자주 쓰이지 않는 조합은 subword로 쪼갠다.
    “##” 은 디코딩을 할 때 해당 토큰을 앞 토큰에 띄어쓰기 없이 붙인다는 것을 뜻한다.
  • 토크나이저 방법론은 모델의 일부라고 보는게 좋다.

BPE (Byte-Pair Encoding)

  • 데이터 압축용으로 제안된 알고리즘
  • NLP 에서 토크나이징용으로 활발하게 사용되고 있음
  1. 가장 자주 나오는 글자 단위 Bigram (or Byte pair)를 다른 글자로 치환
  2. 치환된 글자를 저장
  3. 1~2번 과정 반복

 

 

3. Looking into the Dataset

▮ KorQuAD

LG CNS 가 AI 언어지능 연구를 위해 공개한 질의응답/기계독해 한국어 데이터셋

  • 인공지능이 한국어 질문에 대한 답변을 하도록 필요한 학습 데이터셋
  • 1,550개의 위키피디아 문서에 대해서 10,649건의 하위 문서들과 크라우드 소싱을 통해 제작한 63,952개의 질의응답 쌍으로 구성되어 있음 (TRAIN 60,407 / DEV 5,774 / TEST 3,898)
  • 누구나 데이터를 내려받고, 학습한 모델을 제출하고 공개된 리더보드에 평가를 받을 수 있음 → 객관적인 기준을 가진 연구 결과 공유가 가능하다.
  • 현재 v1.0, v2.0 공개: 2.0은 보다 긴 분량의 문서가 포함되어 있으며, 단순 자연어 문장 뿐 아니라 복잡한 표와 리스트 등을 포함하는 HTML 형태로 표현되어 있어 문서 전체 구조에 대한 이해가 필요하다.

 

 

728x90
Contents