GPT: Generative Pre-Training of a Language Model

- unlabeled dataset이 labeled dataset보다 훨씬 많기에 이를 잘 활용하면 지도학습 task에 좋은 성능을 낼 수 있다.

- unlabeled text를 사전에 미리 활용하고, 그 뒤에 labeled text를 활용하자.

- unlabel 단어로부터 word-level 이상의 정보를 활용하는 것은 매우 chellenge(1- 목적 함수가 효과적인지 모르기에, 2-transfer learning을 하기 위한 효과적인 방법의 수렴이 없다.)

 

ELMo vs GPT

- ELMo는 forward와 backward의 양방향 학습을 거치고 output을 선형결합하여 사용

- GPT는 Backward를 쓰지 않고 forward에 대해서도 masking한 것을 사용(Transformer의 decoding block쪽만 사용)

-> GPT Unsupervised pre-training의 목적

Θ : parameter

P : conditional probability modeled using parameter

k : size of context window

ui-1, ui-2, ... ui-k -> ui를 최대화하는 것이 목적함수.

* log likelihood : 확률(밀도) 값이 likelihood, 즉 모델이 데이터를 얼마나 잘 설명하는지 수치화 하는 척도. 하지만 확률들은 곱하면 underflow 현상이 일어날 수 있어 이를 방지하기 위해 log를 취해 곱을 합으로 변경.

 

GPT의 idea (구조)

- transformer의 decoder block만 올려 쌓는 구조. encoder나 encoder-decoder attention 사용 안 함.

- token embedding matrix와 the context vector of tokens를 곱한 후 position embedding matrix를 더함.

- h(l-1)의 transformer_block을 거치고 hl을 output으로. 전 단계의 hidden state를 block을 거치면서 갱신

- 마지막으로 n번째의 hidden state와 token embedding matrix를 transpose한 것을 곱함으로써, 그 다음 토큰이 무엇인지 예측

 

GPT의 Decoder block

- 정보가 주어졌을 때, 해당하는 이전 토큰들만 사용 (모든 token을 사용하는 self-attention이 아닌, 해당 토큰 뒤 토큰들은 masking을 씌워서 활용하지 못 하도록 함)

- encoder-decoder self-attention은 사용하지 않음.

- masked self-attention -> feed forward neural network의 구조. block을 몇 개 쌓느냐는 하이퍼 파라미터.

 

Supervised fine-tuning

- y라는 label이 주어진 토큰들의 sequence(x1, x2, ... xn)가 주어진다면

- final transformer block의 activation hl*m을 구함 -> linear output layer에 넣어 예측을 하도록 함.

- 이 확률을 최대화하는 것이 목적함수(주어져있는 sequence에 따라 정답 label이 무엇인지 확률값을 최대화)

- L1(U) : unsupervised learning corpus에 대해 pre-training

- C : supervised learning의 corpus

- supervised learning의 목적함수(L2) + 우리가 보유하고 있는 LM 용 supervised learning을 함께 update 하게 되면

-> (1) supervised model에 대한 일반화가 향상, (2) 학습속도가 빨라짐.

정리 : unsupervised learning용 L1 model을 학습하고, task specific한(labeled) data가 주어지면 해당하는 model에 대한 Language model(L1) fine-tuning과 supervised-learning에 해당하는 목적함수를 함께 학습하면 더 좋은 성능이 일어남.

 

Task-specific input transformations

- GPT의 input은 task에 따라 특정 구조를 가지고 있음.

- Classification : text를 transformer를 거쳐 나온 output을 선형결합

 - Entailment : Premise [Delim] Hypothesis -> transformer(output 1개) -> linear

- Similarity : 문장 2개를 순서를 바꿔서, 각각 transformer를 거쳐 output을 concat 후 linear

- Multiple choice : context와 answer에 대한 조합들을 n개의 transformer를 거쳐 linear 후, 결과를 softmax.

 

Experiments

- pre-training dataset : BookCorpus

- '' dataset2 : 1 Billion Word Language Model Benchmark

- Supervised learning에 대한 datasets

- 대부분의 task, datasets의 성능을 개선함.

- dataset이 크면 supervised corpus에 해당하는 Language model 목적함수를 사용하는 것이 도움이 됨.

- dataset이 작으면 language model을 사용하지 않는 게, task specific한 L.M을 fine-tuning하지 않는 것이 유리

728x90
반응형

'딥러닝 > 자연어처리' 카테고리의 다른 글

[Transformer 모델 구조 분석] Attention Is All You Need  (0) 2023.02.20
[NLP] GPT-2 논문리뷰  (0) 2023.01.16
[NLP] Bert 논문 리뷰  (0) 2023.01.13
[NLP] Transformer 논문 리뷰  (0) 2023.01.03
[NLP] seq2seq Learning  (0) 2023.01.03
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 라이프코리아트위터 공유하기
  • shared
  • 카카오스토리 공유하기