| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- nlp
- 데이터 구축
- AI 경진대회
- mrc
- Ai
- RNN
- matplotlib
- Self-attention
- AI Math
- 2023 현대차·기아 CTO AI 경진대회
- pyTorch
- Data Viz
- passage retrieval
- KLUE
- word2vec
- 데이터 시각화
- GPT
- ODQA
- 딥러닝
- N2N
- 기아
- N21
- Bart
- seaborn
- Bert
- 현대자동차
- Transformer
- Optimization
- Attention
- dataset
- Today
- Total
쉬엄쉬엄블로그
(NLP) Self-supervised Pre-training Models 본문
이 색깔은 주석이라 무시하셔도 됩니다.
Self-Supervised Pre-Training Models
Transformer
Recent Trends
- Transformer model and its self-attention block has become a general-purpose sequence(or set) encoder and decoder in recent NLP applications as well as in other areas.
- 트랜스포머 모델에서 제안된 self-attention block은 범용적인 sequence encoder, decoder로써 최근 자연어처리의 다양한 분야에서 좋은 성능을 내고 있고 심지어 다른 분야에서도 활발히 사용됨
- Training deeply stacked Transformer models via a self-supervised learning framework has significantly advanced various NLP tasks through transfer learning, e.g., BERT, GPT-3, XLNet, ALBERT, RoBERTa, Reformer, T5, ELECTRA…
- 트랜스포머는 self-attention block을 약 6개 정도만 쌓아서 사용했다면 최근 모델의 발전 동향은 모델 구조 자체의 변경은 특별히 없이 트랜스포머에서 제시된 self-attention block을 점점 더 많이 쌓은 모델을 만들고 이를 대규모 학습 데이터를 통해 학습할 수 있는 self-supervised learning framework으로 학습한 후 이를 다양한 task들의 transfer learning형태로 finetuning하는 형태로 좋은 성능을 내고 있음
- Other applications are fast adopting the self-attention and Transformer architecture as well as self-supervised learning approach, e.g., recommender systems, drug discovery, computer vision, …
- self-attention 모델은 추천 시스템, 신약 개발, 영상처리 분야까지 적용 분야를 넓혀가고 있음
- As for natural language generation, self-attention models still requires a greedy decoding of words one at a time.
- self-attention에 기반한 모델들도 자연어생성이라는 task에서 greedy decoding이라는 framework에서 벗어나지 못하는 한계점도 가짐
- greedy decoding
- 처음부터 왼쪽에서 단어를 하나씩 생성하는 방법
- greedy decoding
- self-attention에 기반한 모델들도 자연어생성이라는 task에서 greedy decoding이라는 framework에서 벗어나지 못하는 한계점도 가짐
GPT-1
Improving Language Understanding by Generative Pre-training
GPT-1
It introduces special tokens, such as <S> / <E> / $, to achieve effective transfer
It does not need to use additional task-specific architectures on top of trasnferred
- <S>, <E>, $ 등과 같은 다양한 스페셜 토큰을 제안하여 간단한 task뿐만 아니라 다양한 자연어처리에서의 많은 task들을 동시에 커버할 수 있는 통합된 모델을 제안했다는 것이 주요한 특징
main task에 사용할 때
이미 학습된 트랜스포머 encoder와 main task를 위한 추가적인 layer를 하나 덧붙이고 main task를 위한 학습 데이터로 전체 네트워크를 학습하는 과정을 거침
마지막 layer는 random initialization을 통해 시작이 되기 때문에 학습이 충분히 되어야 하지만 이전에 이미 학습되어 있는 layer에는 lr을 상대적으로 작게 줌으로써 큰 변화가 일어나지 않도록하고 기존에 학습했던 여러 지식들을 충분히 잘 담고 있으면서 그 정보를 우리가 원하는 main task에 활용할 수 있는 형태로 fine-tuning을 진행함

https://blog.openai.com/language-unsupervised/ GPT 모델은 sequence encoding을 하기 위한 attention block으로 트랜스포머의 decoder 부분에서 사용되던 masked self attention을 사용함
하지만 BERT 모델은 mask로 치환된 토큰들을 주로 예측하게 되고 mask 단어를 포함하여 전체 주어진 모든 단어들을 접근이 가능하도록 함으로써(attention 패턴이 모두를 볼 수 있도록 하여) 트랜스포머의 encoder 부분에서 사용되던 self-attention을 사용함
Experimental Results

https://blog.openai.com/language-unsupervised/
BERT
BERT : Pre-training of Deep Bidirectional Transformers for Language Understanding
- Learn through masked language modeling task
- Use large-scale data and large-scale model

Masked Language Model
- Motivation
- Language models only use left context or right context, but language understand bi-directional
- 기존에는 전후 문맥을 보지 못하고 앞쪽의 문맥만을 보고 다음 단어를 예측해야하는 한계가 존재했음
- 한 쪽의 문맥 정보만으로 예측하는 것이 아니라 양쪽의 문맥 정보를 보고 예측하는 것이 좀 더 유의미한 예측이 가능할 것이라 생각 하여 제안
- Language models only use left context or right context, but language understand bi-directional
- If we use bi-directional language model?
- Problem : Words can “see themselves” (cheating) in a bi-directional encoder
Pre-training Tasks in BERT
Masked Language Model (MLM)
- Mask some percentage of the input tokens at random, and then predict those masked tokens.
- 입력 토큰 중 무작위로 몇 %정도를 mask하고 그 mask된 토큰들을 예측함
- 15% of the words to predict
- 80% of the time, replace with [MASK]
- 10% of the time, replace with a random word
- 10% of the time, keep the sentence as same
- Mask some percentage of the input tokens at random, and then predict those masked tokens.
Next Sentence Prediction (NSP)
Predict whether Sentence B is an actual sentence that proceeds Sentence A, or a random sentence
- B문장이 A문장 다음에 오는 문장이 맞는지 아닌지 예측함

https://nlp.stanford.edu/seminar/details/jdevlin.pdf
Pre-training Tasks in BERT : Masked Language Model
How to
Mask out $k%$ of the input words, and then predict the masked words
e.g., use $k$=15%

Too little masking : Too expensive to train
Too much masking : Not enough to capture context
mask로 치환하는 비율을 너무 높이게 되면 주어진 문장에서 너무 많은 부분을 mask로 처리하게 되어 mask 단어를 맞추기에 충분한 정보가 제공되지 않는 문제가 발생
mask로 치환하는 비율을 너무 낮추게 되면 학습 효율이 좋지 않거나 학습 속도가 충분히 빠르지 않게 되는 문제가 발생
BERT에서는 적절한 비율이 15%라고 함
Problem
- Mask token never seen during fine-tuning
Solution
- 15% of the words to predcit, but don’t replace with [MASK] 100% of the time.
- Instead:
- 80% of the time, replace with [MASK]
- went to the store → went to the [MASK]
- 10% of the time, replace with a random word
- went to the store → went to the running
- 10% of the time, keep the same sentence
- went to the store → went to the store
- 80% of the time, replace with [MASK]
- 15% 중에 80% 정도는 [MASK]라는 특수한 토큰으로 치환하여 해당 단어를 맞추도록 함
- 15% 중에 10% 정도는 무작위 단어로 치환하여 해당 본래 단어를 맞추도록 함
- 15% 중에 10% 정도는 단어를 전혀 바꾸지 않고 그 단어가 다른 단어로 바뀌어야 하는지 바뀌지 않아야 하는지 맞추도록 함
Pre-training Tasks in BERT : Next Sentence Prediction
To learn the relationships among sentences, predict whether Sentence B is an acutal sentence that proceeds Sentence A, or a random sentence
A, B 두 문장이 연속된 문장이 맞는지 예측하도록 학습이 진행되고 backpropagation으로 [CLS] 토큰을 통해 전체 네트워크가 학습이 진행됨

[CLS] : classification token
- 다수의 문장 레벨에서 예측 task를 수행하는 역할을 담당하는 토큰
BERT Summary
Model Architecture
- BERT BASE : L = 12, H = 768, A = 12
- BERT LARGE : L = 24, H = 1024, A = 16
- A : 각 layer별로 정의되는 attention head의 수
- H : 각 self attention block에서 같게 유지되는 encoding vector의 차원 수
Input Representation
WordPiece embeddings (30,000 WordPiece)
- 명확하게 구분되는 단어(subword)가 합성된 단어들을 단어 단위로 나눠서 embedding함
Learned positional embedding

- positional embedding도 학습에 의해서 결정되도록 만듬
[CLS] - Classification embedding
Packed sentence embedding [SEP]
Segment Embedding

- 두 문장이 이어져서 한 문장이 이루어진 경우라면 positional embedding에서는 순차적으로 embedding값이 부여되기 때문에 두 번째 문장이 시작되는 단어일지라도 positional embedding 값은 순차적으로 봤을 때 중간 부분의 값이 부여되는 문제가 있음
- 그래서 segment embedding을 통해 첫 번째 문장은 첫 번째 문장이라는 것을 나타낼 수 있는 embedding 값을 더해주고 두 번째 문장은 두 번째 문장이라는 것을 나타낼 수 있는 embedding 값을 더해줘서 각각의 문장이 이어졌다는 것을 나타내줌
- token embedding, segment embedding, positional embedding 값들을 모두 더하여 최종 embedding 값을 만들게 됨
Pre-training Tasks
- Masked LM
- Next Sentence Prediction
BERT : Fine-tuning Process
Transfer Learning

https://blog.openai.com/language-unsupervised/ - 각각의 main task에 적절한 출력을 만들어주도록 마지막에 적절한 FC 레이어를 추가한다.
BERT vs GPT-1
- Comparison of BERT and GPT-1
- Training-data size
- GPT is trained on BookCorpus(800M words)
- BERT is trained on the BookCorpus and Wikipedia (2,500M words)
- BERT가 GPT보다 3배 많은 데이터로 학습 진행
- Training special tokens during training
- BERT learns [SEP], [CLS], and sentence A/B embedding during pre-training
- [SEP], [CLS] 토큰 + segment embedding 추가
- Batch size
- BERT - 128,000 words
- GPT - 32,000 words
- 한 번 학습할 때 BERT가 GPT보다 더 많은 단어를 학습함
- 일반적으로 더 큰 batch size를 사용할 때 최종 모델 성능이 좋아지고 학습도 더 안정화된다고 함
- gradient descent를 수행할 때 일부의 데이터만으로 도출된 gradient로 파라미터를 업데이트할지 아니면 다수의 데이터를 바탕으로 종합적으로 나온 평균 gradient를 바탕으로 파라미터를 업데이트할지에 따라 학습이 달라질 수 있는데 한 번에 더 많은 숫자의 데이터를 사용해서 업데이트를 수행할 때가 학습이 더 안정적이고 성능이 좋다고 함
- Task-specific fine-tuning
- GPT uses the same learning rate of 5e-5 for all fine-tuning experiments
- GPT는 fine tuning에서 lr을 5e-5로 동일하게 사용
- BERT chooses a task-specific fine-tuning learning rate
- BERT는 task별로 lr을 다르게 사용
- GPT uses the same learning rate of 5e-5 for all fine-tuning experiments
- Training-data size
BERT : GLUE Benchmark Results
GLUE Benchmark Results

Machine Reading Comprehension (MRC), Question Answering

BERT : SQuAD 1.1

- BERT의 입력으로 지문과 질문을 두 개의 서로 다른 문장인 것처럼 [SEP]를 통해 concat을 하여 하나의 시퀀스로 만들어서 BERT를 통해 인코딩을 진행함
- 그러면 각각의 지문 상에서의 단어별로 단어 인코딩 벡터가 나옴
- 그 벡터들에서 정답에 해당할 법한 위치, 즉 그 위치는 지문상에서 특정한 문구로 정답이 주어지는데 그 문구의 위치를 예측하도록 모델을 학습함
- 답에 해당하는 문구가 시작하는 위치를 예측하기 위해 각 단어별로 최종 인코딩 벡터가 출력으로 나왔을 때 이를 공통된 출력 레이어를 통해(스칼라 값을 뽑도록 하는 출력 레이어를 통해) 결과값을 얻게 됨
- 각 단어가 2차원 vector로 최종 인코딩 벡터가 나오게 되면 여기에 각 단어 인코딩 벡터에 적용해야 하는 출력 레이어는 2차원 벡터를 1차원 벡터 또는 스칼라 값으로 변경해주는 FC 레이어가 됨
- FC 레이어의 파라미터가 random initialization으로 부터 fine tuning되는 대상에 해당하는 파라미터가 됨
- 각 단어별로 스칼라 값을 얻은 후에는 여러 단어들 중에 답에 해당하는 문구가 어느 단어에서 시작하는지 예측함
- 가령 단어가 124개 있다면 해당하는 스칼라 값이 124개가 있을 것이고 거기에 softmax를 통과시켜서 softmax의 ground truth로써 첫 번째 단어에 해당하는 단어에 배정될 확률이 최대한 가까워지도록 softmax loss를 통해 모델을 학습함
- 그 후에는 모델이 끝나는 시점도 예측해야 하는데 그 경우에는 시작 지점을 예측하도록 하는 출력 FC 레이어와 동시에 또 다른 FC 레이어를 두 번째 버전으로 만들고 그것을 통과하여 단어 인코딩 벡터가 스칼라 값이 나오도록 함
- 거기에 softmax를 통과시킨 후 끝 단어에 대한 위치를 예측하도록 하는 FC 레이어의 결과를 ground truth가 실제 해당하는 답의 마지막 단어의 위치가 되도록 softmax loss를 통해 학습하여 시작, 끝 지점을 예측하는 FC 레이어를 학습하게 됨
BERT : SQuAD 2.0

- 질문에 대한 답을 찾을 수 없는 경우의 데이터셋까지도 포함됨
- 먼저 질문에 대해 답이 있는지 없는지에 대해서 판단함
- 답이 있다면 위의 SQuAD 1.1에서 적용했던 방식대로 답에 해당하는 문구를 예측하게 됨
- 답이 있다 없다를 예측하는 task는 high level에서 보면 문단과 질문을 종합적으로 판단해야 하는 task가 됨
- 그 경우에 [CLS] 토큰을 활용할 수 있고 지문과 질문을 concat하여 하나의 sequence로 만들고 BERT를 통해 인코딩하여 나온 [CLS] 토큰에서 주어진 질문과 지문에 대한 쌍에서 답이 실제로 없는(ground truth가 no answer라고 표시된) 경우는 [CLS] 토큰을 binary classification하는 출력 레이어를 두고 cross-entropy loss를 통해 결과값이 no answer로 적절히 예측되도록 학습하게 됨
- 최종적으로 예측에 이 모델을 사용할 때는 [CLS] 토큰을 통해 답이 있는지 없는지 예측하고 답이 있는 것으로 예측 결과가 나온 경우에는 SQuAD 1.1에서 적용했던 방법처럼 시작, 끝 지점을 예측하는 출력 레이어를 구동함으로써 답에 해당하는 문구를 예측할 수 있게 됨
BERT : On SWAG

- 주어진 문장이 있을 때 다음에 나타날 법한 적절한 문장을 고르는 task
- 기본적으로 [CLS] 토큰을 사용하게 됨
- 위 예시에서는 가능한 경우의 수가 4가지 이기 때문에 비효율적일 수 있지만 첫 문장과 가능한 4개의 선택지들을 각각 concat하여 BERT를 통해 인코딩하고 나온 [CLS] 토큰에 임베딩 벡터가 2차원이면 출력 FC 레이어를 거쳐서 스칼라 값을 예측하도록 함
BERT : Ablation Study

- 레이어를 점점 더 깊게 쌓고 레이어별 파라미터를 점점 더 늘리는 방식으로 모델을 학습하면(모델 사이즈를 점점 더 키울수록) 여러 down-stream task에 대한 성능들이 끊임없이 좋아짐
- 모델 사이즈를 GPU 리소스가 허락하는한 키울 수 있는 만큼 키웠을 때도 계속 개선되는 결과를 보여줌
- 가능하다면 모델 사이즈를 키워서 pretraining을 통한 down-stream task에 적용했을 때 성능이 점점 더 오를 수 있을 것이라고 전망하고 있음
출처: 부스트캠프 AI Tech 4기(NAVER Connect Foundation)
'부스트캠프 AI Tech 4기' 카테고리의 다른 글
| (Data Viz) 인터랙티브 시각화 (0) | 2023.07.13 |
|---|---|
| (NLP) Other Self-supervised Pre-training Models (0) | 2023.07.12 |
| Git (1) | 2023.07.06 |
| (NLP) Transformer - 2 (0) | 2023.07.05 |
| (NLP) Transformer - 1 (0) | 2023.07.04 |