7 minute read

이번 스터디 순서는 GPT-1이다. 원문은 이곳을 참고하자.

📒Keypoint:

  • generative pre-training
  • discriminative fine-tuning
  • task-aware input transformation

본문을 보면 generative pre-training 후 discriminative fine-tuning이라는 말이 나온다. 이게 흔히들 말하는 generative model과 discriminative model을 칭하는 건가 궁금했다.

Generative pre-training: 별 이유 없다. 그냥 text를 generation하기 때문이다. (근데 어느 LM이나 generation하지 않나 싶은데..)

discriminatvie fine-tuning: Universal Language Model Fine-tuning for Text Classification에서 소개된 것으로, 일종의 fine-tuning 전략이다. 모든 레이어에 대해 같은 learning rate를 적용하는 대신 각 layer에 다른 learning rate를 적용하는 것이다. 원래라면 $\theta _t = \theta _{t-1} - \eta \cdot \nabla _\theta J(\theta)$와 같은 SGD는, $\theta ^l _t = \theta ^l _{t-1} - \eta ^l \cdot \nabla _\theta J(\theta)$와 같이 변하게 된다.

task-agnostic: task-agnostic; that is, it can be universally applied to various downstream NLP tasks via fine-tuning MobileBERT: Task-Agnostic Compression of BERT by Progressive Knowledge Transfer.

The question we investigate in this paper is how to effectively use unlabeled data: in a task-agnostic or a task-specificway. An example of the former is training models on language model (LM) like objectives on a large unlabeled corpus to learn general representations,as in ELMo (Embeddings from Language Models)(Peters et al., 2018) and BERT (Bidirectional En-coder Representations from Transformers) (Devlinet al., 2019). To BERT or not to BERT: Comparing task-specific and task-agnostic semi-supervised approaches for sequence tagging

즉, task에 관련없이(agnostic) 진행되는 것을 의미한다. LM의 경우 대표적인 agnostic으로, large corpus unlabeled data를 이용하기 때문이다.

1. Introduction

  • 단어 단위 이상의 정보를 unlabeled text에 얻는 것은 다음과 같은 두 가지 이유 때문에 매우 어려움
    • text representation에서 transfer learning을 위해 가장 효과적인 optimization objective가 무엇인지 불분명하다.
      • ELMo같은 LM부터, NMT, discourse coherence와 같은 다양한 task를 통해 성공적인 representation을 얻어냈다.
    • 이렇게 얻은 표현에 대해 target task로 transfer learning을 진행할 때, 가장 효과적인 방법에 대한 합의(consensus)가 없다.
      • 이에는 (1) 모델의 아키텍쳐를 변화시키거나, 트랜스퍼 러닝을 할 수 있는 보조격의 목적함수를 추가하는 방법이 있다.
  • GPT-1은 language understanding task를 위한 semi-supervised approach를 탐구한다.
    • 이를 위해 unsupervised pre-training과 supervised fine-tuning을 활용
    • 본 논문은 unlabeled large corpus와 직접 annotate한 데이터 셋 (target tasks)를 활용하는 상황을 가정
    • target tasks는 unlabeled corpus와 같은 domain에 있지 않아도 됨
  • 본 작업은 two-stage training procedure를 갖는데,
    • 먼저 unlabeled data에 대해 language modeling objective를 사용하여 initial parameter를 얻고,
    • 이후 이를 supervised objective에 transfer한다.
  • GPT-1은 transformer를 사용
  • 또한 transfer learning을 위해 traversal-style approaches의 task-specific input adaptation을 활용
    • 이는 구조화된 text input을 하나의 contiguous sequence of tokens로 만드는 것
    • 앞서 언급했듯 fine-tune을 효과적이고, 모델에서 최소한의 변경을 가능하게 함

Traversal-style Approaches: 원문과 같이 entailment과 같은 작업에서 premise와 hypothesis를 묶어 놓는 것을 의미

2. Related Work

Semi-supervised learning for NLP

  • GPT-1이 속하는 분야로, word-level/phrase-level까지 다양하게 이용되어옴
    • e.g. word2vec, GloVe, Doc2vecv, etc
  • 최근들어 unlabeled corpora을 이용해서 학습하는 방법은 최근 들어 유행하기 시작함
  • 그러나 이러한 접근법들은 GPT-1이 높은 수준의 의미를 포착하려는 것과는 다르게 주로 word-level에서 transfer가 일어남

Unsupervised pre-training

  • Unsupervised pre-training는 supurvised learning objective를 수정하는 대신 좋은 시작점을 찾는 것을 목표로 할 때 semi-supervised learning의 특수한 경우
  • 일종의 regularization 역할로, 일반화에 도움을 주었지만, 지금은 neural net 학습 과정에 도움되는 방법론이 개발
  • GPT-1은 natural language inference, paraphrase dectection, story completion과 같은 다양한 범위에서의 효과가 있음
  • ELMo나 다른 연구들은 pre-trained LM이나 machine translation model로 부터 hidden representation을 얻고, 이를 보조적인 feature(auxiliary feature)로 사용함
    • 이는 추가적인 parameter를 학습해야 함
    • 그러나 GPT-1은 모델의 최소한의 변경만을 요구

아래의 term은 사람마다 약간씩 쓰는 단어가 다른 것으로 보인다. 개인적인 의견으로는 ML/DL에 따라서 이러한 경향을 보이는 것 같다. 따라서 블로그 포스트가 아닌, 서적/논문같은 오피셜한 문서를 최대한 참고하여 작성하였다.

Supervised Task-specific Pre-training: task A를 진행하려고 하고, 이에는 label data가 제한되어 있다고 하자. 그러나 이 작업은 task B를 포함하고 있고, 이에는 데이터가 많다. 이러한 경우에 우리는 task B를 통해 좋은 representation을 먼저 얻고(pre-trained), 그 후에 task A를 진행하는 것이 효과적일 것이다. 이러한 케이스를 supervised Task-specific Pre-training이라 한다. 이 경우 우리는 pre-trained vector를 고정할 수도 있고, tune할 수도 있다. 또 다른 방법으로는 두 개의 objecive를 jointly하게 배우는 학습하는 방법이 있다.

Semi-supervised Learning: Semi-supervised learning에서 머신은 label/unlabel 데이터 둘을 모두 활용하게 된다. label 데이터를 이용하여 학습한 이후에 unlabel 중 확실하게 분류가 가능한 데이터를 선정하고, 다시 이를 이용하여 학습, 분류를 반복하는 작업이다.

Unsupervised Pre-training: 일반적인 경우에는 위와 같이 충분한 labeled data를 갖는 auxiliary task (i.e. task B)가 없다 (혹은 bootstrap 할수도 있고). 이 경우에는 unsupervised method를 사용한다. word vector를 만드는 방법은 기본적으로 supervised learning을 이용하는 것이지만, 우리가 하고 싶은 task에 대한 supervision data를 쓰는 것이 아니라, raw text로부터 데이터를 생성하는 것이다. 이는 word2vec과 같이 비슷한 단어의 vector를 얻는 것이고, distribtuional hypothesis를 가정한다. 이로 인한 주요 장점으로는 supervised task에 등장하지 않은 단어의 벡터를 얻을 수 있다는 것이다.

그러나 이 정의는 다시금 나에게 그렇다면 self-supervised learning과 unsupervised pre-training이 무엇이 다른가?라는 의문을 남긴다.

Self-supervised learning: Pre-training과 관련된 개념으로, 사전학습을 통해 downtream task에서 이득을 보는 것이다. 이는 label없는(unsupervised) 데이터로 supervised learning을 하는 것이다. 얀 르쿤의 설명을 보자. Yann LeCun's mention on self-supervised learning

Semi-supervised learning: 앞서 semi supervised learning이 label/unlabel 둘 다를 사용하는 것이라 말하였다. 즉, unlabeled data를 통해 LM을 학습하고, 약간의 데이터를 통해 fine-tuning을 하는 approach를 semi-supervised learning이라고 표현할 수 있다.

이러한 방법론들은 모두 pre-trained model을 얻기 위함이라는 공통점이 있다.

Auxiliary training objectives

  • Auxiliary training objectives는 보조적인 unsupurvised training objective를 추가하는 것은 semi-supervised learning의 일종으로 보면 된다
    • 즉, 원래 학습 목적과는 별개로 목적함수에 추가하는 것을 의미
  • 실험에서도 사용하긴 했지만, 이와 별개로 unsupervised pre-training이 target task와 연관있는 언어적 요소(linguistic aspect)를 배우는 것을 확인

Auxiliary training objectives: BERT를 아직 배우진 않았지만 BERT의 경우에는 next sentence를 예측하거나 mask 씌운 단어를 예측한다. 이 경우 이 둘의 loss를 합치게 되는데, GPT-1에서 말하는 auxilirary는 이와는 다르게 실제 목적과는 무관하지만, loss에 추가하여 이득 보는 것을 의미한다.

3. Framework

  • 앞서 말했듯 LM을 배우고, fine-tune하는 형태로 진행

3.1 Unsupervised pre-training

  • Unsupervised corpus tokens $\mathcal U = {u _1, …, u _n}$에 대해, 일반적인 LM ojbective를 사용하여 다음의 likelihood를 최대화
\[\begin{align} L_1(\mathcal U) = \sum _i log P (u _i \lvert u _{i-k}, ..., u _{i-1}; \Theta) \end{align}\]
  • k는 context window, conditional probability $P$는 parameter $\Theta$를 이용한 neural net임

context window: word2vec같은 경우 context vector를 설정하고, center word 전후로 window size를 condition으로 주게된다. 지금은 context window가 이전 시점 밖에 없으므로 Auto-regressive하게 도는 것으로 보이는데, 이 경우 context window가 dynamic하게 도는지 확인할 필요가 있어보인다.

  • 실험에서는 multi-layer transformer decoder를 사용
  • input context token - multi-layer transformer decoder - position-wise feedforward 순서로 진행
\[\begin{align} & h _0 = UW _e + W _p \\ & h _l = \textrm{transformer_block} (h _{l-1}) \forall \in [1, n] \\ & p(U) = \textrm{softmax}(h _n W _e ^T) \\ \end{align}\]
  • $ U = (u _{-k}, …, u _{-1})$이고, $n$은 layer의 수, $W _e$는 token embedding matrix, $W _p$는 position embedding matrix

multi-layer transformer decoder: Citation이 걸린 논문을 확인해보았는데, local attentionmemory-compressed attention이라는 개념을 소개하고 있다. GPT-1에서도 이러한 개념을 사용하는지는 의문.

3.2 Supervised fine-tuning

  • Eq. 1의 objective를 따라 training한 후 supervised target task에 transfer하면 됨
  • 여기선 labeled dataset $\mathcal C$를 가정
    • $x^1, …, x^m$과 같은 sequence of input token과 label $y$로 이루어짐
  • input은 pre-trained model을 지나 마지막 transformer block에서 $h^m _l$을 얻고, linear output layer $W _y$를 통해 $y$를 예측
\[P(y \rvert x^1, ..., x^m) = \textrm{softmax}(h^m _l W_y)\]
  • 이는 다음 objective를 maximize하게 한다
\[L _2 (\mathcal C) = \sum _{(x, y)} log P(y \rvert x^1, ..., x^m)\]
  • 추가적으로, LM을 auxiliary objective를 fine-tuning에 포함하는 것이 도움이 되는 것을 발견
    • supervised model의 generalization을 향상
    • convergence를 빠르게 도와줌
  • 구체적으로는 다음과 같은 objective를 optimize (with weight $\lambda$)
\[L_3(\mathcal C) = L _2(\mathcal C) + \lambda * L _1(\mathcal C)\]

-fine-tuning단계에서 추가적으로 학습할 parameter는 $W_y$와 delimiter token을 위한 embedding밖에 없음

figure 1

3.3 Task-specific input transformations

  • 어떤 tasks에선 위에서 언급한 바와 같이 직접적으로 fine-tune할 수 있음
  • 그러나 QA/textual entailment같은 structured input은 delimiter token을 통해 sequence를 합침 (i.e. traversal-style approach)

4. Experiments

4.1 Setup

  • 12개의 transformer layers
  • 12개의 head (하나 당 64dim)
  • position-wise FFN의 size는 3072
  • Adam optimization
    • 0부터 2000까지 max lr: 2.5e-4
    • 그 후 cosine schedule을 이용하여 0까지 annealing
  • 100 epochs, 64 mini-batch
  • 512개의 contiguous tokens
  • weight init: $N(0, 0.02)$
    • layer norm이 많이 사용되었기 때문에 이거로도 충분함
  • BPE: 40000 tokens
  • dropout(p=0.1)
  • L2 regularization ($w=0.01$)
  • GELU activation

cosine schedule (Cosine annealing): cosine annealing은 learning rate schedule의 한 종류로, cosine 함수처럼 큰 learning rate로 시작하여 급격하게 떨어지고 다시 올라가는 것을 반복한다. 이처럼 learning rate를 높이는(resetting) 행위는 학습을 재시작하는 것과 같은 역할을 하며, 이 재시작에서의 초기값은 이미 학습을 한번 한 좋은 weight가 된다. 이러한 것을 warm start라고 부르며, cold start가 랜덤한 지점에서 학습을 시작하는 것과는 대조적이다. 수식은 다음과 같다. $\eta _t = \eta ^i _{min} + \cfrac{1}{2} (\eta ^i _{max} - \eta ^i _{min})(1 + cos(\cfrac {T _{cur}} {T _i} \pi)) $ 여기서 $\eta ^i _{max}$와 $\eta ^i _{min}$는 각 각 learning rate의 범위이고, $T _{cur}$은 이전 재시작으로부터 얼마나 epoch이 돌았는지 체크한다.

L2 regularization ($w=0.01$): 원문/Revision version으로 보이는 논문을 보면, SGD와는 달리 Adam에서 L2 regularization과 weight decay는 서로 다른 것이라고 한다. 다음을 참고해보자. AdamW에 대해 알아보자! Decoupled weight decay regularization 논문 리뷰(1). OpenAi

Leave a comment