데이터과학/자연어처리

[자연어처리][paper review] GPT-1 : Improving Language Understanding by Generative Pre-Training

섭구
반응형

많은 딥러닝 모델들은 지도학습 형태로 이루어져 있으며, 일반화를 위한 상당한 양의 labeled data를 필요로 합니다. 따라서 labeled data의 부족은 지도학습 기반 딥러닝 모델의 적용을 어렵게 하는 요인 중 하나입니다.

이러한 경우 추가적인 annotation을 통해 더 많은 labeled data를 확보하는 것은 가장 일반적인 해결방안이 될 수 있습니다.

하지만, 수작업이 대부분인 annotation 작업은 경우에 따라 상당한 노동력과 자본이 따르게 됩니다. 또한 같은 문제상황이 여러가지 task에서 반복될 경우 경제적 손실은 계속해서 쌓여갈 것 입니다.

 

따라서 이러한 경우, unlabeled data로 부터 직접 정보를 추출할 수 있는 준지도(semi-supervised), 비지도(unsupervised) 모델은 생각보다 더 큰 가치를 창출할 수 있습니다.

또한 경우에 따라서는 충분한 labeled data가 존재함에도 불구하고, unlabeled data로 부터 좋은 representation을 학습하는 것이 추가적인 성능 향상을 불러오기도 합니다.

 

 

raw text data

지도학습을 위한 데이터 부족 문제는 자연어 처리(Natural language processing,NLP) 분야에도 동일하게 적용됩니다.

자연어 처리를 위한 세상의 데이터들은 대부분이 unstructured(raw) text 이며, 각각의 task 를 위한 많은 양의 labeled text data를 필요로 합니다. 따라서 준지도, 비지도 학습은 자연어 처리 분야에서도 지도학습의 부담을 크게 덜어줄 수 있는 대안이 될 수 있습니다.

 

하지만 단어 수준 이상의 unlabeled text data를 활용하여 학습하는 것은 다음 두가지의 문제가 존재합니다

1. 어떠한 목적함수가 unlabeled text data를 학습하기 위해 가장 효과적인지 확실하게 밝혀지지 않았습니다.

2. unlabeled text data를 활용하여 사전학습을 하여도, target-task로 transfer 하기 위한 가장 효과적인 방법이 밝혀져 있지 않습니다.

이러한 불확실성들은 효과적인 준지도, 비지도 NLP model의 개발을 저해하고 있습니다.

 

 

1. GPT

본 논문의 저자들은 unlabeled text data의 활용 문제를 개선하기 위한  Semi-supervised language model, GPT를 제안합니다.

GPT는 기본적으로 Transformer 구조로 이루어져 있어, text sequence의 long-term dependency를 다룰 수 있습니다.

또한 GPT는 두가지 학습단계 1)unsupervised pre-training ,2)supervised fine-tuning를 통해 최소한의 구조 변화로 Target task에 transfer 가능한 언어 모델입니다. 

 

Stage 1. unsupervised pre-training

첫번째 학습단계 unsupervised pre-training은 unlabeled token \(u = \{u_1,...,u_n\}\)를 통해 일반적인 언어모델의 목적함수 Likelihood \(L_1(u)\)를 최대화 하는 과정입니다.

$$L_1(u) = \sum_i logP(u_i|u_{i-k},...,u_{i-1};\theta)$$

\(k\)는 context window의 크기이며, 조건부 확률 P는 \(\theta\)를 parameter로 갖는 신경망으로 모델링됩니다.

 

GPT 

또한 GPT는 Transformer의 decoder block만을 사용하여 언어 모델을 구성합니다.

Transformer에 대한 자세한 설명은 아래의 리뷰를 참고 부탁드립니다.

 

[paper review] Transformer : Attention is all you need

본 논문은 2017년 발표된 논문으로, 당시에는 RNN, LSTM, GRU를 사용한 복잡한 모델들이 Machine translation과 같은 Sequence Modeling 분야에서 주를 이루고 있었습니다. 이러한 방법들은 순환 신경망을 활용

supkoon.tistory.com

 

기존의 decoder block은 Encoder-Decoder Attention을 포함하고 있습니다. 하지만 Encoder가 제거된 GPT의 Transformer는 Encoder-Decoder Attention이 필요 없습니다. 따라서 GPT의 Transformer(decoder block)은 Encoder-Decoder Attention이 제거된 Transformer Decoder의 variation 구조라고 할 수 있습니다.

이 외의 과정은 기존의 Transformer Decoder block과 동일하게 계산됩니다.

 

우선 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개의 decoder가 stack 되어 있는 형태입니다. 본 논문에서는 12개의 decoder block을 사용하였습니다.

l번째 decoder block의 hidden state \(h_l\)은 이전 decoder block의 hidden state \(h_{l-1}\)를 입력으로 받아 계산됩니다.

$$h_l = transformer\_block(h_{l-1}) \forall i \in [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_nW_e^T)$$

위의 과정으로 모델링한 조건부 확률 P(u)를 통해 앞서 말씀드린 \(L_1(u)\)를 최대화하며 사전학습이 진행됩니다.

$$L_1(u) = \sum_i logP(u_i|u_{i-k},...,u_{i-1};\theta)$$

 

Stage 2. supervised fine-tuning

supervised fine-tuning은 pre-training이 끝난 후, target task에 맞게 parameter를 조정하는 단계 입니다.

input token sequence \(\{x_1,...,x_m\}\)과 label \(y\)로 구성된 target task의 labeled dataset \(C\)를 통해 학습이 진행됩니다.

우선 \(C\)의 input token에 대한 GPT의 마지막 decoder block hidden state \(h_l^m\)을 얻기위해 앞선 단계에서 얻은 pretrained model에 input token들을 통과시킵니다.

 

그리고 파라미터 \(W_y\)를 갖는 하나의 linear layer에  \(h_l^m\)을 통과시켜 softmax probability \(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을 위한 auxiliary objective로서 추가하였습니다. 이 때 기존의 \(L_1\)은 unlabeled dataset \(U\)에 대한 \(L_1(U)\)로 계산되었지만, auxiliary objective로서 \(L_1\)은 Labeled dataset C에 대해 \(L_1(C)\)로 계산됩니다. \(\lambda\)는 \(L_1(C)\)의 반영 정도를 정하기 위한 weight hyper parameter  입니다.

$$L_3(C) = L_2(C) + \lambda * L_1(C)$$

이 방법은 가중치의 수렴을 도우며, 지도학습 모델의 일반화 성능을 향상시킨다고 합니다.

 

 

Task-specific input transformations

GPT는 최소한의 구조 변화로 Target task에 적용 가능한 언어 모델입니다. 

아래의 Classification, Entailment, Similarity, QA(Multiple choice)를 예로 들면, 각각의 task에 대해서 약간의 입,출력 구조 변화만으로도 좋은 성능을 보여 줄 수 있습니다.

Task-specific input transformation

1)Classification

단순한 Classification에 대해서는 기존의 방법 그대로 fine-tuning을 진행하면 됩니다.

2)Entailment

Entailment는 전제 Premise를 통해 가설 Hypothesis의 참, 거짓을 밝히는 task 입니다.

따라서 Delimeter로 나누어진 Premise, Hypothesis token을 concatenate 하여 fine-tuning을 진행하면 됩니다.

3)SImilarity

SImilarity task는 문장간의 순서가 존재하지 않습니다. 따라서 가능한 두가지의 순서 [(문장 1,문장 2),(문장 2,문장 1)]를 모두 고려해야 합니다. 두가지 경우를 input 하여 독립적으로 얻은 결과 \(h_l^m\)을 최종적으로 element-wise addition한 결과로 fine-tuning을 진행합니다.

4)QA, Multiple choice

QA task는 기본적으로 context document \(z\)에 대한 question \(q\)가 제시됩니다. 그리고 주어진 상황에서 가능한 다양한 Answer \(\{a_k\}\)가 존재합니다. 따라서 QA task는 가능한 다양한 답변을 delimeter \($\)와 함께 \([z;q;$;a_k]\)로 concatenate하여 input합니다. 각각의 경우는 독립적으로 학습되며, 최종적으로 softmax 함수를 통해 답변의 distribution을 계산합니다.

 

 

2.results

저자들은 GPT를 통한 semi-supervised 방법의 효과를 증명하기 위해

Natural language inference, QA, Similarity, Classification 의 다양한 benchmark dataset을 사용하여 실험을 진행하였습니다.

Datasets table

result 1.

Natural language inference에서는 거의 대부분의 dataset에서 GPT가 큰 차이로 우수한 성능을 보였습니다. (x3)는 앙상블 모델을 의미합니다.

유일하게 저조한 성능을 보인 RTE dataset은 크기가 작은 데이터셋 입니다. 따라서 NLI task의 fine tuning은 상대적으로 데이터셋이 클수록 좋은 성능을 보임을 알 수 있습니다.

 

result 2.

두번째 실험은 QA task에 대한 성능비교 입니다.

모든 데이터셋에서 큰차이로 GPT가 우수한 성능을 보였습니다. 

 

result 3.

세번째 실험은 Classification과 Similarity task 입니다.

역시 대부분의 실험에서 GPT가 우수한 성능을 보였는데, Attention을 더한 ELMo model에 비해서도 특히 좋은 성능을 보였다는 점이 주목할만 합니다.

 

result 4.

왼쪽 그래프는 unsupervised pre-training에서 transformer layer 수에 따른 결과비교입니다.

layer 수에 따른 유의미한 성능 향상이 있음을 알 수 있습니다.

 

오른쪽 그래프는 Transformer 유무와 pre-training에 따른 각각 task의 Zero-shot 성능 비교입니다. 실선은 Transformer를 사용한 모델이며, 점선은 LSTM을 사용한 모델입니다.

대부분의 task가 Transformer를 사용했을 때 더 좋은 성능을 보였으며, pretraining을 거듭할수록 그 차이는 커졌습니다.

특히 Zero-shot에 대한 LSTM 성능의 분산이 더 컸다는 결과를 통해, pre-training이 전반적인 일반화 능력을 제공한다는 것을 알 수 있습니다.

 

result 5.

세가지 조건변화(Ablation)에 따른 결과 분석입니다.

1)Transformer vs LSTM

우선 \(L_1(C)\) auxiliary objective는 NLI, QQP task에 도움을 주었으며, 특히 큰 데이터셋에서 성능개선을 가져왔습니다.

2)with / without \(L_1(C)\) auxiliary objective

LSTM에 비해서 Transformer를 사용한 모델은 평균 5.6의 성능 개선을 보여줬습니다.

3)with / without pre-training 

마지막으로 사전학습의 유,무에 대한 실험에서는 사전학습이 큰 성능개선(14.8%)을 가져온다는 것을 확인할 수 있었습니다.

 

 

마무리

GPT는 semi-supervised language model로서, labeled data의 부족으로 어려움을 겪고있는 많은 Supervised NLP task를 위한 새로운 해법을 제시하였습니다. 특히 두 단계의 학습과정과 간단한 구조변화 만으로 큰 성능개선을 가져올 수 있는 강력한 언어 모델임을 실험을 통해 알 수 있었습니다.

GPT는 ELMo와는 같은 해에 발표된 논문입니다. 하지만 두 방법론은 각각 Transformer와 biLSTM을 사용한다는 점에서 차이점을 보입니다. 분명히 성능차이는 존재하지면 두 방법 모두 흥미롭고 직관적이며 다양한 실험을 통해 잘 검증된 논문이라는 생각이 들었습니다.

GPT는 현재 GPT-2를 넘어 GPT-3까지 발표되며 뛰어난 성능을 바탕으로 지속적으로 연구되고 있습니다.

다음 리뷰는 Bert에 대해 진행해보도록 하겠습니다.

 

 

반응형