Exact Match (EM) Score : 예측값과 정답이 character 단위로 완전히 똑같을 경우에만 1점, 하나라도 다른 경우 0점
F1 Score : 예측값과 정답의 overalp을 비율로 계산, 0점~1점
▮Extraction-based MRC
Pre-processing Context와 Question이 Tokenization을 통해 토큰화 되어 입력으로 들어간다.
Fine-tuning Word Embedding을 통해 각 토큰들을 벡터화 시키고 이 벡터들이 Extraction-based MRC Model의 Input으로 사용되고 Output은 각 token이 정답의 start/end일 확률이 된다.
Post-processing Post processing을 거쳐서 정답을 내보낸다.
▮ Pre-processing
Special Token
[CLS]토큰으로 시작하며 [SEP]을 이용해 Question과 Context를 구분한다.
Attention Mask
입력 Sequence 중 attention 연산을 할 때 무시할 토큰을 표시
0 : 계산 1 : 계산 X
[PAD]와 같은 의미 없는 Special token을 무시하기 위해 사용한다.
Token Type IDS
입력이 2개 이상의 sequence일 때, 각각에게 id를 부여하여 모델이 구분해 해석하도록 유도
해당 Task에서는 질문은 0, context는 1
Output
Extraction-based에서는 답안을 생성하기보다 정답 span의시작 위치와 끝 위치를 예측하도록 학습한다.
Token Classification 문제로 치환
+ '미국'ㅇ; '미' '##국'으로 쪼개진 경우 원래 text를 최소한으로 포함하는 단어들을 전부 정답에 포함하여 학습한다.
▮Fine-tuning
정답에 해당되는 각 임베딩을 linear transformation을 통해 각 단어마다 하나의 숫자(점수)를 출력한다.
context의 각 토큰마다 하나의 숫자가 output으로 나오게 되고 그 점수가 높을 수록 정답으로 볼 수 있다.
정답은 문서 내 존재하는 연속된 단어 토큰(span)이므로 span의 시작과 끝 위치를 알면 정답을 맞출 수 있으므로 이렇게 출력된 점수를 기준으로 시작과 끝 위치를 구한다.
▮ Post-processing
불가능한 답 제거하기
다음과 같은 경우 candidate list 에서 제거
End position이 start position보다 앞에 있는 경우 (e.g. start = 90, end = 80)
예측한 위치가 contexet를 벗어난 경우 (e.g. question 위치쪽에 답이 나온 경우)
미리 설정한 max_answer_length보다 길이가 더 긴 경우
최적의 답안 찾기
Start/end position prediction에서 score(logits)가 가장 높은 N개를 각각 찾음
불가능한 start/end 조합을 제거
가능한 조합들을 score의 합이 큰 순서대로 정렬
Score가 가장 큰 조합을 최종 예측으로 선정
Top-k가 필요한 경우 차례대로 내보냄
2. Generation-based MRC
▮ Generation-based 문제 정의
주어진 Context와 Question을 보고 답변을 생성하는 Generation 문제이다.
정답이 Context내에 있을 수도, 없을 수도 있지만 Answer를 생성해내는 것으로 답변을 하겠다는 방식이다.
설사 정답이 지문 내에 존재하더라도 그 정답의 위치를 파악하는 것이 아니라 모델이 해당 정답을 생성할 수 있도록 유도한다.
▮ Generation-based 평가방법
Extractive answer dataset을 사용한다면 Extraction-based MRC와 동일한 평가 방법인 EM이나 F1 Score를 사용한다.
일반적인 생성 문제와 비슷하게 접근한다면 ROGUE-L이나 BLEU Score를 사용하기도 한다.
▮ Generation-based MRC
Generation-based MRC는 Seq2Seq 모델 구조를 사용한다.
Extraction-based MRC와 input과정은 동일하나 Generation-based는 정답의 위치를 예측하는 것이 아니라 정답을 생성한다.
▮ Pre-processing
Special Token
학습 시에만 사용되며 단어 자체의 의미는 가지지 않는 특별한 토큰
Extraction-based MRC에서는 [CLS] [SEP] [PAD] 토큰을 사용한다. Generation-based MRC에서는 [PAD] 토큰은 사용하지만 [CLS] [SEP] 토큰은 해당 토큰 대신 자연어를 이용해 정해진 텍스트 format으로 데이터를 생성한다. (물론 [CLS] [SEP] 토큰을 사용할 수는 있다.)
Attention mask
Extraction-based MRC와 똑같이 어텐션 연산을 수행할 지 결정하는 어텐션 마스크가 존재한다.
Token type ids
BERT와 달리 BART에서는 입력시퀀스에 대한 구분이 없어 token_type_ids가 존재하지 않는다.
따라서 Extraction-based MRC 와 달리 token_type_ids가 들어가지 않는다.
[SEP] 토큰이 있으면 token type id는 직접적으로 제공되지 않아도 어느 정도 모델이 구분이 가능하다. 초창기에는 직접 구분해주려고 했지만 나중에는 크게 중요하지 않다고 판단되어 token type ids를 input에서 뺀 모델들도 있다.
Output
Sequence of token ids
Extraction-based MRC에선 텍스트를 생성해내는 대신 시작/끝 토큰의 위치를 출력하는 과제를 수행한다.
Generation-based MRC는 그보다 조금 더 어려운 실제 텍스트를 생성하는 과제를 수행한다. 즉, 전체 시퀀스의 각 위치마다 모델이 아는 모든 단어들 중 하나의 단어를 맞추는 classification 문제
정답을 출력할때 모델 출력값을 선형 layer에 넣어서 각 sequence_length 내에 각 위치마다 들어가야할 단어를 선택하는 방식
→ 일반적인 decoding 방법론
▮ Model - BART
기계 독해, 기계 번역, 요약, 대화 등 sequence to sequence 문제의 pre-training을 위한 denoising autoencoder
BERT : Masking 된 단어를 알아맞추는 방식
GPT : 다음 단어를 알아 맞추는 방식
BART : Masking 된 부분을 생성하는 방식 → 이런 방식을 일반적으로는 noising을 injection 을 하고 그 다음에 nois 가 없었던 원래 버전을 reconstruct 하는 문제라고 보기 때문에 denoising autoencoder 라는 표현도 많이씀
▮ BART Encoder & Decoder
Encoder : BERT 처럼 bi-directional
Decoder : GPT처럼 uni-directional (autoregressive)
▮ Pre-training BART
BART는 텍스트에 노이즈를 주고 원래 텍스트를 복구하는 문제를 푸는 것으로 pre-training한다. → denoising autoencoder
▮ Post-processing
▮ Decoding
디코더에 이전 스텝의 출력이 다음 스텝의 입력으로 들어간다. (Autoregressive)
맨 처음 입력은 문장 시작을 의미하는 Special token을 활용해 decoder가 시작할 수 있도록 유도한다.
▮ Searching
Greedy Search : decision making을 early stage에서 하므로 나중에 가서는 잘못된 선택일 수 있다.
Exhaustive Search : 모든 가능성을 다 보는 방법 → 문장이 길어질 수록 시간이 너무 오래걸리는 비효율적인 방법
Beam Search : Exhaustive Search를 하긴 하되 각 time step 마다 가장 점수가 높은 top-k 만 유지하는 방식