1. Unidirectional Model
장점
: Text를 한 방향으로만 순차적으로 고려한다. 즉, 앞선 단어만을 고려하기 때문에 속도가 매우 빠르고, 병렬화에 유리하다. 단점
: 하지만 가끔씩 정보를 놓칠 수도 있고, 문맥 파악이 매우 어렵다. 2. Bidirectional Model
장점
: Text를 양방향으로 고려한다. 즉, 전체 문맥을 파악하기 때문에 정확한 응답을 제공할 수 있다.단점
: 전체 문맥을 고려해야 하기 때문에 처리 속도가 느리고, 병렬화가 매우 어렵다.3. Transformer Model
장점
: Self-attention 기반의 Model이며 중요한 정보에 더 집중하기 때문에 긴 문장의 문맥을 파악할 수 있고, 정확도가 좋다.단점
: 모델 크기와 계산 비용, 데이터, 시간이 상당히 필요하다. ex) Chat-GPT, BERT, LLaMA
BERT와 비슷한 approach 방식을 가지고 있는 Model인 ELMo와 GPT-1에 대한 소개로 시작한다.
Pre-trained Language Representation을 downstream tasks에 적용하는 방법은 2가지가 있는데
(1) Feature-based approach / ELMo
Feature based approach방식으로, pre-trained representations을 하나의 추가적인 feature로 활용해 downstream task에 활용
똑같은 Sequence에 대해 정방향의 Forward LSTM과 Backward LSTM을 여러 단계로 학습 시킨 뒤, 해당하는 Hidden State를 모두 선형결합하여 최종적으로 token을 만든다.
(2) Fine-tuning approach / GPT-1
위 두 방식의 공통점 / 한계점
공통점
: Pre-trained 과정에서 동일한 objective function을 공유하고, Unidirectional LM 사용
한계점
BERT 배경
- 위의 그림에서 언제나 동일한 Pre-trained model의 parameter가 서로 다른 downstream tasks의 초기 값으로 사용된다.
- 이러한 초기값들은 Fine-tuning 과정에서 downstream task에 알맞게 조정된다.
BERT는 Transformer의 Encoder 부분만 사용한다.
Total parameters= 110M
-> 이렇게 설정한 이유는 OpenAI의 GPT-1과의 성능을 비슷한 복잡도로 비교하기 위해서
GPT-1
는 next token만을 맞추는 LM을 만들기 위해 Transformer Decoder만 사용
BERT
는 MLM과 NSP를 위해 Self-Attention을 수행하는 Transformer Encoder만 사용
Sentence
Sequence
1. [CLS] Token
2. [SEP] Token
3. [C] Token
4. [] Token
1. Token Embeddings
##ing
가 WordPiece라고 생각하면 된다. 2. Segment Embeddings
I like 김민재
와 I like 이강인
은 각각 와 로 나눠진 것을 확인할 수 있다.3. Position Embeddings
- BERT에서는 [MASK] token만을 예측한다.
- Denosing Auto Encoder에서는 전체 Input을 재구성한다.
문제점
해결방안
다양한 실험을 통해 [Mask] 80%, [Same] 10%, [RAND] 10%로 했을 때 성능이 제일 좋았음.
hairy
-> my dog is [MASK]
hairy
-> my dog is apple
🏆 10%의 original word
: 단어를 그대로 두는 것은 실제 관측 단어에 대한 representation을 bias해주기 위함
🏆 10%의 random word change
: 15%의 token 중에서 10%만을 바꾸는 것이기 때문에 실제 비율은 1.5% 밖에 되지 않는다. 그래서 모델의 성능이 크게 떨어지지는 않는다.
이를 통해 Pre-training과 Fine-tuning 사이에 mismatch가 해소될 수 있다.
위에서 언급했던 [C] token은 NSP를 위한 token이다.
BERT는 [C] token을 활용하여 input으로 들어온 두 개의 문장이 원래 corpus에서 이어 붙어져 있던 문장인지(IsNext) 아닌지(NotNext)를 맞춰가며 학습
QA와 NLI Task에서 매우 유용하게 작용!
BooksCorpus Dataset 확인하려면 이걸 클릭해주세요!
English Wikipedia Datset 확인하려면 이걸 클릭해주세요!
문서 단위의 Corpus를 사용하는 것이 문장 단위의 Corpus를 사용하는 것보다 훨씬 성능이 좋음
🏆 핵심은 BERT 제일 윗단에 하나의 Layer를 쌓는 것만으로도 충분히 구현 가능하다. 🏆
inputs
outputs
token representation in sequence tagging or question answering
[CLS] representation in classification(entailment or sentiment analysis)
상위 Lanking의 모델들은 BERT를 기반으로 만들어진 모델들이 많이 있다는 것을 알 수 있음
실험 결과, BERT의 성능은 다른 모델들보다 매우 좋았고, 데이터의 크기를 크게 할 수록 성능이 더 좋아지는 것을 알 수 있음
나머지 실험들의 결과는 생략하였습니다.
원래 ELMo or GP-1 같은 경우 Language Model만 Pre-training에 사용되었었는데, LM + NSP를 했울 때 얼마만큼의 효과가 있는지를 알아보기 위해 실험을 진행함
- : LM + NSP한 모형
- No NSP: LM만 있는 모형
-> SQuAD(F1)와 MNLI-m(Acc)에서 NSP를 제외했을 때 성능이 감소하는 것을 확인할 수 있음
위의 그림의 결과를 꼭 보길 소망합니다!
마지막 4개의 Hidden Vectors를 Concat or Weighted Sum을 했을 때, Fine-tuning을 한 것과 비슷한 성능이 보였다.
MLM, NSP 등 간단한 intution idea로 NLP 많은 분야에 SOTA를 달성하였다.
본 논문은 현재까지 많은 Model에 영향을 주었고, Bidirectional Architecture로 일반화 시켰다.
- 저자가 뭘 해내고 싶어 했는가?
- 이 연구의 접근 방식에서 중요한 요소는 무엇인가?
- 어느 프로젝트에 적용할 수 있는가?
- 참고하고 싶은 다른 레퍼런스에는 어떤 것이 있는가?
- 느낀점은?
5-3.Feature-based Approach with Bert
에서 마지막 4개의 Hidden vectors를 concat or weighted sum을 했울 때, Fine-tuning한 것과 비슷한 성능이 도출했던게 정말 신기했다. 많은 학습을 거친 n개의 vector끼리의 결합 및 concat은 성능이 좋아진다는 것을 알게 되었다.
- https://www.youtube.com/watch?v=IwtexRHoWG0, 고려대학교 DSBA 연구실
- https://bamigu.tistory.com/5, LLM이란?
- https://hyunsooworld.tistory.com/entry/%EC%B5%9C%EB%8C%80%ED%95%9C-%EC%9E%90%EC%84%B8%ED%95%98%EA%B2%8C-%EC%84%A4%EB%AA%85%ED%95%9C-%EB%85%BC%EB%AC%B8%EB%A6%AC%EB%B7%B0-BERT-Pre-training-of-Deep-Bidirectional-Transformers-for-Language-Understanding-1#4._Experiments
- https://mino-park7.github.io/nlp/2018/12/12/bert-%EB%85%BC%EB%AC%B8%EC%A0%95%EB%A6%AC/?fbclid=IwAR3S-8iLWEVG6FGUVxoYdwQyA-zG0GpOUzVEsFBd0ARFg4eFXqCyGLznu7w
- https://cpm0722.github.io/paper-review/bert-pre-training-of-deep-bidirectional-transformers-for-language-understanding
- https://lsjsj92.tistory.com/618