Improving Understanding by Generative Pre-Training
논문에 대해 공부한 내용 정리한 포스팅입니다.
잘못된 부분에 대한 의견 환영합니다 공부를 위해 댓글에 달아주시면 감사하겠습니다!!
자연어처리 분야 데이터셋에서 Labeled dataset보다 Unlabeled dataset들이 훨씬 많이 존재한다. 따라서 이 Unlabeled dataset들도 학습과정에 포함시킨다면 좋은 성능을 낼수 있을것이다. GPT는 unlabeled dataset으로 pre-trained시킨 후에 labeled dataset을 이용하며 transformer의 decoder부분으로 구현한다.
Semi-supervised Learning은 labeled data가 충분하지 않을때 unlabeled data를 이용하여 학습하는 방법이다.
자연어처리에서 가장 처음 접근은 단어나 구 단위로 사용되었고 그 이후로는 supervised 모델에서 피쳐로 사용되었다.
지난 몇년간 unlabeled data로 학습된 워드임베딩의 이점들이 있었지만 주로 단어단위의 정보만 전달할수 있다. 그러나 우리는 높은수준으로 구분하는 분석이 필요하다.
semi-supervised learning의 특이 케이스로 supervised learning의 목적함수를 수정하는 대신에 좋은 초기화포인트를 찾는것이 목표이다. 깊은 신경망에서 더 좋은 일반화를 위해 규제의 역활로 쓰이기도 했다. 최근에는 그 방법이 다양한 task에서 쓰인다. 본 논문에서는 언어모델을 사용한 신경망을 pre-training시킨 후에 fine-tuning을 진행한다. 본논문에서 사용한 트랜스포머는 더 긴범위의 언어구조를 파악하는데 사용하고 더 나아가 더 넓은 범위의 task의 효율성을 보여준다. target task에서 supervised모델을 학습시키면서 보조적인 피쳐들로 pre-trained 언어나 기계번역모델로부터 hidden representation을 사용한다.
semi-supervised learning의 대안이 되는 방법은 unsupervised 학습의 목적함수를 추가하는 것이다. 본 논문에서도 또한 보조적인 목적함수를 사용하지만 unsupervised pre-traning이 이미 타깃 task와 관련된 언어적인 측면을 학습한 상태이다.
2가지 단계로 이루어져있다.
1. unsupervised pre-training
라벨이 없는 대용량의 언어 말뭉치를 학습한다.
2. supervised fine-tuning
라벨이 있는 데이터와 task에 맞는 방법으로 fine-tuning을 하며 학습한다.
비지도인 토큰들의 말뭉치가 주어졌을때, 다음의 likelihood를 최대화하는 언어모델링 목적함수를 사용한다.
는 context window사이즈
는 파라미터 를 사용하는 신경망으로 모델링 되어진 조건부 확률이다.
여기서 파라미터들은 SGD를 이용해 학습되었다.
또한 본 논문에서는 다수의 층으로 이루어진 트랜스포머 디코더들이 언어모델로 사용된다. 이 모델은 multi-headed self-attention연산과 position-wise feedforward가 있는 디코더들이며 타겟 토큰에 대한 분포값을 출력한다.
: 처음의 hidden state
토큰들의 context vector를 임베딩 매트릭스와 연산시킨 후 위치 정보를 위해 포지션 임베딩을 더하여 사용한다.
토큰들의 context vector
은 레이어의 수
:토큰 임베딩 매트릭스
:포지션 임베딩 매트릭스
pre-trained시킨 모델을 이제 supervised fine tuning을 하는 과정이다.
labeled 데이터셋 은 인풋토큰들 의 하나의 시퀀스이고 라벨이 인 형태이다. 인풋들은 위의 pre-trained 모델을 통해 마지막 트랜스포머 블럭의 activation인 을 출력한다. 이 는 선형레이어 통과 후 를 예측하기 위해 softmax레이어를 통과한다.
이제 다음의 목적함수를 최대화하는 방향으로 학습한다.
이때 supervised 모델의 일반화를 향상시키고 학습속도를 높이기 위해 위에 정의한 목적함수 를 가중치를 두어서 최종 목적함수를 정의한다.
즉, pre-trained 모델의 hidden vector들의 가중합만을 이용하는게 아니라, 에서 pre-training 시킨 후에 에서 함께 업데이트 시키는 것이다.
task의 종류에 따라 위 그림처럼 입력의 구조를 다르게 한다. 구조화된 인풋들을 pre-trained모델이 진행하는 순서대로 순서가 있는 시퀀스로 변형시킨다.
두 문장이 있을 때 전제 p와 가설 h 사이에 delimiter 토큰 $가 있는 형태
유사성을 판단할때는 두 텍스트를 비교할때 포함하는 순서관계가 없다. 이를 반영하기 위해서 인풋 시퀀스를 수정해 두개의 가능한 문장순서를 고려해볼 수 있다. 그리고 각각을 독립적으로 처리해 두 시퀀스 representation 만든다.
context문서 , 질문 , 가능한 답변들의 집합 가 주어져있다. 이 정보들을 delimeter token $을 사용해 이런 형태로 input을 사용한다. 이 시퀀스들은 각각 독립적으로 처리되며 나중에 softmax layer를 통해 일반화 시켜 가능한 답변들의 아웃풋 분포를 만들어낸다. 확률값이 가장 높은것이 답변이 될 확률이 높다.
다양한 실험들에서 GPT가 가장 성능이 좋음을 확인 할 수 있다.
왼쪽은 unsupervised pre-training부터 supervised target까지의 레이어의 수를 다양하게 바꿔보면서 영향을 살펴본 그래프이다.
디코더의 개수를 많이 쌓을 수록 성능이 좋아지는 것을 확인할 수 있다. 또한, pre-trained 모델의 각각의 레이어는 타겟 task에 대해 유용한 기능을 포함한다는 것을 알 수 있다.
트랜스포머를 이용한 pre-training이 효과적인 언어모델인지 이해해 보자.
오른쪽 그래프는 supervised finetuning 없이 pre-training을 계속 업데이트 시켜보면서 성능을 비교한 그래프이다. 계속해서 증가하는 것을 보면 pretraining의 지원이 task와 상관있게 도움을 주는 기능을 한다는 것을 알 수 있다.
방법을 다양하게 바꿔보면서 연구를 진행했다.
Transformer w/aux LM(full)
은 본 논문에 제시된 모델이다.
먼저, Transformer w/o pre-training
은 pre-training없이 supervised target task에 직접 훈련시킨 경우이다.
그 다음, Transformer w/o aux LM
은 파인튜닝을 하는 동안 보조적인 목적함수를 사용하지 않았다.
task specific한 목적함수를 제외한 경우이다.
마지막으로, LSTM w/aux LM
은 transfomer대신에 LSTM을 사용한다.
결과는 아래 표와 같다.
표를 통해 다음과 같표 정보를 알 수 있다.
https://www.cs.ubc.ca/~amuham01/LING530/papers/radford2018improving.pdf