[딥러닝]NLP:GPT-1(Improving Understanding by Generative Pre-Training)

sobing·2022년 8월 3일
0

NLP

목록 보기
3/3
post-thumbnail

Improving Understanding by Generative Pre-Training논문에 대해 공부한 내용 정리한 포스팅입니다.
잘못된 부분에 대한 의견 환영합니다 공부를 위해 댓글에 달아주시면 감사하겠습니다!!

논문소개

자연어처리 분야 데이터셋에서 Labeled dataset보다 Unlabeled dataset들이 훨씬 많이 존재한다. 따라서 이 Unlabeled dataset들도 학습과정에 포함시킨다면 좋은 성능을 낼수 있을것이다. GPT는 unlabeled dataset으로 pre-trained시킨 후에 labeled dataset을 이용하며 transformer의 decoder부분으로 구현한다.

논문요약

Semi-supervised learning for NLP

Semi-supervised Learning은 labeled data가 충분하지 않을때 unlabeled data를 이용하여 학습하는 방법이다.
자연어처리에서 가장 처음 접근은 단어나 구 단위로 사용되었고 그 이후로는 supervised 모델에서 피쳐로 사용되었다.
지난 몇년간 unlabeled data로 학습된 워드임베딩의 이점들이 있었지만 주로 단어단위의 정보만 전달할수 있다. 그러나 우리는 높은수준으로 구분하는 분석이 필요하다.

Unsupervised pre-training

semi-supervised learning의 특이 케이스로 supervised learning의 목적함수를 수정하는 대신에 좋은 초기화포인트를 찾는것이 목표이다. 깊은 신경망에서 더 좋은 일반화를 위해 규제의 역활로 쓰이기도 했다. 최근에는 그 방법이 다양한 task에서 쓰인다. 본 논문에서는 언어모델을 사용한 신경망을 pre-training시킨 후에 fine-tuning을 진행한다. 본논문에서 사용한 트랜스포머는 더 긴범위의 언어구조를 파악하는데 사용하고 더 나아가 더 넓은 범위의 task의 효율성을 보여준다. target task에서 supervised모델을 학습시키면서 보조적인 피쳐들로 pre-trained 언어나 기계번역모델로부터 hidden representation을 사용한다.

Auxiliary training objectives

semi-supervised learning의 대안이 되는 방법은 unsupervised 학습의 목적함수를 추가하는 것이다. 본 논문에서도 또한 보조적인 목적함수를 사용하지만 unsupervised pre-traning이 이미 타깃 task와 관련된 언어적인 측면을 학습한 상태이다.

Framework

2가지 단계로 이루어져있다.
1. unsupervised pre-training
라벨이 없는 대용량의 언어 말뭉치를 학습한다.
2. supervised fine-tuning
라벨이 있는 데이터와 task에 맞는 방법으로 fine-tuning을 하며 학습한다.

Unsupervised pre-training

비지도인 토큰들의 말뭉치가 주어졌을때, U=u1,...,un\mathcal{U}={u_1,...,u_n} 다음의 likelihood를 최대화하는 언어모델링 목적함수를 사용한다.
L1(U)=ilogP(uiuik,...,ui1;Θ)L_1(\mathcal{U})=\sum_ilogP(u_i|u_{i-k},...,u_{i-1};\Theta)
kk는 context window사이즈
PP는 파라미터 Θ\Theta를 사용하는 신경망으로 모델링 되어진 조건부 확률이다.
여기서 파라미터들은 SGD를 이용해 학습되었다.

또한 본 논문에서는 다수의 층으로 이루어진 트랜스포머 디코더들이 언어모델로 사용된다. 이 모델은 multi-headed self-attention연산과 position-wise feedforward가 있는 디코더들이며 타겟 토큰에 대한 분포값을 출력한다.

h0=UWe+Wph_0=UW_e+W_p : 처음의 hidden state
토큰들의 context vector를 임베딩 매트릭스와 연산시킨 후 위치 정보를 위해 포지션 임베딩을 더하여 사용한다.

hl=transformer_block(hl1),i[1,n]h_l=transformer\_block(h_{l-1}) , i\in[1,n]
P(u)=softmax(hnWeT)P(u)=softmax(h_nW_e^T)
U=(uk...,u1)U=(u_{-k}...,u_{-1}) 토큰들의 context vector
nn은 레이어의 수
WeW_e:토큰 임베딩 매트릭스
WpW_p:포지션 임베딩 매트릭스

Supervised fine-tuning

pre-trained시킨 모델을 이제 supervised fine tuning을 하는 과정이다.
labeled 데이터셋 C\mathcal{C}은 인풋토큰들 x1,...,xmx^1,...,x^m의 하나의 시퀀스이고 라벨이 yy인 형태이다. 인풋들은 위의 pre-trained 모델을 통해 마지막 트랜스포머 블럭의 activation인 hlmh_l^m을 출력한다. 이 hlmh_l^m는 선형레이어 통과 후 yy를 예측하기 위해 softmax레이어를 통과한다.
P(yx1,...,xm)=softmax(hlmWy)P(y|x^1,...,x^m)=softmax(h_l^mW_y)

이제 다음의 목적함수를 최대화하는 방향으로 학습한다.
L2(C)=(x,y)logP(yx1,...,xm)L_2(\mathcal{C})=\sum_{(x,y)}log P(y|x^1,...,x^m)

이때 supervised 모델의 일반화를 향상시키고 학습속도를 높이기 위해 위에 정의한 목적함수 L1,L2L_1,L_2를 가중치를 두어서 최종 목적함수를 정의한다.
L3(C)=L2(C)+λL1(C)L_3(\mathcal{C})=L_2(\mathcal{C})+\lambda*L_1(\mathcal{C})
즉, pre-trained 모델의 hidden vector들의 가중합만을 이용하는게 아니라, L1(U)L_1(\mathcal{U})에서 pre-training 시킨 후에 L3(C)L_3(\mathcal{C})에서 함께 업데이트 시키는 것이다.

Task-specific input transformations


task의 종류에 따라 위 그림처럼 입력의 구조를 다르게 한다. 구조화된 인풋들을 pre-trained모델이 진행하는 순서대로 순서가 있는 시퀀스로 변형시킨다.

Textual entailment

두 문장이 있을 때 전제 p와 가설 h 사이에 delimiter 토큰 $가 있는 형태

Similarity

유사성을 판단할때는 두 텍스트를 비교할때 포함하는 순서관계가 없다. 이를 반영하기 위해서 인풋 시퀀스를 수정해 두개의 가능한 문장순서를 고려해볼 수 있다. 그리고 각각을 독립적으로 처리해 두 시퀀스 representation hlmh_l^m만든다.

Question and Answering and Commonsense Reasoning

context문서 zz, 질문 qq, 가능한 답변들의 집합 ak{a_k}가 주어져있다. 이 정보들을 delimeter token $을 사용해 [z;q;$;ak][z;q;\$;a_k] 이런 형태로 input을 사용한다. 이 시퀀스들은 각각 독립적으로 처리되며 나중에 softmax layer를 통해 일반화 시켜 가능한 답변들의 아웃풋 분포를 만들어낸다. 확률값이 가장 높은것이 답변이 될 확률이 높다.

Experiments

다양한 실험들에서 GPT가 가장 성능이 좋음을 확인 할 수 있다.

자연어추론

질문과 답변

구문 유사도와 분류

Analysis

Impact of number of layers transferred

왼쪽은 unsupervised pre-training부터 supervised target까지의 레이어의 수를 다양하게 바꿔보면서 영향을 살펴본 그래프이다.
디코더의 개수를 많이 쌓을 수록 성능이 좋아지는 것을 확인할 수 있다. 또한, pre-trained 모델의 각각의 레이어는 타겟 task에 대해 유용한 기능을 포함한다는 것을 알 수 있다.

Zero-shot Behaviors

트랜스포머를 이용한 pre-training이 효과적인 언어모델인지 이해해 보자.
오른쪽 그래프는 supervised finetuning 없이 pre-training을 계속 업데이트 시켜보면서 성능을 비교한 그래프이다. 계속해서 증가하는 것을 보면 pretraining의 지원이 task와 상관있게 도움을 주는 기능을 한다는 것을 알 수 있다.

Alation studies

방법을 다양하게 바꿔보면서 연구를 진행했다.
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을 사용한다.
결과는 아래 표와 같다.

표를 통해 다음과 같표 정보를 알 수 있다.

  • 더 큰 데이터셋일수록 auxiliary 목적함수가 더 이득이 되며, 작은 데이터셋일 수록 의미가 없다.
  • LSTM이 Transformer의 성능을 넘는 경우는 한가지 데이터 셋 RTE뿐이다.

참고

논문링크

https://www.cs.ubc.ca/~amuham01/LING530/papers/radford2018improving.pdf

개념공부

https://www.youtube.com/watch?v=o_Wl29aW5XM

0개의 댓글