일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- scatter
- Comparisons
- VSCode
- groupby
- type hints
- BOXPLOT
- 표집분포
- 딥러닝
- subplot
- Numpy data I/O
- Python 유래
- Numpy
- unstack
- Python 특징
- seaborn
- Python
- python 문법
- 최대가능도 추정법
- namedtuple
- linalg
- Array operations
- ndarray
- boolean & fancy index
- Operation function
- 가능도
- pivot table
- 부스트캠프 AI테크
- 카테고리분포 MLE
- dtype
- 정규분포 MLE
- Today
- Total
또르르's 개발 Story
[Stage 2 - 이론] 다양한 NLP 모델들 본문
1️⃣ XLNet
BERT는 MASK된 문장을 다시 복원하는 과정을 통해 훈련합니다.
그렇기 때문에 문제점이 발생할 수 있습니다.
BERT는 MASK token을 독립적으로 예측하게 됩니다. 따라서 예측의 대상이 MASK token일 뿐입니다.
그렇기 때문에 token사이의 관계 자체를 학습하는 것이 불가능합니다.
그리고 또한 BERT는Embedding length의 한계(512를 벗어나는)로 새로운 segment에 대해서는 segement간 관계 학습이 불가능합니다.
GPT-2는 단일 방향성으로 학습하기 때문에 문제가 있습니다.
1) Relative Postional Encoding
XLNet은 positional encoding -> relative postional encoding으로 변경했습니다.
BERT는 512값 내에서 절대값으로 postional encoding을 한다면, XLNet은 현재 token의 위치에서 0번쨰, 첫번째, 두 번쨰 등 상대적 거리 표현법을 사용합니다.
이를 통해 Sequence 길이에 대한 제한이 없어진다는 장점이 있습니다.
2) Permutation language modeling
두 번째로는 BERT의 MASK token을 없앴습니다.
대신 XLNet은 Permuatation language modeling이라는 방법을 사용했습니다.
기존 모델은 단어를 순차적으로 예측했다면, XLNet은 순열 조합을 통해서 문장을 학습하게 됩니다.
아래 사진과 같이 [발, 없는, 말이, 천리, 간다] 라는 문장에서 모든 token들을 순열 조합을 생성해서 섞어버립니다.
이렇게 섞어서 학습을 하면 한 방향으로만 학습하는 것을 방지할 수 있습니다.
2️⃣ RoBERTa
1. Model 학습 시간 증가 + Bach size 증가 + Train data 증가
2. Next sentence prediction 제거 -> Fine-tuning과 관련 없음 + 너무 쉬운 문제라 오히려 성능 하락
3. Longer sentence 추가
4. Dynamic masking -> 똑같은 텍스트 데이터에 대해 masking을 10번 다르게 적용하여 학습
3️⃣ BART
BART는 BERT와 GPT를 섞어놓은 모델이라고 생각하면 됩니다.
1) Transformer Encoder-Decoder 통합 LM
Transformer의 Encoder와 Decoder를 하나로 합쳐져 있는 통합 Language Model입니다.
기존 Language Model은 Next token을 예측하게 되고, BERT는 MASK된 token을 예측하게 되어있습니다.
BART는 여러가지 모델의 방법을 섞었습니다.
- Token Masking을 예측
- Sentence를 Permutation한 다음에 올바른 순열을 만들도록 예측
- 문서의 token들을 rotation해서 올바르게 맞추는 것을 예측
- 등등..
4️⃣ T-5
T-5는 동일하게 Mask 기법을 사용하긴 하지만 Masking이 하나의 token만 의미하는 것이 아닌, 의미를 가진 여러 어절들을 동시에 masking합니다. 그리고 복원할 때도 Multi-Masking을 복원합니다.
아래와 같이 여러 어절들을 하나의 Mask token으로 치환합니다.
target에서는 여러 문장을 동시에 복원하는 과정으로 학습하게 됩니다.
T-5 모델은 등장했을 때 바로 SOTA 모델이 되었습니다.
5️⃣ Meena
Meena 모델은 오로지 대화를 위한 모델입니다.
Meena는 Transformer Encode block 한 layer와 Deocde block 여러 layer를 합쳐서 구성되어 있습니다.
Meena는 챗봇의 평가를 위한 새로운 Metric인 SSA(Sensibleness and Specificity Average)를 제시했습니다.
SSA의 Sensibleness는 현재까지 진행 중인 대화에 적절한 답변을 했는지 안했는지를 결정하는 점수입니다.
SSA의 Specificity는 얼마나 구체적으로 답변을 했는지 평가하는 점수입니다.
6️⃣ Controllable LM
1) Plug and Play Language Model (PPLM)
기존 LM은 확률론적으로 접근하여 단어를 생성하는 것이기 때문에 윤리성과 같은 문제가 생깁니다.
다음에 나올 적절한 단어들을 Bag of word에 저장하고 있습니다. 그리고 내가 원하는 단어들이 최대 확률로 되도록 이전 상태의 vector를 수정하는 방법을 말합니다.
아래 그림과 같이 The chicken tastes 다음에 나올 단어는 'ok'의 분포가 가장 높습니다. 하지만 'delicious'가 더 확률로 나오는 것을 원하는 상황입니다. 이럴 때, Model은 backpropagation을 통해서 chicken 쪽에서 만들어진 vector를 수정하게 됩니다. (이때, gradient를 업데이트하는 것이 아닌 이전에 만들어진 vector값을 수정하므로써, bag-of-words에 들어간 단어들이 최대 확률이 되도록 이전 vector를 수정)
확률에 맡기는 방법이 아닌 의도적으로 만들어냄으로써 사용자가 원하는 단어로 유도할 수 있습니다.
다음과 같은 분야에 사용할 수 있습니다.
- 확률 분포를 사용하는 것이기 때문에, 중첩도 가능 (기쁨 + 놀람 + 게임)
- 특정 카테고리에 대한 감정을 컨트롤해서 생성 가능
- 정치적, 종교적, 성적, 인종적 키워드에 대해서는 중성적인 단어를 선택해서 생성
- 범죄 사건에 대해서는 부정적인 단어를 선택해서 생성 - 확률 분포 조절을 통해 그라데이션 분노 가능
'[P Stage 2] KLUE > 이론' 카테고리의 다른 글
[Stage 2 - 이론] koGPT-2 챗봇 만들기 (0) | 2021.04.23 |
---|---|
[Stage 2 - 이론] 한국어 GPT-2 모델 학습하기 (0) | 2021.04.21 |
[Stage 2 - 이론] GPT 언어 모델 (0) | 2021.04.21 |
[Stage 2 - 이론] 기계독해 모델 학습 (0) | 2021.04.21 |
[Stage 2 - 이론] 문장 토큰 단위 분류 모델 학습 (0) | 2021.04.20 |