MRC 2강 - KR-HappyFace/meetup-logs GitHub Wiki
- 본인이 생각하는 핵심부문을 요약하기
- 의문점, 궁금했던 점도 적기
- 쓸만한 실습코드 있으면 여기다가 붙여넣기
영진
Improved Baseline은 Embedding Layer을 resize하지 않아도 되는 간편함이 있다.
~~~~
재영
-Extraction-basedMRC는 지문속에 정답이 있는 qa문제
- 텍스트를 토크나이징해서 주어진 문장을 전처리함
- Extraction-basedMRC는 분류문제!, 마지막 fc 레이어가 start,end의 두개의 차원으로 바꿔서 파인튜닝
- 가능한 조합에 대해서 가장 높은 start의 확률을 가진 토큰부터 높은 end확률을 가지는 토큰까지를 정답으로 출력한다. -> 시작위치와 끝위치를 예측하도록 하는 분류문제
- 평가방법 em과 f1스코어를 이용해서 평가.
준홍
- Extraction-based MRC -> 평가방법 두가지 1. EM 2. F1 Score
- 정답이 sentence 안에 있으므로 idx 값으로 답이 return된다.
- Tokenization 은 BPE 방식을 많이 쓴다.
# QA에 사용되는 context는 문장이 길 수도 있기 때문에 stride 만큼 겹치게 넣어서 쪼개준다.
# 쪼개진 곳에서 정답 idx 후보를 고른뒤에 확률이 제일 높은것을 고름.
tokenized_examples = tokenizer(
examples["question"],
examples["context"],
truncation="only_second", # max_seq_length까지 truncate한다. pair의 두번째 파트(context)만 잘라냄.
max_length=max_seq_length,
stride=doc_stride, # QA
return_overflowing_tokens=True, # 길이를 넘어가는 토큰들을 반환할 것인지
return_offsets_mapping=True, # 각 토큰에 대해 (char_start, char_end) 정보를 반환한 것인지
padding="max_length",
)
연주
실습코드 prepare_train_features()
truncation="only_second"
,max_length
,stride
- context의 길이는 max_seq_length만큼 자르고, 서로 doc_stride만큼 겹치게 slice (len(offset_mapping) = 384)
offset mapping
: sub token의 (start, end)overflow_to_sample_mapping
: 몇 번째 example인지token_start_index
,token_end_index
: answer가 현재 span(max seq length만큼 잘린 context) 을 벗어나면 0 (cls index) span 내부에 있다면 각각 answer의 시작점과 끝점으로 옮김
현수
- Extraction Based MRC
- 질문의 답변이 항상 지문 내 Span으로 존재
- 전체적인 pipeline: pre-processing -> Model Input/Ouput & Fine-tuning -> Post-processing
- 문서 내 존재하는 단어 토큰들 중 질문에 대한 답에 해당하는 부분의 시작과 끝 위치를 알면 정답 맞출 수 있음
- Extraction의 Ground truth 역시 지문 내에 존재하며 EM로 평가하기 때문에 NLG 학습보단 시작 끝 위치를 예측하도록 Classification 문제로 치환
- Post-processing:
- 불가능한 답 제거
- 최적의 답 찾기
세현
성욱
Extraction-based MRC | Generation-based MRC | |
---|---|---|
접근 | 지문 내에 존재하는 정답의 Start point/End point를 파악 | 질문에 대한 정답 생성 |
평가 방법 | EM(Exact Match), F1 score | ROUGE-L, BLEU (Extraction-based MRC와 같은 평가 방법을 사용할 수 있지만 일반적인 생성 문제에 비슷하게 접근하기 위해 ROUGE-L, BLEU를 사용하기도 한다.) |
정답 생성 | 모델 output을 Score로 바꾸고 이를 Start/End point로 변환하는 작업 추가 | 모델에서 바로 정답 추출 |
모델 구조 | Encoder + Classifier | Seq2seq(Encoder-Decoder) |
Prediction | 지문 내 답이 위치 | Free-form text |
Loss | 위치에 대한 확률 분포를 Negative Log Likelihood로 계산하여 접근 | 실제 text를 decoding할 때, teacher forcing과 같은 방식으로 학습 |
Special Token | [CLS], [SEP], [PAD] 등 | 정해진 텍스트 포맷으로 생성하여 사용한다, (e.g. question, context) |
token_type_ids | BERT를 주로 사용하며, token_type_ids 존재 | BART를 주로 사용하며, token_type_ids가 존재하지 않는다. |
post-preprocessing | score 순으로 top-k -> 불가능한 조합 삭제 -> score가 가장 높은 조합 예측 | Beam Search |