반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 과적합
- gradiant descent
- 딥페이크
- 면접왕이형
- 밑시딥2
- ESG
- k겹 교차검증
- 모두의 딥러닝
- 뉴로 심볼릭
- 면접왕 이형
- 예측선
- 선형회귀
- 안드로이드
- 독서 #독서후기 #피로사회 #행동과잉 #긍정과잉
- andoriod with kotlin
- nlp
- 안드로이드 구조
- MRC
- 학습 자동 중단
- 밑시딥
- 경사하강법
- GPT-3
- 코틀린
- 경제신문스크랩
- 밑바닥부터 시작하는 딥러닝
- ESG 채권
- 다중분류
- 보이스피싱
- 베스트 모델
- 로지스틱 회귀법
Archives
- Today
- Total
Practice makes perfect!
Week 11 (2) Extraction-based MRC 본문
1. Extraction-based MRC
1) 문제 정의
- 질문(question)의 답변(answer)이 항상 주어진 지문(context)내에 span으로 존재
- text를 생성하는 것이 아닌 위치만 파악하는 것으로 문제 formulate할 수 있음.
- ex) SQuAD, KorQuAD, NewsQA, Natural Questions, etc.
2) 모델 overview
- context와 question이 토크나이저를 활용해 쪼개짐.
- 이것들을 word embedding을 이용해 벡터화시킴.
- 벡터들이 모델 안에 들어감
- 모델은 시작점과 끝점을 내보냄 (context와 question의 각 단어에 해당하는 contextualize vector를 스칼라 값으로 내보낸 것)
- 시작과 끝 사이의 span을 가져와 답으로 내보냄
2. Pre-processing
1) Tokenization
- 텍스트를 작은 단위(Token)로 나누는 것
- 띄어쓰기 기준, 형태소, subword 등 여러 단위 토큰 기준이 사용됨
- 최근에는 Out-Of-Vocabulary (OOV) 문제를 해결해주고 정보학적으로 이점을 가진 Byte Pair Encoding
(BPE)을 주로 사용함 - BPE 방법론 중 하나인 WordPiece Tokenizer : 자주 나오는 단어는 하나로, 자주 나오지 않는 단어는 따로 나눠줌
- “미국 군대 내 두번째로 높은 직위는 무엇인가?”
[‘미국’, ‘군대’, ‘내’, ‘두번째’, ‘##로’, 높은, ‘직’, ‘##위는’, ’무엇인가’, ‘?’]
- “미국 군대 내 두번째로 높은 직위는 무엇인가?”
2) Special Tokens
- special token을 이용해 question과 context를 구분하도록 함
- 편의상 사용하는 토큰
- 토크나이즈 이후에도 계속 존재
3) Attention Mask
- 입력 시퀀스 중에서 attention을 연산할 때 무시할 토큰을 표시
- 0은 무시, 1은 연산에 포함
- 보통 [PAD]와 같은 의미가 없는 특수 토큰을 무시하기 위해 사용
- 모델에 입력값을 줄 때 attention mask 값도 같이 줌
4) Token Type IDs
- 입력이 2개 이상의 시퀸스일 때 (예: 질문 & 지문), 각각에게 ID를 부여해 모델이 구분해서 해석하도록 유
도 - [SEP] 토큰을 이용해 질문과 지문을 나눠주거나 token type ids를 이용해 각 단어에 직접적으로 flag를 줄 수 있음
5) 모델 출력값
- 정답은 문서 내 존재하는 연속된 단어토큰 (span)이므로, span의 시작과 끝 위치를 알면 정답을 맞출 수
있음 - Extraction-based에선 답안을 생성하기 보다, 시작 위치와 끝위치를 예측하도록 학습함. 즉 Token
Classification문제로 치환.
3. Fine-tuning
지문 내에서 정답에 해당하는 각 임베딩을 linear transformation을 통해 각 단어마다 하나의 숫자가 나올 수 있도록 바꿔주고, 각 지문 토큰마다 하나의 숫자 아웃풋이 나오게 되고 이 숫자를 점수로 볼 수 있음. 시작, 끝 점을 이런 방식으로 구하고 최종 답변을 구함.
4. Post-processing
1) 불가능한 답 제거하기
다음과 같은 경우 candidate list에서 제거
- End position이 start position보다 앞에 있는 경우 (e.g.start=90,end=80)
- 예측한 위치가 context를 벗어난 경우 (e.g. question 위치 쪽에 답이 나온 경우)
- 미리 설정한 max_answer_length 보다 길이가 더 긴 경우
2) 최적의 답안 찾기
- Start/end position prediction에서 score(logits)가 가장 높은 N개를 각각 찾는다.
- 불가능한 start/end조합을 제거한다.
- 가능한 조합들을 score의 합이 큰 순서대로 정렬한다.
- Score가 가장 큰 조합을 최종 예측으로 선정한다.
- Top-k가 필요한 경우 차례대로 내보낸다.
반응형
'Study > AI Tech' 카테고리의 다른 글
Week 11 (4) Passage Retrieval - Sparse Embedding (0) | 2021.10.14 |
---|---|
Week 11 (3) Generation-based MRC (0) | 2021.10.13 |
Week 11 (1) MRC Intro (0) | 2021.10.12 |
Week 10 (1) GPT 언어 모델 (0) | 2021.10.05 |
Week 9 (4) 한국어 언어 모델 학습 및 다중 과제 튜닝 (0) | 2021.10.01 |
Comments