작성자 : 서울시립대학교 경제학부 박준영
목차
1. Contextual representation
2. History of Contextual Representation
2-1) semi-supervised sequence learning, Google, 2015
2-2) Elmo(Deep contextual word embedding)
2-3) GPT-1
* Transformer VS LSTM
3. BERT
3-1) problem with previous methods
문제1) 잘 수행하는 확률 분포를 만들기 위해 방향성이 필요했다.
문제2) 단어의 'See themselves'문제
3-2) 문제를 해결한 BERT
해결방법 : Masked LM(language model)
* Bert vs GPT vs ELMO
3-3) Bert pretraining
3-3-1) Bert pretraining 방법
방법1) masked language model
방법2) Next sentence prediction
3-3-2) Bert pretraining의 input
-Token Embedding
*WordPiece
-segment Embedding
-Position Embedding
3-3-3) Bert pretraining procedure
3-4) Bert fine tuning
a) Sentence Pair Classification Tasks
b) single sentence Classification Tasks
c) Question Answering Tasks
d) single Sentence Tagging Tasks
3-5) Experiment
4. Post-Bert pre-training Advancement
4-1) ROBERTA
4-2) XLNET
4-3) ALBERT
4-4) T5
4-5) ElecTra
5. Distillation
5-1) Distillation
5-2) Distillation의 기술
5-3) Distillation이 성능이 좋은 이유
6.conclusion
reference
이전 강의에서 word2vec, FastText, Glove와 같은 워드 임베딩 방법들을 배웠다.
위의 임베딩 방법들의 문제는 하나의 단어가 하나의 벡터로 mapping되어 context을 고려하지 못한다는 점이다.
위의 problem을 보면
그래서 이를 해결하기 위해 텍스트 corpus 문맥상의 표현을 학습하는 Train contextual representation on corpus가 제안되었다.
문맥상의 표현을 학습하기 위한 Train contextual representation on corpus는 어떻게 발전했을까????
https://arxiv.org/pdf/1511.01432.pdf
2015년도 구글에서 발표한 semi-supervised sequence learning 논문이다.
이 논문은 전체 모델을 pretrain한 뒤에 classification을 위해 fine tuning을 진행하는 방식으로 영화 리뷰데이터 감성분석을 진행하였다.
이 논문으로 충분한 데이터가 없기 때문에 좋은 결과를 얻지 못했다는 것을 알게되었다.
https://arxiv.org/pdf/1802.05365.pdf
그 후 ELMO가 등장한다.
ELMO는 큰 언어 corpus를 순방향 역방향 LSTM으로 학습하는 양방향 모델이다. 역방향 언어 모델도 사용함으로써 기존의 GLOVE 등에 있던 워드 임베딩 문제점을 해결하였다.
https://www.cs.ubc.ca/~amuham01/LING530/papers/radford2018improving.pdf
Transformer(attention is all you need): https://arxiv.org/pdf/1706.03762.pdf
Transformer가 등장하게 되고 언어 모델 학습시 Transformer를 이용한 연구가 이루어지게 되었다.
LSTM은 단어를 순차적으로 입력 받아서 처리하기때문에 각 단어의 위치 정보를 가질 수 있었고 멀리 있는 단어보다 가까이 있는 단어가 관련성이 높다고 판단하는 locality bias 문제가 발생한다.
그러나 transformer은 단어 입력을 순차적으로 받는 것이 아니라 각 단어의 embedding벡터에 positional encoding을 통해 위치정보를 더하여 locality bias문제를 해결한다.
self-attention에선 맥락을 concatenate함으로써 long-distance context가 "equal opportunity"를 가지도록한다.
GPT-1은 표준 Transformer의 Encoder는 사용하지 않고 Decoder만 사용하므로 Decoder에서 Encoder의 출력과 Attention을 하는 부분인 Encoder-Decoder Multi-Head attention 부분을 제거하였다.
그리고 12개의 transformer 층을 쌓은 후 방대한 텍스트 데이터를 이용하여 GPT-1 모델을 만들었다.
GPT-1은
1) 큰 말뭉치에서 대용량의 언어모델 학습
2) 분류 데이터를 써서 과제에 맞춰 모델을 fine-tuning하는 방식으로 진행된다.
GPT-1은 12개 중 9개의 nlp task에서 sota(state of art)를 달성
problem: LM(언어 모델)은 left, right 맥락으로만 사용되었다. 그러나 언어는 양방향 이해가 필요하다.
LM(언어 모델)이 단방향이었던 이유
-> 위 질문에 대한 답은 뒤에서 서술하겠습니다.
양방향 학습의 문제를 해결하기 위해서 Masked LM이 탄생했다.
Masked LM이란 입력 텍스트 단어 집합의 15%의 단어를 랜덤으로 masking하고 masking된 단어를 예측하는 방법이다.
이때 masking 개수가 적으면 학습하는데 많은 비용이 들고, 너무 많다면 맥락의 수가 적어져 예측이 어렵다.
Bert는 transformer에서 디코더를 제외하고 인코더만 사용한다.
Bert의 작동구조는 Bert를 이용하여 pretrained-model에 분류를 위해 fined tuning을 하는 구조이다.
Bert pretraining 방법은 Masked LM(MLM)/Next sentence prediction(NSP) 2가지로 나뉜다.
방법1) Masked LM(MLM)
Bert는 사전 훈련을 위해 신경망 input으로 들어가는 입력 text의 15%를 랜덤으로 masking하고 masking을 예측한다.
위의 예시처럼 My dog is cute. He likes playing이라는 문장에 대해 masked language 모델을 학습하려고 할 때 [my, dog, is, cute, he, likes, play, ##ing]로 토큰화가 되어 bert에 입력으로 사용된다.
여기서 dog가 [mask]되었는데 Bert 모델이 [mask]된 단어를 맞추려고 하고 이때 dog 위치의 출력층 벡터만 사용한다.
위 사진 처럼 [Mask] 토큰만 사용하면 mask token이 파인튜닝 단계에서 나타나지 않는다. 이를 해결하기 위해
15%의 80%는 [mask]로 EX) went to the store -> went to the [mask]
15%의 10%는 랜덤으로 단어 변경 EX) went to the store -> went to the running
15%의 10%는 동일하게 EX) went to the store -> went to the store
여기서는 He -> king / play를 play 그대로 사용한다. [mask], 'king', 'play'에서도 원래 단어를 예측한다.
따라서, Bert에서는 input과 masked된 token을 Transformer encoder에 넣고 token을 예측하므로 양방향 학습을 한다.
방법2) Next sentence prediction(NSP)
Next sentence prediction(NSP)는 QA나 Natureal language inference와 같이 두 문장 사이의 관계를 이해하도록 두 문장을 이어서 맞추는 것이다.
pre-training 시에는 50:50 비율로 실제 이어지는 문장과 랜덤한 문장을 넣어서 Bert가 맞추도록 한다.
Bert의 입력에 [Sep]라는 토큰을 넣어 문장을 구분한다. 문장 분류 문제를 위해 [CLS] 토큰을 추가하여 [CLS]의 출력층에서 NSP 분류 문제를 푼다.
이때 NSP와 MLM은 loss를 합하여 학습이 이루어진다.
Bert의 input은 3가지 embedding 값의 합으로 이루어짐
1단계 : 위키피디아, book corpus 데이터 이용
2단계 : NSP를 위해 sentence를 뽑아서 Sentence embedding을 넣는다(이때, 50%는 진짜 sentence, 나머지는 random sentence)
3단계: masking 작업을 하고 masking 예측
-pretraing hyper parameter
이제 pre-train 과정이 끝났으니 task를 위한 fine tuning에 대해 알아보자
a,b는 sequence-level task / c,d는 token-level task다.
a) Sentence Pair Classification Tasks: 텍스트의 쌍에 대한 분류 문제
task: NLI(자연어 추론) - 두문장이 주어졌을때 하나의 문장이 다른 문장과 어떤 관계가 있는지 추론
입력텍스트가 1개가 아니므로 text 사이에 [sep]토큰을 넣고 두 종류의 segment embedding 사용
b) single sentence Classification Tasks: 하나의 텍스트에 대한 텍스트 분류 유형
영화 리뷰 감성분류, 뉴스 분류 등 입력한 문서에 대해서 분류를 하는 유형으로 [CLS] 토큰을 사용하여 토큰의 위치 출력층에서 Dense layer또는 FC layer를 추가하여 분류에 대한 예측 실행
c) Question Answering Tasks : 질의응답
task: 텍스트의 쌍을 입력 받는 QA
질문과 본문을 입력 받으면 분문의 일부를 추출해서 질문에 답변하는 것이다. token들에서 Stand/end span을 찾아낸다.
d)single Sentence Tagging Tasks : 하나의 텍스트에 대한 태깅 작업
Named entity Recognition(NER)이나 형태소 분석과 같이 single sentence에서 각 토큰이 어떤 class를 갖는지 모두 classifier적용
모든 NLP task에서 sota 달성
- Effect of pre-training Task
Pre-training task를 하나라도 제거하면 성능이 떨어진다.
NSP가 문장간의 논리적구조 파악에 중요한 역할을 하고 있기때문에 NO NSP의 경우에는 NLI(자연어 추론)에서 성능이 떨어지는 것을 볼 수 있다.
MLM대신 LTR(left to right)을 사용하면 BI-LSTM을 사용하더라도 성능이 많이 떨어진다. MLM이 더 Bidirectional한 것을 볼 수 있다.
- Effect of directionality and training Time
MLM은 수렴까지 시간이 좀 걸리지만 결과는 훨씬 좋다.
- Effect of model size
모델이 커질수록 정확도가 올라감 그러나 그렇게 눈에 띄는 변화는 아니다.
Bert가 underfit한 상황으로 생각하여 모델을 더 오래 학습하고 더 많은 데이터를 넣어서 성능을 높임
임베딩의 모델의 흐름은 2가지
1. AR(autoregressive)모델 : 데이터를 순차적으로 처리하는 기법
EX) ELMO, GPT
EX) 나는 사과를 먹는다 : 나는 → 사과를 → 먹는다
단점: 문맥을 양방향으로 볼 수 없다는 문제
2. AE(AutoEncoding) 모델 : 입력값을 복원하는 기법들
EX) BERT-masking기법(masking 토큰을 예측)
EX) 나는 [mask] 먹는다 : 나는 → [mask] ← 먹는다.
단점: masking한 토큰을 서로 독립으로 가정하여 token들 사이의 의존관계(dependency) 고려할 수 없다.
AR, AE 모델의 한계를 극복하기위해 permuation language model인 XLNET을 제안했다.
input sequence index의 모든 permuation(순열)을 고려한 AR방식.
Zt는 index의 permuation 조합을 사용하여 다양한 sequence 고려
EX) input sequence가 4면 Zt는 4!
각 순열에 AR Language model의 objective fuction 적용하여 특정 token에 양방향 context 고려
EX)
발 없는 말이 천리 간다 -> permuation하여 발, 없는, 천리, 이, 말, 간다 집합이 아왔고 천리를 예측할때의 입력 시퀀스는 발, 없는이 된다.
시퀀스를 순차적으로 학습하는 AR 모델이지만 permuation을 통해 문장의 양방향 문맥을 고려하게 된다.
*[3,2,4,1]에서 3을 학습할때
*[2, 4, 3, 1]에서 3을 학습할때 2, 4로 3을 예측
permutation은 attetion mask로 실현한다.
3번 단어를 맞추기 위해서는 정보를 사용할 수 없고, 2번을 맞출땐 3번 단어 정보를 이용하는 방식으로 사용된다.
하지만 위 방법은 학습시 permuation 하기때문에 예측할 token이 명확하지 않아 Standard Transformer에서 작동하지 않는다.
따라서 Transformer에 XLNET의 object function을 적용하기 위해 Two-stram self-attention 제안.
Two-stram self-attention은 쿼리 스트림과 컨텐트 스트림을 합하여하여 2개의 hidden representation를 가진고 업데이트하는 기법.
* 컨텐트 스트림 : t 시점과 t이전 시점의 token정보(transformer와 같은 연산)
[3, 2, 4, 1]인 경우
x: 토큰 임베딩
h: 컨텐트 스트림 벡터
* 쿼리 스트림 : 토큰과 위치 정보를 활용한 self-attention 기법(t 이전 시점의 token정보 + t시점의 정보)
[3, 2, 4, 1]
-워드 임베딩을 embedding size로 설정해서 파라미터수를 줄였다.
-attention과 FFNN 레이어 간 파라미터를 공유하는 Cross-layer parameter sharing기법을 사용하여 파라미터 수를 줄이고, 학습도 안정적으로 가능하였다.
Bert에 비해 param 수도 적고 Training speed가 빠르다
모든 NLP task를 통합할 수 있도록 Text-to-Text 프레임 워크 사용
모든 NLP task에서 T5라는 동일한 모델, loss, hyperparameter 사용가능
파라미터 수가 Bert의 2배이므로 Expensive한 모델이다.
Generator G : Bert MLM
Discriminatior D: 입력 토큰 sequnce에서 토큰이 original인지 replaced인지 분류
대용량 corpus에서 Generator loss와 discriminator loss 합을 최소화 하도록 학습한다.
제품에 모델을 적용할 때, Bert와 다른 pretrained language models는 매우 크고 비용이 많이 드는 모델이다. -> Distillation을 통해 model compression
Distillation의 목표는 성능을 유지하면서 model을 압축하고자함.
Q. Distillation을 이용해서 만들어낸 모델에 추가 학습을 시키고 싶다면 다시 큰 모델에 추가 학습을 시켜서 압축하는 방식인가요? 아니면 작은 모델에 추가로 학습을 진행하나요??
A. 정확도를 극대화 시키는부분은 Teacher 파트이므로 큰 모델에 추가 학습을 진행한다.
<참고>: https://blog.est.ai/2020/03/%EB%94%A5%EB%9F%AC%EB%8B%9D-%EB%AA%A8%EB%8D%B8-%EC%95%95%EC%B6%95-%EB%B0%A9%EB%B2%95%EB%A1%A0%EA%B3%BC-bert-%EC%95%95%EC%B6%95/
-Pre-trained된 양방향 language models은 성능이 좋다. 하지만 매우 expensive하고 성능을 개선하려면 더 expensive한 모델과 더 많은 data가 요구된다.
-위 모델을 servivng/inference에 사용하기 위해서는 distillation을 통해서 해결해야한다.
https://tmaxai.github.io/post/BERT/#4-experiments
https://wikidocs.net/115055
https://www.youtube.com/watch?v=knTc-NQSjKA&t=1049s
https://arxiv.org/pdf/1810.04805.pdf
https://baekyeongmin.github.io/paper-review/roberta-review/
XLNET:https://ratsgo.github.io/natural%20language%20processing/2019/09/11/xlnet
ElecTra:https://blog.pingpong.us/electra-review/
투빅스 15기 김동현
GPT-1
표준 Transformer의 Encoder는 사용하지 않고 Decoder만 사용하므로 Decoder에서 Encoder의 출력과 Attention을 하는 부분인 Encoder-Decoder Multi-Head attention 부분을 제거하였습니다.
그리고 12개의 transformer 층을 쌓은 후 방대한 텍스트 데이터를 이용하여 GPT-1 모델을 만들었습니다.
Masked LM
Masked LM이란 입력 텍스트 단어 집합의 15%의 단어를 랜덤으로 masking하고 masking된 단어를 예측하는 방법입니다.
이때 masking 개수가 적으면 학습하는데 많은 비용이 들고, 너무 많다면 맥락의 수가 적어져 예측이 어렵습니다. Masked LM 을 통한 양방향 학습을 사용하는 모델이 Bert입니다.
Next sentence prediction(NSP)
Next sentence prediction(NSP)는 QA나 Natureal language inference와 같이 두 문장 사이의 관계를 이해하도록 두 문장을 이어서 맞추는 것입니다. pre-training 시에는 50:50 비율로 실제 이어지는 문장과 랜덤한 문장을 넣어서 Bert가 맞추도록 합니다.
Distillation
거대한 language model을 학습하는 것은 다른 NLPtask에도 유용하고, Fine-tuning은 대부분 존재하는 latent feature를 조정합니다. 기능중 일부만 지정된 작업에 유용하기 때문에 distillation이 일부 feature만 집중하게 해줍니다.
투빅스 15기 조효원
투빅스 15기 조준혁
투빅스 14기 이정은
BERT를 비롯해 이후 모델에 대해서도 설명해주셔서 좋았습니다. 감사합니다 : )
투빅스 15기 이수민
투빅스 15기 이수민
투빅스 14기 한유진
Bert뿐 아니라 다른 Pre-trained모델까지 상세하게 설명해주셔서 이해하기 수월했습니다. 좋은 강의 감사합니다!