이 글은 2018년 6월 OpenAI에서 발표한 GPT 시리즈의 최초 버전인 GPT : Improving Language Understanding by Generative Pre-Training를 정리한 글이다. 요약하자면 다음과 같다.
Transformer 구조는 여러 NLP task에 유용하며, Unsupervised pre-training을 통해 충분히 많은 Language정보가 학습되어 Supervised fine-tuning시 특정 Task에 맞는 딥러닝 모델링에 들어가는 시간과 비용을 줄임과 동시에 최고 성능을 낼 수 있다. 또한 LSTM에 비해 Language modeling capability와 Structured attentional memory를 향상하여 zero-shot 성능에서 이점을 재공 할 수 있다는 가능성을 보인다.
자세한 내용을 이 글을 통해 한번 살펴보도록 하자.
- 목차 -2.1 Semi-supervised learning for NLP
1. Introduction
원본 그대로의 텍스트에서 효과적으로 학습하는 능력은 NLP에서 지도학습에 대한 의존성을 낮추는 데 있어 매우 중요하다. 대부분의 딥러닝 방법은 Labeled 된 방대한 양의 데이터를 필요로 하는데 이는 Labeled 된 데이터의 부족으로 인한 많은 범위로의 응용에 제약이 따른다. 이러한 상황에서 Unlabeled 데이터로부터 언어적 정보를 얻어낼 수 있는 모델은 비용이 많이 드는 Labeled 된 데이터를 만드는 것의 훌륭한 대안이 될 뿐만 아니라, 괜찮은 Supervised Learning 방법이 있다 하더라도 Unsupervised Learning이 더 좋을 결과를 얻기도 한다. Pre-trained word embedding이 그러한 예이다.
그러나 미분류 텍스트에서 단어 수준 정보 이상의 것을 얻는 것은 다음 두 가지 이유로 어렵다.
- 어떤 최적화 목적함수가 전이(Transfer)에 유용한 텍스트 표현(Representation)을 배우는 데 효과적인지 불분명하다.
- 학습된 Representation을 Target tesk로 효과적으로 전이하는 방법에 대한 일치된 의견이 없다. 존재하는 방법들은 복잡한 학습전략이나 부가 학습 목적함수를 더하는 등 모델 구성에 과제에 특화된(Task-specific) 변화를 주어야 한다.
이러한 불확실성은 언어처리에 대한 효과적인 준지도학습 접근법의 개발을 어렵게 한다.
이 논문에서는 비지도 사전학습(Unsupervised pre-training)과 지도 미세조정(Supervised fine-tuning)의 조합을 사용하여 언어이해 과제를 위한 준지도 학습(Semi-supervised) 접근법을 탐색한다. 목표는 약간의 조정만으로 넓은 범위의 과제에 전이 및 적용할 수 있는 범용 표현을 학습하는 것이다. 학습은 두 단계를 거치게 된다.
- 신경망 모델의 초기 parameter를 학습하기 위해 Unlabeled 데이터에 대한 언어 모델링 목적함수를 사용한다.
- 이 parameter를 연관된 Supervised objective에 해당하는 Target task에 적용한다.
모델 구성은 기계번역, 문서생성, 구문분석 등에 상당한 성능을 보이는 Transformer를 사용한다. 이 모델은 RNN 등에 비해 장거리 의존성을 다루는 데 뛰어나 더 많은 구조화된 memory를 쓸 수 있게 하고, 양한 테스크에서 최소한의 fine-tuning을 통해 transfer가 가능하게 했다. 이를 확인하기 위해 네 가지 접근법(자연어 추론, 질답, 의미 유사성, 문서 분류)에 대해 평가한다. 이러한 Task에 대한 지식이 없는 이 범용 모델은 12개 중 9개의 과제에서 state-of-the-art 결과를 보이며 선전했다.
2. Related work
2.1 Semi-supervised learning for NLP
초기의 연구들은 unlabeled data로 모델이 단어 또는 구문 수준의 통계값들을 연산하고 이를 이후 지도 학습의 특성으로 사용하는 방식을 사용했다. 지난 몇 년간 이루어진 연구들은 word2vec, GloVe와 같은 unlabeled 코퍼스를 이용한 훈련을 통해 단어 임베딩을 사용하는 방식들이 높은 성능을 낸다는 것을 입증했다. 하지만 이 연구들은 주로 단어 단위의 정보를 학습했고, 본 연구에서는 더 높은 차원의 의미를 포착해내는 방법을 시도했다.
2.2 Unsupervised pre-training
Unsupervised pre-training의 목적은 이 후 수행될 supervised learning에 좋은 초기화 포인트를 제공하는 것이다. 이전에는 이미지 분류, 회귀 문제 등에 이 방법이 사용됐었다. 후속 연구에서 Pre-training 기법은 정규화 작용을 하여 딥러닝 모델을 더 잘 일반화하는 것이 밝혀졌고, 최근의 연구에서 이 기법은 이미지 분류, 발언 인식, 기계 번역 등의 다양한 task에서 딥러닝 모델이 더 잘 훈련될 수 있게 하기 위해 사용되었다.
GPT와 가장 유사한 연구는 신경망을 언어모델링 목적함수를 사용하여 Pre-train 시키고 Target task에 맞춰 Supervised fine-tuning 하는 것이다. 그러나 이러한 방식을 적용하는 데 있어 LSTM의 사용은 예측 사이즈를 좁은 범위에 한정시킨다. 하지만 Transformer를 사용함으로써 넓은 범위에 걸친 언어적 구조와 정보를 학습할 수 있게 하였고 나아가 다양한 과제에 사용할 수 있게 되었다.
또한 Target task에 맞춘 Supervised fine-tuning에 사전학습된 언어/기계번역 모델에서 얻은 은닉 표현에 부가적으로 상당한 양의 parameter를 추가하는데, GPT는 fine-tuning시에 아주 작은 변화만을 필요로 한다.
3. Framework
학습은 크게 두가지 stage로 나뉜다.
- Language Model을 대용량 Corpus에서 Unsupervisued pre-training 한다.
- Labeld data를 사용하여 Pre-train 된 Language Model을 Supervised fine-tuning 한다.
3.1 Unsupervised pre-training
token의 비지도 말뭉치 \(\upsilon = u_1, ..., u_n\)이 주어질 때, 다음 우도를 최대화하도록 Standard language model 목적함수를 사용한다.
\(k\) : context window size
\[ L_1(\upsilon) = \sum_{i}logP(u_i|u_{i-k}, ..., u_{i-1};\Theta)\]
조건부확률 \(P\)는 parameter가 \(\Theta \)인 신경망을 사용하도록 설계된다. 이들은 확률적 경사 하강법(SGD)에 의해 학습된다.
GPT는 언어 모델로 Transformer의 변형인 multi-layer Transformer decoder를 사용한다. 이 모델은 입력 문맥 token에 multi-headed self-attention을 적용한 후, 목표 token에 대한 출력 분포를 얻기 위해 position-wise feedforward layer를 적용한다. 이를 수식으로 표현하면 아래와 같다.
\(U = (u_{-k}, ..., u_{-1})\) : token의 문맥 벡터
\(k\) : layer의 수
\(W_e\) : token embedding matrix
\(W_p\) : positional embedding matrix
\[ h_0 = UW_e+W_p\]
\[ h_l = transformer block(h_{l-1}) \forall l\in [1, n]\]
\[ P(u) = softmax(h_nW_e^T)\]
3.2 supervised fine-training
Language model의 Objective에 대해 모델을 Pre-training 한 후, 각 Instance가 Label y에 따른 입력 토큰 \(x^1, ..., x^m\)로 이루어져 있는 labeled dataset C를 가지는 target task에 대해 파라미터를 조정한다. 이때, 예측값을 얻기 위해 Pre-train 된 transformer 모델의 마지막 블록의 activation \(h_l^m\)을 input으로 하는 linear layer를 추가한다.
\[ P(y|^1, ..., x^m) = softmax(h_l^mW_y)\]
이 레이어는 다음의 목적함수를 최대화하는 방향으로 학습된다.
\[ L_2(C) = \sum_{(x, y)}logP(y|x^1, ..., x^m)\]
미세조정 단계에 언어 모델을 보조 목적함수로 포함시키는 것은 다음 이유에서 학습을 돕는다.
- Supervised model의 일반화를 향상하고
- 수렴을 가속화한다.
구체적으로, weight \( \lambda \) 에 대해 다음 목적함수를 최적화한다
\(\lambda \) : hyper parameter
\(L_1(C) \) : standard language model task loss
\(L_2(C) \) : 특정 Suptervised fine-tuning task loss
\[L_3(C) = L_2(C) + \lambda L_1(C)\]
3.3 Task-specific input transformations
Transfer learning을 사용하지 않고 새로운 작업마다 다른 구조의 모델을 소개했던 이전 연구와 달리 GPT모델은 순회 접근법을 사용하여(traversal-style approach) 구조화된 입력을 pre-trained모델이 사용할 수 있는 순서화된 시퀀스로 변환함으로써 약간의 변형만으로 여러 가지 task에 적용할 수 있게 되었다. 모든 변형은 무작위로 초기화된 start token <s>와 end token <e>를 포함한다.
Textual entailment task: 전제 p와 가정 h 토큰 시퀀스를 delimiter token ($)로 concat 한다.
Similarity task: 유사도 측정 task는 비교되는 두 문장의 순서가 없기 때문에 가능한 문장 순서를 모두 포함하도록 입력 시퀀스를 delimiter token과 함께 수정하고, 두 문장의 representation \(h_l^m\)을 생성하기 위해 각각을 독립적으로 처리한 후 linear layer에 들어가기 전에 더한다.
Question Answering and Commonsense Reasoning: context document \(z\)와 question \(q\), 가능한 답변인 \(a_k\)가 주어지고 document context와 question을 delimiter token을 사용해 각 답변과 concat 한다. 형태는 \([z;q;$;a_k]\)와 같다. 입력의 개수는 답변의 개수만큼 생성되며, 각 시퀀스 별로 독립적으로 처리되며 최종 출력된 가능한 답변의 분포를 생성하기 위해 softmax layer에 전달된다.
4. Experiment
Natual language inference task, Question Answering and Commonsense Reasoning, Similarity task와 같은 여러 부문에서 state-of-the-art를 달성
5. Analysis
Trasferring 할 때 layer 수에 따른 성능을 비교함으로써 Pre-trained 된 모델의 각 계층에 Target task를 해결하는데 유용한 기능이 포함됨을 확인했다.
본 연구는 기본 generative model이 language model의 capability를 향상하기 위해 많은 task를 수행하는 법을 배우고 transformer의 구조화된 attentional memory가 LSTM에 비해 transfer에 도움이 된다는 것을 가정했다. 따라서 왜 transformer의 language model pre-training이 효과적인지 이해하기 위해 기본 generative model을 supervised fine-tuning을 하지 않았을 때 task에 대한 성능이 어떤지를 확인했다.
상단 오른쪽 그림에서 확인할 수 있듯, generative model의 performance가 안정적이고 지속적으로 증가했으며 이를 통해 generative pre-training이 다양한 task에 관련된 정보를 학습하는데 도움을 준다는 것을 알 수 있다. 또한 transformer 구조가 LSTM에 비해 Zero-shot 성능에 도움이 된다는 것을 입증했다.
'머신러닝, 딥러닝 > NLP' 카테고리의 다른 글
[논문 리뷰, GPT-2]Language Models are Unsupervised Multitask Learners (0) | 2022.05.05 |
---|---|
[ML] Bag of Words(BOW) (0) | 2022.03.03 |
[ML] 텍스트 전처리(텍스트 정규화) (0) | 2022.03.03 |
댓글