.box_article .article_cont p code

상세 컨텐츠

본문 제목

[NLP 스터디] Improving Language Understanding by Generative Pre-Training 논문 리뷰

심화 스터디/NLP 스터디1

by 구은아 2021. 9. 30. 20:13

본문

1. Introduction

이제까지의 NLP 모델은 labeled data를 필요로 했고 이러한 데이터는 label을 달기 위해 시간도 오래걸릴뿐더러 텍스트가 다양한 영역에서 적용될 수 있는 가능성을 제한했다. 그래서 unlabeled data를 사용하는 모델은 그 이전 모델에 대한 중요한 대안이 되었다. 심지어 unsupervised한 방식으로 만들어진 모델은 훨씬 더 좋은 성능을 보였다.

그러나 unlabeled text를 사용하는 모델은 두가지 문제점이 있었다. 첫번째, 어떤 종류의 목적에서 가장 효율적인지 분명하지 않았다. (다만 최근 연구에서는 language modeling, machine translation, discourse coherence 등의 목적에서 좋은 성과를 보였다.) 두번째, 학습된 텍스트를 어떻게 task로 옮길 것인지가 결정되지 않았다. 이러한 불확실성은 semi-supervised approach를 발전시키기 어렵게 만들었다.

이 논문에서 unsupervised pre-training과 supervised fine-tuning의 결합으로 semi-supervised approach를 만들 것이다. 이를 위한 training은 두개의 단계로 나눠진다. 첫째로 우선 unlabeled data를 사용하여 초기 파라미터를 학습시킨다. 그 다음, 이 파라미터를 해당하는 supervised objective를 사용하는 원하는 task에 적용한다. 이를 통해 작은 변형으로도 많은 종류의 task에 보편적으로 적용될 수 있는 재표현 방법을 학습하고자 한다.

이 모델은 Transformer를 사용한다. 이를 통해 transfer 과정에서 일어나는 long-term dependencies 문제를 해결하였다. 그리고 구조화된 텍스트를 각각의 연속된 토큰으로 transfer하여 pre-trained된 모델의 구조를 거의 변형하지 않고 효율적으로 fine-tuning하였다.

3. Framework

3-1. Unsupervised pre-training

$$L_1(U)=\sum_ilogP(u_i|u_{i-k},...,u_{i-1};\Theta)$$

위 함수는 likelihood 함수이며, 모델을 사용해 최대화해야 한다. $U=\{u_1, ... ,u_n\}$는 unsupervised text의 토큰들의 집합이다. $k$는 window의 사이즈이며, $P$는 파라미터 $\Theta$에 대한 네트워크에 대한 조건부 확률이다. 이 파라미터는 SGD로 학습되었다.

모델을 위해 multi-layer Transformer decoder를 사용한다. 입력된 텍스트의 토큰화에 multi-headed self-attention을 적용하고, 그 다음에는 position-wise feedforward 레이어를 통해 결과 분포를 생성한다.

$$h_0=UW_e+W_p\\ h_l=transformer\block(h{l-1})\forall i\in[1,n]\\ P(u)=softmax(h_nW_e^T)$$

$U=\{u_{-k},...,u_{-1}\}$은 토큰들의 context vector, $n$은 레이어의 개수, $W_e$는 토큰 임베딩 행렬, $W_p$는 position 임베딩 행렬이다.

3-2. Supervised fine-tuning

3-1에서 모델을 학습시킨 후에는 파라미터를 supervised target task에 적용한다. labeled dataset을 $C$라고 하며, $C$는 입력값의 토큰들 $x_1, ..., x_m$에 label $y$로 이루어져 있다. 이 input은 pre-train된 모델을 통과하여 transformer block의 활성화 $h_l^m$을 얻고, 이는 파라미터 $W_y$와 함께 output 레이어에서 $y$를 예측한다.

$$P(y|x_1,...,x_m)=softmax(h_l^mW_y)\\ L_2(C)=\sum_{(x,y)}logP(y|x_1,...,x_m)$$

위 $P$는 output 레이어에서 $y$를 예측하는 것이며, 아래 $L$은 $P$에 대한 log likelihood 함수이다. 최대화해야 한다.

또한 language 모델을 fine-tuning에 포함시키는 것은 1) supervised 모델의 보편성을 높여주고, 2) 수렴을 빠르게 한다는 점에서 학습에 도움이 된다는 것을 발견했다. $L_3(C)=L_2(C)+\lambda*L_1(C)$를 새롭게 계산하여 성능이 좋아졌다는 것을 확인하였다.

fine-tuning하는 동안 추가적으로 필요했던 파라미터는 $W_y$와 delimiter 토큰의 임베딩뿐이고 레이어는 추가적으로 필요하지 않았다.

3-3. Task-specific input transformations

3-1과 3-2에 설명된 과정을 통해 모델을 학습시킬 수 있다. 그러나 question answering, textual entailment같이 문장이 쌍으로 존재하는 경우 위와 같은 방법을 바로 적용할 수는 없다. pre-trained 모델은 인접한 텍스트로만 학습되므로 특정 task에 적용하기 위해서는 약간의 수정이 필요하다.

너무 많은 종류의 수정을 만들지 않기 위해 traversal-style approach를 이용하여 구조화된 입력 텍스트를 pre-train된 모델이 학습할 수 있도록 알맞은 시퀀스로 변환한다. 이러한 변형은 너무 광범위한 변환을 하지 않도록 해준다.

Textual entailment

전제 $p$와 가설 $h$에 대한 토큰 시퀀스를 사이에 '$'로 구분하여 하나로 잇는다.

Similarity

어떤 두 문장이 비교되는지에 대한 설정이 없다. 그래서 입력 시퀀스와 가능한 문장을 달러 표시로 구분하면서 하나로 포함한다. 그리고 각각이 2개의 $h_l^m$을 생성하도록 한다.

Question Answering and Commonsense Reasoning

문서를 $z$, 질문을 $q$, 답변의 집합을 $\{a_k\}$라고 할 때, $[z;q;\$;a_k]$ 형식으로 변환한다. ;는 잇는 것을 말한다. 이 각각의 시퀀스는 모델에서 독립적으로 학습하고 소프트맥스 레이어에서 가능한 답변들에 대한 분포를 계산한다.

관련글 더보기

댓글 영역