AI TECH

MRC

prefer_all 2022. 12. 20. 17:23
<목차>
1. MRC란 
- Extraction-based

- Generation-based 
    - BART

2. MRC 평가 지표
3. KorQuAD

 

MRC(Machine Reading Comprehension, 기계 독해)

'지문(Context)이 주어질 때 주어진 질의(Query/Question)의 답변을 추론하는 문제'이다.

 

 

<MRC Dataset 종류>

- Extractive Answer Datasets
 : 지문에서 답변을 추출한다 (답변이 항상 context의 segment(span)에 존재)   
   분류 문제(classification)로 취급한다


📣  Step1 pre-process
Pre-process 단계에서 Attention mask는 다음과 같다. 

입력 시퀀스 중 Attention 연산을 할 때 무시할 토큰을 0으로 표시한다. 즉, 1은 연산에 포함된다. 
보통은 [PAD]와 같은 의미 없는 특수기호 토큰을 무시하기 위해 사용한다.


입력이 2개 이상의 sequence일 때 (ex. 질문과 지문),
각각 ID를 부여해 모델이 구분되어 해석하도록 유도한다.


정답은 문서 내 존재하는 연속된 단어토큰(span)이므로, 
모델 출력값으로는 답안을 생성하기보다는 span의 시작과 끝 위치를 예측하도록 학습한다. 
(= Token classification 문제로 치환해서 생각한다)


📣 Step2 Fine-tuning
Fine-tuning BERT를 살펴보자


📣 Step3 Post-processing
(1) 불가능한 답을 제거하고, (2) 최적의 답안을 찾는다.

(1) 아래의 경우를 제거할 수 있다. 
- End가 Start보다 앞에 있는 경우
- 예측한 위치가 context를 벗어난 경우 (ex. question 위치에 답이 나온 경우)
- 미리 설정한 max_answer_length보다 긴 경우

(2) 최적의 답안을 찾는 과정은 다음과 같다.
- start/end position prediction에서 score(logits)가 가장 높은 N개를 각각 찾는다.
- 불가능한 조합들을 제거하고, 가능한 조합의 score 합을 큰 순서대로 정렬한다.
- Top-k가 필요한 경우, 차례대로 내보낸다.

 

- Descriptive/Narrative Answer Datasets
 : 문제를 보고 답변을 생성
   생성문제(generation) 문제로 취급한다.


📣 Extraction-based와의 차이점
1. 모델 구조
Extraction-based는 PLM + Classifier 구조인 반면, Generation-based는 Seq-to-seq PLM 구조이다.

2. Loss 계산을 위한 답 형태 / Prediction 형태 
Extraction-based는 지문 내 답의 위치를 반환하고, Generation-based는 Free-form text 형태로 반환한다.


3. Preprocessing 과정에서 Special Token

Extraction-based는 CLS, SEP, PAD 토큰을 사용하고, Generation-based는 이 외에도 자연어를 이용하여 정채진 텍스트 포맷(format)으로 데이터를 생성하기도 한다.

4. Preprocessing 과정에서 입력 표현 (additional information)

Attention mask는 동일하다.
하지만 Token type ids에서, BART는 BERT와 달리 입력 시퀀스에 대한 구분이 없어서 token_type_ids가 존재하지 않는다. 따라서 Generation-based에는 token_type_ids가 들어가지 않는다.

 

- Multiple-choice Datasets : 객관식

 

 

<MRC의 문제점>

- Paraphrasing : 같은 의미의 문장에 대한 이해가 필요하다

- Conference Resolution : 대명사가 어떤 대상을 지칭하는 가를 알아야 한다

- Unanswerable Question: 답변을 찾을 수 없는 경우, 억지 답변이 아닌 “No answer”이라는 선택지가 있어야 한다

- Multi-hop Reasoning: 답변을 찾기 위해 여러 개의 문서에서 supporting fact를 찾아야 하는 경우(ex: HotpotQA, QAngaroo)가 존재한다.


BART

기계독해, 기계 번역, 요약, 대화 등 sequence to sequence 문제의 pre-training을 위한 denoising autoencoder이다.

BART의 인코더는 BERT처럼 bi-directional하고, 디코더는 GPT처럼 uni-directional(autoregressive)하다.

 

1. 모델의 출력을 선형 레이어에 넣음 (batch_size, seq_length, hidden_dim) → (batch_size, seq_length, vocab_size)

2. seq_length 내 각 위치마다 들어가 야할 단어를 하나씩 선택

3. 정해진 횟수 또는 전체 길이의 수 만큼 반복

 

 

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


MRC 평가 지표

For extractive answer and multiple-choice answer dataset

1. Exact Match (Accracy)                        

예측한 답과 ground-truth이 정확히 일치하는 샘플의 비율 

(Number of correct samples) / (Number of whole samples)

 

2. F1 score

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

 

For descriptive answer dataset

descriptive answer 의 경우는 완벽하게 일치하는 답변을 찾기 쉽지 않기 때문에 EM score의 경우 대부분 0점일 수 있다. 그리고 F1 score은 ovelap을 고려하기에 언어적인 부분의 변화를 고려하기 어렵다.

 

1. ROUGE

ROUGE는 Prediction과 Ground-truth 사이의 overlap recall을 확인하는 방법이다.

ROUGE-L, ROUGE-1, ROUGE-2가 있는데, 각각의 정의에 따라 token n-gram이 얼마나 겹치는 가에 대해서 평가한다.

ROUGE-L의 경우에는 LCS(Longest Common Subsequence) 기반으로, 겹치는 n-gram중 가장 긴 것에 대해서 평가를 진행한다. Sequence는 이어지지 않아도 된다.

 

정답문장 "한화는 10 년 안에 우승 할 것이다."
생성문장:"한화는 10 년 안에 절대 우승 못 할 것이다. "


정답문장의 길이=7 (한화는/10/년/안에/우승/할/것이다)

longest_sequence=한화는 10 년 안에 우승할 것이다

longest_sequence의 길이=7

ROUGE−L=7/7 = 1

생성된 문장의 예시와 정답문장이 완전히 일치하지는 않지만, 떨어져 있는 Sequence 형태로 정답문장과 일치하기 때문에 1의 ROUGE-L score를 얻을 수 있다.

 

ROUGE-W는 ROUGE-L의 방법에 더하여 연속적인 매칭(consecutive matches)에 가중치를 주는 방법이다.

 

X : A B C D E F
Y1 : A B C D H I K
Y2 : A H B K C I D


ROUGE-L의 관점에서는 Y1과 Y2의 결과가 같지만,

ROUGE-W의 관점에서는 consecutive matches로 이루어진 예시인 Y1이 더 우수한 결과이다.

 

2. BLEU(Bilingual Evaluation Understudy)

예측한 답과 Prediction과 Ground-truth 사이의 precision을 확인하는 방법이다.

BLEU-n은 n gram 끼리 겹치는 비율 계산한다.

 

Recall VS Precision

recall(재현율)
Reference(정답) 문장의 개수를 기준으로 ground-truch 문장과 겹치는 단어의 비율

precision(정밀도)

생성한 단어의 개수를 기준으로 생성한 단어 중에 ground-truth 문장과 실제로 겹치는 단어의 비율
word 별로 위치에 상관없음


MRC 데이터 셋

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 형태로 표현되어 있어 문서 전체 구조에 대한 이해가 필요하다.

HuggingFace datasets 라이브러리로 다운이 가능하다

from datasets import load_dataset
dataset = load_dataset('squad_kor_v1', split = 'train')

실제 데이터 출력 예시

 

 

'AI TECH' 카테고리의 다른 글

Product Serving  (1) 2023.01.12
Passage Retrieval  (0) 2022.12.20
언어모델 실습  (1) 2022.11.24
Docker  (0) 2022.11.11
Linux, Shell  (0) 2022.11.10