[부스트캠프 AI-Tech] 15주차 Day 1

LKM·2022년 5월 6일
0

✏️학습 정리


1. MRC Intro & Python Basics

Introduction to MRC

  • MRC (Machine Reading Comprehension)

    • 기계 독해
    • 주어진 지문을 이해하고, 주어진 질의의 답변을 추론하는 문제
  • MRC 종류

    • Extractive Answer Datasets
      • 질의에 대한 답이 항상 주어진 지문의 segment(or span)으로 존재
    • Descriptive/Narrative Answer Datasets
      • 답이 지문 내에서 추출한 span이 아니라, 질의를 보고 생성된 sentence
    • Multiple-Choice Datasets
      • 질의에 대한 답을 여러 개의 answer candidates 중 하나로 고르는 형태
  • MRC Datasets 역사

  • MRC Challenges

    • 단어들의 구성이 유사하지는 않지만 동일한 의미의 문장을 이해
      • DuoRC, QuoRef
    • 주어진 지문에서 질문에 대한 답을 찾을 수 없는 경우 (Unanswerable Questions)
      • SQuAD 2.0
    • 여러 개의 document에서 질의에 대한 supporting fact를 찾아야지만 답을 찾을 수 있는 경우 (Multi-hop Reasoning)
      • HotpotQA, QAngaroo
  • MRC 평가방법

    • Exact Match / F1 Score (extractive, multiple-choice answer의 경우)
      • EM: 예측과 ground-truth가 일치하는 비율

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

    • ROUGE-L / BLEU (descriptive answer의 경우)
      • ROUGE-L: 예측과 ground-truth 사이의 overlap recall (LCS 기반)
      • BLEU: 예측과 ground-truth 사이의 precision (BLEU-n의 n은 n-gram)

Unicode & Tokenization

  • Unicode
    • 전 세계의 모든 문자를 일관되게 표현하고 다룰 수 있도록 만들어진 문자셋
    • 파이썬
      • ord : 문자를 유니코드 code point로 변환 (A → 65)
      • chr : code point를 문자로 변환 (65 → A)
    • 한국어
      • 완성형 (자모 조합으로 나타낼 수 있는 모든 완성형 한글 11,172자)

      • 조합형 (조합하여 글자를 만들 수 있는 초,중,종성)

  • 인코딩

    • 문자를 컴퓨터에서 저장 및 처리할 수 있게 이진수로 바꾸는 것
    • UTF-8 (Unicode Transformation Format)
  • Tokenizing

    • 텍스트를 토큰 단위로 나누는 것

    • Subword Tokenizing

      • 자주 쓰이는 글자 조합은 한 단위로 취급, 자주 쓰이지 않는 조합은 subword로 쪼갠다.
      • “##”은 해당 토큰이 앞 토큰에 띄어쓰기 없이 붙어있다는 뜻
    • BPE (Byte-Pair Encoding)

      • 데이터 압축용으로 제안된 알고리즘

      • 과정

        1. 가장 자주 나오는 글자 단위 Bigram을 다른 글자로 치환
        2. 치환된 글자 저장
        3. 1~2번 반복

Looking into the Dataset

  • KorQuAD
    • LG CNS가 공개한 질의응답/기계독해 한국어 데이터셋
    • SQuAD v1.0의 데이터 수집 방식 벤치마크 → 표준성 확보
    • HuggingFace에서 사용 가능



2. Extraction-based MRC

  • Extraction-based MRC
    • 질문의 답변이 항상 주어진 지문내에 span으로 존재

    • 평가 방법

      • Exact Match(EM) Score → 캐릭터 단위로 완전히 똑같을 경우에만 1점 부여
      • F1 Score → 예측과 정답의 overlap을 비율로 계산
    • overview

  • Pre-processing

    • Tokenization
      • 여러 단위 토큰 기준이 사용됨
      • BPE를 주로 사용 (OOV 문제 해결)
    • Special Tokens
      • [CLS], [SEP], [UNK], [PAD]
    • Attention Mask
      • attention을 연산할 때 입력 시퀀스 중 무시할 토큰 표시
    • Token Type IDs
      • 입력이 2개이상의 시퀀스일 때(질문, 지문), 각각에 ID를 부여하여 모델이 구분하도록 유도
    • 모델 출력
      • 답안을 생성하기보다, 지문에서 답의 시작위치와 끝위치를 예측하도록 학습
  • Fine-tuning

    • BERT Fine-tuning

  • Post-processing
    • 불가능한 답 제거
      • end position이 start position보다 앞에 있는 경우
      • 예측한 위치가 context를 벗어난 경우
      • 미리 설정한 max_answer_len 보다 길이가 긴 경우
    • 최적의 답안 찾기
      • score가 가장 높은 N개를 각각 찾는다.
      • 불가능한 조합 제거
      • 가능한 조합들을 score의 합이 큰 순서대로 정렬
      • score가 가장 큰 조합을 최종 예측으로 선정



🗣️피어세션


profile
함께 자라기

0개의 댓글