[boostcamp] Week 9 Self-Supervised Pre-Training Models

허치영·2022년 3월 19일
0

boostcamp

목록 보기
4/5
post-thumbnail

이번주 강의는 Transformer와 그 이후에 나온 Transformer 구조에 기반한 모델들에 대한 설명이 주가 되었다.
GPT와 BERT, 두 모델 이후의 여러 self-supervised pre-training model들에 대한 설명이 있었다.

1. GPT-1 & BERT


BERT는 이전에 포스팅했던 논문이고, GPT-1의 경우 github 블로그에 정리해뒀지만 이번주에 한번 더 읽고 다시 포스팅할 예정이라 우선 두 모델에 대한 설명은 생략하고, 주요한 차이점에 대해 보면,

BERT

  • Transformer Endoer
  • Bidirectional
  • Pre-training : Masked Language Model + Next Sentence Prediction
  • Training data : BookCorpus + Wikipedia
  • Batch size : 128,000 words
  • [SEP], [CLS] special token & sentence embedding
  • 각 fine-tuning에서 서로 다른 learning rate 사용

GPT-1

  • Transformer Decoder
  • Unidirectional
  • Pre-training : Standard Language Model
  • Training data : BookCorpus
  • Batch size : 32,000 words
  • 모든 fine-tuning에서 같은 learning rate 사용

정도가 있다.

2. After GPT & BERT...


GPT-1가 나온 이후 GPT-2가 나왔다. GPT-2는 GPT-1에서 모델 크기를 키우고, 더 많은 training data에서 학습하고, zero-shot으로 down-stream task를 해결하고자 했다. 물론 zero-shot이라서 성능은 SoTA를 달성하지는 못했으나, 유의미한 성능을 끌어냈다. GPT-2의 결과로 알 수 있는 점은 Language Model의 크기를 매우 키우고, 초대형 학습 데이터셋에서 학습한다면 fine-tuning이 없다하더라도 down-stream task에서 뛰어난 성능을 얻어낼 수 있다는 것이다.
논문의 저자는 GPT-2 이후 GPT-3를 발표했고, 이는 GPT-2보다 훨씬 더 큰 모델에서 zero-shot이 아닌 few-shot을 사용해 더 좋은 성능을 이끌어냈다.

그리고 BERT에 몇 가지 기법들을 추가한 논문도 발표되었는데, 그중에 ALBERT를 강의에서 설명했다.
ALBERT는 A Lite BERT for Self-supervised Learning of Language Representations라는 논문에서 소개되었고, BERT의 성능은 유지한채 학습시 사용되는 리소스를 줄이고 학습 속도를 올리고자 했다. 이를 위해 Factorized Embedding Parameterization, Cross-layer Parameter Sharing, Sentence Order Prediction을 사용했다.

Factorized Embedding Parameterization

BERT의 입력으로 사용되는 Embedding의 dimension을 줄이는 기법이다. 원래 embedding layer는 self-attention layer에서 연산을 위해 hidden dimension size와 같은 크기를 가져야 했는데, ALBERT에서는 이 embedding layer에 한 단계를 추가해서 embedding의 크기를 줄였다.
원래 [vocab size x hidden dimension]으로 표현되던 embedding을 [vocab size x embedding dimension] x [embedding dimension x hidden dimension]으로 표현한다. 이렇게 하면 원래 embedding matrix의 parameter 갯수보다 훨씬 더 적은 수의 parameter로 원래와 같은 embedding을 사용할 수 있게 된다.

ex) V=10, H=10, E=2 일 때,
V x H = 100
(V x E) + (E x H) = 20 + 20 = 40 이므로 factorize하는 것이 이득

Cross-layer Parameter Sharing

BERT는 Transformer에서 Encoder layer를 여러 층 쌓아 만든 모델이다. 각 encoder layer의 sub layer들은 모두 같은 형태를 띄고 있고, ALBERT에서는 이 각각의 sub layer들의 parameter를 공유해 parameter 수를 줄이고자 했다.
Feed-forward network의 parameter만 공유하거나, Attention의 것만, 혹은 두 sub layer의 parameter를 모두 공유하는 총 세가지 방식에 대해 실험을 진행했고, 실험 결과 Attention layer의 parameter들만 공유하는 것이 가장 적은 성능 하락폭을 나타냈다.

Sentence Order Prediction

ALBERT에서는 기존 BERT의 NSP task가 너무 쉽다고 이야기 했고, 이를 조금 더 어렵게 하기위해 Sentence Order Predcition이라는 task로 만들었다.
이는 연속된 두 문장을 받아 두 문장의 순서를 예측하며 sentence level의 정보를 학습하게 된다.
실험 결과 NSP를 사용할 때는 오히려 NSP를 안쓸 때보다 더 성능이 낮아진 경우도 있었으나, SOP를 사용할 때에는 거의 모든 down-stream task에서 성능 개선이 이루어졌다.




이번주를 마치며

마지막 Self-supervised pre-training model 파트 강의에서는 정말 많은 수의 모델들이 휘몰아쳤다. 대부분이 BERT나 GPT와 관련된 모델이였는데, GPT는 계속해서 모델의 크기가 증가하는 방향으로 성능 개선이 이루어졌고, BERT는 경량화에 꽤나 초점이 맞춰져있는 것으로 보인다. BERT나 GPT외에도 XLNet이나 ELECTRA같은 꽤 많은 self-supervised pre-training model들이 있었으나, 그 안에도 BERT나 GPT의 아이디어가 들어간 것으로 보인다.
확실히 두 모델이 현재의 연구 트렌드에 꽤 많은 영향을 주고있다고 생각된다. 조금 아쉬운 점은 색다른 아이디어의 모델이 잘 없는 듯 하다는 것이다. 물론 Transformer 구조가 좋고, BERT가 괜찮다는 것은 알겠으나 너무 많은 논문들이 BERT의 개선판인 것이 조금은 아쉽다.

profile
NLP를 공부하는 대학생입니다

0개의 댓글