오늘은 생성 모델 GPT에 대한 강의를 정리해 보도록 하겠다.
0. GPT 등장
GPT 모델은 2018년에 OpenAI에서 "Improving Language Understanding by Generative Pre-Training"이라는 논문에서 처음 등장하였다.
일반적으로 자연어처리에서 특정 작업을 진행하기 위한 데이터셋이 부족하기 때문에 기존에도 unsupervised learning이나, semi-supervised learning 같이 라벨이 없는 비정형 텍스트를 사용하는 방법들이 계속 제안되었었다. 또한 ELMo 같이 LM을 기반으로 사전학습을 거친 모델들이 좋은 성능을 보인다는 것이 알려져 있었다. 그러나 RNN기반의 모델들은 구조적 한계가 있었다.
그래서 GPT는 Transformer이 등장한 이후, Transformer구조를 활용하여 pre-training 기반의 언어모델을 만들고자 하였고, unsupervised learning 기반으로 하기 때문에 별도의 input text가 존재하지 않아 Transformer의 Decoder로만 구성했다.
최종적으로 GPT는Transformer Decoder을 활용하여 unlabeled data로부터 pretrain을 진행하고, 특정 task에 대하여 전이학습을 한 모델로, `unsupervised pre-training`과 `supervised fine-tuning` 기법을 사용하였다.
이때 단순 Transformer Decoder을 사용한 것은 아니고, multi layer Transformer decoder을 사용하였는데, 입력 문맥 token에 multi head self attention을 적용한 뒤, 목표 token에 대한 출력분포를 얻기 위해 position wise feedforward layer을 적용하였다.
1. Unsupervised pre-training
`Unsupervised pre-training`은 대규모 corpus에서 unsupervised learning으로 언어 모델을 학습하는 것이다. superi
token에 unsupervised text $U=u_1,u_2,...,u_n$이 주어질 때 likelihood를 최대화하도록 표준언어모델링 목적함수를 사용한다. 표준언어모델링 목적함수란 일반적으로 사용되는 목적함수로 이전 단어들을 통해 다음단어가 나올 확률을 예측하는 것을 말한다. 디코더 계산은 masked multi-head self attention을 적용한 후, 목표 token에 대한 확률분포를 얻기 위해 position-wise feedforward layer을 적용한다.
자세하게 과정을 적어보자면,
우선 input token Matrix $U$에 embedding Matrix $W_e$를 곱한 후, Positional embedding $W_p$를 더해 Masked self-Attention을 위한 input$h_0$을 만들어준다.
$$ h_0=UW_e+W_p$$
GPT는 n(12)개의 decoder가 stack 되어 있는 형태로, l번째 decoder block의 hidden state$h_l$은 이전 decoder block의 hidden state$h_{l-1}$를 입력으로 받아 계산된다.
$$ h_l=transformerblock(h_{l−1})∀i∈[1,n]$$
마지막 n번째 decoder block의 hidden state output$h_n$에 다시 transposed embedding Matrix$W_e^T$를 곱하여 softmax 함수를 적용하면 output probability$P(u)$를 계산할 수 있다.
$$ P(u)=softmax(h_n W_e^T)$$
위의 과정으로 모델링한 조건부 확률 $P(u)$를 통해 앞서 말씀드린$L_1(u)$를 최대화하며 사전학습이 진행된다.
2. Supervised fine-tuning
파인 튜닝 단계에서는 input token sequence $(\{x_1,...,x_m\}$)과 label $(y$)로 구성된 target task의 labeled dataset $(C$)를 통해 superviesed 학습이 진행된다.
우선 데이터셋$(C$)의 input token에 대한 GPT의 마지막 decoder block hidden state $(h_l^m$) output을 얻기 위해 pretrained model에 input token들을 통과시킨다.
다음으로 파라미터 $(W_y$)를 갖는 하나의 linear layer에 $(h_l^m$)을 통과시켜 선형변환을 진행하고 softmax $(P(y|x^1,...,x^m)$)를 계산한다. $$P(y|x^1,...,x^m) = softmax(h_l^mW_y)$$
이 결과로 token probability distribution을 얻을 수 있고, 따라서 label $(y$)에 대해서 지도학습을 진행할 수 있다.
지도학습의 목적함수 Likelihood \(L_2(C)\) 또한 태스크에 맞는 조건부확률 $(P$)를 통해 계산한다.
$$L_2(C) = \sum_{(x,y)} logP(y|x^1,...,x^m)$$
또한 unsupervised pre-training의 목적함수 $(L_1$)을 supervised fine-tuning을 위한 보조 함수로 사용하는데 이는 일반화와 수렴속도를 가속화하기 위해 사용하였다. $$L_3(C) = L_2(C) + \lambda * L_1(C)$$
이 방법은 가중치의 수렴을 도우며, 지도학습 모델의 일반화 성능을 향상한다고 합니다.
3. Task-specific input transformations
사전학습된 pretrain모델을 다양한 task에 적용 가능하기 위해 각 task의 input을 pre-train 모델과 맞춰주는 작업을 진행한다. 아래의 Classification, Entailment, Similarity, QA(Multiple choice)를 예로 들면, 각각의 task에 대해서 약간의 입, 출력 구조 변화만으로도 좋은 성능을 보였다고 한다.
4. GPT 모델의 의의
1) 모델구조의 변형이 거의 없음
이전 사전학습 모델들은 파인튜닝 시 모델 구조를 변경해야 하는 문제점이 있었으나, GPT-1은 모델 구조를 전혀 안 바꾸고 입력만 바꿈.
2) 추가되는 파라미터의 수가 매우 적음
모델 구조를 변형하지 않고, 마지막에 linear layer을 추가하는 아주 간단한 작업만 수행
결과적으로 총 12개의 NLP task에서 총 9개에서 SOTA를 달성하였으며, 각 코퍼스마다 태스크에 맞게 설계된 모델들이 존재함에도 이를 뛰어넘거나 비등한 성능을 보여줬다. 이를 통해 사전학습에서 언어의 일반적인 특성을 배운것이 매우 유효하다는 것을 증명하였다.
'ML & DL > NLP' 카테고리의 다른 글
한 권으로 끝내는 랭체인 노트 따라하기 Day 0 (0) | 2024.12.20 |
---|---|
[패캠/NLP] BERT (0) | 2023.12.28 |
[패캠/NLP] Transformer: 트랜스포머 (0) | 2023.12.26 |
[패캠/NLP] 문장 임베딩 ELMo (1) | 2023.12.22 |
[패캠/NLP] 문장 임베딩 (1) | 2023.12.22 |