본문 바로가기
딥러닝(Deep Learning)/D&A Conference Session

[D&A Conference Session] GPT 이해하기

by rahites 2022. 8. 8.

GPT (Generative Pre-Training of a Language Model)

 

< 참고자료 >

https://jalammar.github.io/illustrated-gpt2/?fbclid=IwAR1XE7gqs_m6oK__ugnIZbQRj-xjhBIMY24utFQs9fLjGw8-spau0BaKL6M 

 

The Illustrated GPT-2 (Visualizing Transformer Language Models)

Discussions: Hacker News (64 points, 3 comments), Reddit r/MachineLearning (219 points, 18 comments) Translations: Simplified Chinese, French, Korean, Russian This year, we saw a dazzling application of machine learning. The OpenAI GPT-2 exhibited impressi

jalammar.github.io

https://www.youtube.com/watch?v=o_Wl29aW5XM 

- 현재 가지고 있는 data에는 Labeled dataset보다는 Unlabeled dataset에 더 많은 words를 가지고 있다. 

- 따라서 지금까지는 y = f(x)로 학습을 시켰는데 unlabeled data로 학습을 잘 시키면 더 좋은 성능을 낼 것이라는 아이디어

 

 

Motivation

대량의 Unlabeled Text Corpora로 학습을 시켜 pre-trained model을 만든 후 결과를 알고 싶은 Labeled Text Corpora를 특정 task에서 fine-tuning을 사용하면 좋은 성능이 나올 것이다!

 

 

Unlabeled text에서 단어 수준 이상의 정보를 사용하는 것은 어렵다

- 어떤 목적함수가 효과적인지 알기 어렵기 때문

- 학습이 되었다고 할지라도 어떤 방식으로 전이학습이 이루어져야 효과적인지에 대한 합의도 없다.

 

 

ELMo vs GPT

 

ELMO(Embeddings from Language Model) 

- 2018년에 제안, 순방향과 역방향 RNN을 모두 활용하는 biLM(Bidirectional Language Model)으로 양방향 RNN과는 다르게 순방향 언어모델과 역방향 언어모델을 별개의 모델로 보고 학습한다. 

 

- ELMo가 임베딩 벡터를 얻는 과정

1. 각 층의 출력값을 연결(concatenate)한다.

2. 각 층의 출력값 별로 가중치를 준다.

3. 각 층의 출력값을 모두 더한다. ( 가중합, Weighted Sum )

4. 벡터의 크기를 결정하는 스칼라 매개변수를 곱한다. -> ELMo Representation

 

- ELMo 표현을 기존의 임베딩 벡터와 함께 사용할 수 있다.- forward language model과 backward language model이 target 값들을 예측하면, 예측 값들과 각각의 layer에서 나오는 노드들의 선형결합으로서 벡터를 사용

https://wikidocs.net/33930

 

09) 엘모(Embeddings from Language Model, ELMo)

![](https://wikidocs.net/images/page/33930/elmo_DSHQjZD.png) 논문 링크 : https://aclweb.org/antho ...

wikidocs.net

 

GPT

- backward를 사용하지 않고 forward 또한 masking한 것을 사용한다.

- Transformer의 Decoding 부분만 사용한다. ( multi-layer Transformer decoder )

- 따라서  Encoder와 Decoder 사이의 Multi-Head Attention은 존재하지 않고 Decoder 부분의 Masked Multi-Head Attention만을 사용한다. 

Transformer의 Decoder를 쌓아올린 구조

* Transformer Encoder와 Decoder의 차이점 : Encoder는 모든 시퀀스 데이터를 한번에 사용, Decoder는 시퀀스를 생성할 때 차례로 생성하기 위해 처리중인 앞쪽 단어만을 사용

 

< Transformer 정리 > 

https://hyen4110.tistory.com/40

 

[NLP] Transformer(트랜스포머)_② Deep dive

이전 글에서 Transformer(트랜스포머)가 왜 등장하였는지 그리고 어떤 특징을 가지고있는지 얕게 살펴보았습니다. 2021.05.17 - [자연어처리(NLP)] - [NLP] Transformer(트랜스포머)_1) Warm up [NLP] Transformer..

hyen4110.tistory.com

 

- 첫번째 hidden state $h_0$ : $UW_e + W_P$( $W_e$ : token embedding matrix, $W_p$  : position embedding matrix ) 

- l번째 hidden state $h_l$ : $h_{l-1}$번째를 transformer_block에 통과시킨 결과- 위 과정을 n번 반복한 후 softmax함수를 통해 다음 토큰을 예측하는 것이 GPT의 Unsupervised pre-training

 

- 내가 processing하려는 토큰 다음의 토큰들은 사용하지 않는 Masked Self-Attention을 사용

pre-training 이후에는 원하는 label dataset에 대해 supervised fine-tuning을 진행하자!!

 

label data에서 $x^1, x^2 ... x^m$인 m개의 토큰으로 이루어진 시퀀스와 정답  y가 주어졌을 때, Decoder(GPT의 Unsupervised learning의 마지막 hidden state)의 m번째 단어에 해당하는 hidden state block을 가져다가 linear layer을 씌우고 softmax 함수를 적용시켜서 확률값을 계산한 값이 Supervised learning의 목적함수가 된다. ( 최대화 )

 

ELMo에서는 language model을 만들고 hidden state vector를 고정시킨 상태에서 가중치만을 고정해 적절한 워드 벡터를 찾지만, GPT의 경우에는 supervised learning에 해당하는 목적 함수뿐 아니라 Unsupervised learning을 진행했던 모델에 대한 업데이트를 같이 진행한다. ( supervised model에 generalization을 향상, Convergence 가속 )

 

$L_1(U)$로 language model pre-training -> label data로 $L_1$ fine-tuning과 supervised learning 목적 함수를 결합시 좋은 성능


** 세줄 요약 **

1. Pre-training -> Fine tuning 방식의 NLP 모델 제안

2. 많은 Unlabeled data를 Pre-training하여 long-range dependency를 Capture

3. Unsupervised learning을 통해 성능을 올렸고 다양한 Task에서 우수성을 입증

 

댓글