티스토리 뷰

728x90

[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으로만 해야하는 것이 아쉽다.) -> 직접 모델들 다 뜯어서 구조도 변경해볼려고 했는데, 어쩔 수 없게 되었다.


댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/04   »
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
글 보관함