티스토리 뷰
[Day 20] Self-supervised Pre-training Models
1. 강의 복습 내용
Self-supervised Pre-training Models
1. GPT-1
- Transformer의 Encoder, Decoder 구조에서 Encoder를 뺀 구조 (Masked Multi-Head Self-Attention)
- 이전 단어들로 다음 단어가 무엇인지 맞추는 과정에서 Pre-train 하였다.
- 문장 시작부터 순차적으로 계산하므로 unidirectional (일방향) 이다.
- 문장 생성에 강점을 가진다. (Decoder)
![]() |
![]() |
2. BERT
- Transformer의 Encoder, Decoder 구조에서 Decoder를 뺀 구조 (Encoder, Multi-Head Self-Attention)
- 마스크 언어 모델 : 문장 중간에 빈칸(마스킹)을 넣고 해당 빈칸에 어떤 단어가 적절한지 맞추는 과정에서 Pre-train 하였다. (MLM)
- 또 두 문장 사이의 관계를 학습한다. (NSP) -> QA Task와 NLI Task 향상
- Transformoer의 Encoder에서 Self-Attention과 같이 순서에 관계 없이 bidirectional (양방향) 이다.
- 문장의 의미를 도출 하는 것에 강점을 가진다. (Encoder)
![]() |
![]() |
3. BERT : Input Representation
- BERT는 기존의 Transformer 모델의 입력인 Token Embeddings, Position Embeddings에 Segment Embeddings를 추가하였다.
- 이는 순서를 고려하지 않고, 앞 뒤 정보를 통해 빈칸(마스킹)을 추론하기 때문에 Sequence를 더욱 쉽게 구별하기 위한 별도의 장치이다.
- GPT는 순차적으로 단어가 입력되고 추론하기 때문에 [SEP] 토큰만으로도 구별 가능하다.

4. GPT의 발전


- GPT는 GPT-3으로 갈수록 모델 파라미터수가 비약적으로 증가하였다.
- 모델 크기의 증가는 언어모델의 품질의 증가와 각종 다운스트림 태스크의 성능 개선에 큰 도움이 된다고 한다.
*) 다운스트림 태스크 (Downstream Task)란?
최근 NLP 분야에서는 언어모델을 Pre-train을 이용해 학습을 진행하고 그 원하고자 하는 태스크를 Fine-Tuning (파인튜닝) 방식을 통해 모델을 업데이트하는 방식을 사용한다. 이때 그 원하고자 하는 태스크(Task)를 다운스트림 태스크라고 한다.
5. 최근 트렌드
- 본질적으로 Transformer 모델은 입력 시퀀스 사이의 관계를 모두 고려 (Self-Attention)하기 때문에, 계산량이 많은 편이다.
- 따라서 GPT처럼 모델의 사이즈를 키우는 방법에 반면, 별개로 모델의 성능을 유지하되 모델의 크기를 줄이려는 시도도 계속 되고 있다.
- 때문에, 계산량을 줄이거나 계산 대상 시퀀스 범위를 넓히려는 연구도 활발히 일어나고 있다.
- 또한 트랜스포머 구조를 벗어나 새로운 언어구조의 모델도 고안되고 있다.
1) Electra

- 트랜스포머 아키텍쳐에서 벗어나, GAN 방식을 차용한 언어모델 일렉트라(Electra)가 대표적이다.
2) ALBERT
- ALBERT는 모델의 크기를 과하게 키웠을 때, 메모리가 부족하거나 학습 시간이 너무 오래걸리는 문제를 지적하였다.

- ALBERT에서는 이같은 문제를 직접 실험을 통해 나타내었다.
- BERT-Large 모델의 경우에는 시퀀스의 길이가 384가 되면 Training은 물론 한문장도 Inference 할 수 없다.
- 또한 BERT 모델은 트랜스포머 아키텍쳐를 기반으로 하기 때문에, 막대한 연산량도 무시할 수 없다.
- 따라서 ALBERT는 이 같은 문제점을 보완하여 성능은 높이고 모델의 크기는 줄이는 방법을 제시하였다.
-) Factorized embedding parameterization
BERT에서는 Input Embedding Size(E)와 Hidden Size(H)가 같다.
하지만 ALBERT는 E의 사이즈를 H보다 작게 설정하여 Parameter수를 줄인다.

-) Cross-layer parameter sharing
Transformer Layer간 같은 Parameter를 공유하며 사용한다.
-) Sentence order prediction (SOP)
SOP의 학습 데이터는 실제 연속인 두 문장(Positive Example)과 두 문장의 순서를 앞뒤로 바꾼 것(Negative Example)으로 구성되고 문장의 순서가 옳은지 여부를 예측하는 방식으로 학습한다.
이는 NSP의 방식보다 두문장의 연관관계를 보다 더 잘 학습할 것이며, 모델의 크기를 줄이면서도 모델의 성능을 높일 수 있게 도와준다.
3) DistilBert
- Large Model(Teacher Model)로 부터 Compact Model(Student Model)을 만들어내는 학습이다.
- Student 모델은 전적으로 Teacher Model의 ouput을 그대로 사용한다.
- Student 모델을 그냥 학습시키는 것보다 Teacher Model로 부터 받아온 Output을 가지고 학습시키는 것이 의미가 있는 이유는, 예를 들어 Classification 같은 경우에는 Teacher Model의 확률 분포를 가져와 학습 할 수 있기 때문이다.
참조 : https://ratsgo.github.io/nlpbook/docs/language_model/bert_gpt/
2. 피어 세션
1. 강의에 대한 토의
GPT와 BERT는 왜 Transformer의 Encoder-Decoder중에 하나씩만을 차용하였을까? -> 사전학습방법의 차이
파인튜닝의 과정
사전학습된 모델과 다운스트림 태스크를 해결하기위한 커스텀 레이어를 연결하고 사전학습모델엔 with no_grad()를 걸어놓고 학습하면 더 빠르지 않을까? -> Learning Rate를 비록 아주 작은 값을 부여하지만, 이것이 파인튜닝이 일어나는 과정이다. with no_grad()를 걸어두고 커스텀 레이어만 학습시킨다면, 학습이 잘 되지 않을 것이다.
GPT와 BERT는 각각 Encoder와 Decoder중 하나씩을 뺸 구조인데, 하나의 구조로도 다음 단어 예측이나 번역모델로써 역할을 할 수 있는 이유가 무엇일까? -> 그렇다면 전날에 배운 트랜스포머의 Encoder-Decoder의 쌍구조는 쓸데없이 복잡하기만한 구조아닌가?
3. Conclusion
오늘은 Pre-trained 모델을 통해 Private Kaggle 과제를 수행하는 것이 목표이다.
본래 크기가 큰 사전학습된 모델이므로, 첫번째 제출기한을 맞추기 위해 단일 모델로 1에폭만 돌려 결과만 내었고, 현재 앙상블을 통해 충분히 학습시켜 다시 제출할 예정이다.
일요일까지 리더보드에 점수를 업데이트 시킬 수 있으므로, 오늘 배운 내용을 토대로 마음 껏 해볼 예정이다.
(크기가 큰 모델이라 자체 로컬 학습컴퓨터에서는 Memory Out이 나버려 어쩔 수 없이 Colab으로만 해야하는 것이 아쉽다.) -> 직접 모델들 다 뜯어서 구조도 변경해볼려고 했는데, 어쩔 수 없게 되었다.
'부스트캠프 AI Tech > 학습정리' 카테고리의 다른 글
[Day 22] 페이지랭크 & 전파 모델 (0) | 2021.02.23 |
---|---|
[Day 21] 그래프 이론 기초 & 그래프 패턴 (0) | 2021.02.22 |
[Day 19] Transformer (0) | 2021.02.18 |
[Day 18] NLP (자연어 처리) - 3 (0) | 2021.02.17 |
[Day 17] NLP (자연어 처리) - 2 (0) | 2021.02.16 |
- Total
- Today
- Yesterday
- 브루트포스
- 동적계획법
- P-Stage
- C++
- NLP 구현
- 그리디
- AI 프로젝트
- 공공데이터
- DeepLearning
- Unet
- python
- 데이터연습
- DACON
- dfs
- ResNet
- Vision AI 경진대회
- 네트워킹데이
- 백트래킹
- 이분탐색
- 부스트캠프 AI Tech
- Data Handling
- 알고리즘
- pandas
- 백준
- cnn
- 데이터핸들링
- 프로그래머스
- 코딩테스트
- Unet 구현
- 다이나믹프로그래밍
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |