새소식

딥러닝/자연어 처리

GPT & GPT2

  • -

보통 라벨링 된 데이터를 바탕으로 지도학습을 진행한다.

그러나 라벨링 된 데이터는 제한적이며 unlabeled된 데이터가 훨씬 많기 때문에 이를 활용한다면 시간과 비용을 절약할 수 있다.

 

Unlabeled data의 한계점

1. 어떤 목적함수(Optimization objective)가 효과적인지 알 수 없다.

2. 주어진 task에 대해서 어떤 방식으로 transfer 하는지에 대해서도 정해진 효율적인 방법이 없다.

 

GPT는 해당 한계점을 보완하고자 unlabeled 데이터에 언어 모델링 목적함수(Language Modeling Objective)를 사용하여 Pre-training을 진행하고 Labeled 데이터를 이용하여 Fine-tuning하여 특정 task에 적용시키는 방식이다.

 

 

 

Unsupervised pre-training

바로 전 단계서부터 k번째 이전까지의 토큰을 살펴본 다음에 i번째에 해당하는 토큰이
무엇인지에 대한 likelihood를 최대화 시키는 것이 LM의 목적이다.
(k: context window 사이즈)

 

 

 

Supervised fine-tuning

x1, ... , xm 토큰으로 이루어진 시퀀스가 주어져 있고 거기에 대한 정답이 주어져 있을 때 

GPT의 unsupervised learning의 마지막 hidden state의 m번째 단어에 해당하는 hidden state block을 가져다가 linear layer을 씌운다음 softmax를 해서 확률값을 구한다.

L2라는 Supervised Learning의 목적 함수

주어져 있는 토큰의 시퀀스에 따라서 정답이 무엇인지에 대한 확률값의 최대값을 구한다.

 

 

L1(u) : unsupervised로 pretraining을 먼저 하고

(C: supervised learning에 대한 corpus)

 

L2 뿐만 아니라 L1(현재 보유하고 있는 supervised learning용 corpus에 대한 LM)도 함께 업데이트하면

1. supervised model에 대한 generalization이 향상되고

2. 학습 속도가 빨라진다.

 

 


GPT는 multi-layer transformer decoder를 사용한다.

 

기존 transformer의 Decoder block은 아래 그림과 같이 Encoder-Decoder Self-Attention이 존재하지만

 

 GPT는 Encoder-Decoder Self Attention을 제외한 decoder 구조이다.

 

 

# Task specific input transformation

 


GPT2

GPT도 decoder-only transformer의 구조이면서 더 대용량 데이터셋을 이용해서 학습

 

GPT2와 BERT의 차이점

BERT는 Masked Language Model : 방향성이 Bidirectional이라고 볼 수 있다.

GPT2는 auto-regressive Language Model : 각각의 토큰이 생성이 되면 그 생성된 토큰이 그 다음 토큰을 생성시키기 위한 input으로 사용된다.

 

GPT2는 1024개까지의 토큰을 처리 가능

각 토큰은 자기 자신의 path를 따라 decoder block들을 거친다.

 

train된 GPT2를 활용하는 방식

unconditional sample을 하나 뽑아낸다.

GPT2는 top-k라는 파라미터가 존재 : top-k는 최대 k개 까지 가장 그럴듯한 단어를 제시

 

그 다음 단계를 만들어 낼 때는 두번째 path만 active하다.

학습 과정이 아니기 때문에 첫번째 토큰을 두번째 토큰을 처리함에 있어서 다시 학습시키지 않는다.

 

GPT2 과정

Input encoding

 

Positional encoding

Sending a word to the first transformer block

첫 번째 토큰은 Token embedding과 Positional encoding을 더한 결과물

 

 

input이 Decoder block을 거쳐 올라간다.

각각의 decoder는 Masked Self Attention과 Feed Forward Neural Network으로 구성

process는 각각의 디코더 블럭마다 동일하지만 self attention과 neural network에 대해서 각각 다른 weight를 갖고 있다.

 

Self Attention의 역할

A robot must obey the orders given it by human beings except where such orders would conflict with the First Law

it은 robot을 의미

such orders는 the orders given it by human beings를 의미

 

언어는 context에 의존적이다. 

사람은 문장을 읽으면서 이를 연결시킬 수 가 있다.

self Attention은 바로 이것을 추구하는 것이다.

 

it이라는 단어가 들어오면 자기 자신이 18%, a와 robot에 대해서 30%, 50%의 self attention 값을 갖는다.

it이라는 단어를 처리함에 있어서 it이 a robot임을 알 수 있다.

 

가중치를 이용한 선형 결합을 통해 decoder단에서 output으로 출력된다.

 

 

small model의 경우 768차원의 output vector가 출력되면 50,257x768 차원의 embedding vector하고 연산하여 output probabilties를 계산한다.

그 중에 가장 큰 probability를 갖는 token을 산출한다.

 

 

Note in GPT2

  • GPT2는 Embedding Token을 만들 때 Byte Pair Encoding을 이용한다.
  • 최대로 처리하는 token은 1024개인데 동시에 처리할 수 있는 최대 token은 512개이다.
  • Layer normalization이 Transformer structure에서 중요하다.
728x90
Contents