상세 컨텐츠

본문 제목

[논문] GPT 이전 까지의 NLP 주요 논문 정리

논문

by 수타. 2024. 6. 4. 12:57

본문

말그대로 GPT 이전까지의 제가 생각하는 NLP주요 논문들을 간단하게 정리해보려 합니다.

논문순서는 Seq2Seq,Attention, Transformer, Word2Vec, GloVe,FastText, ELMo, BERT순 입니다.

앞서 말했듯이 간단하게 논문의 흐름, 특징, 모델구조 등만 파악하기에 이점 유의 부탁드립니다.

 

Seq2Seq: Sequence to Sequence Learning wih Nerual Networks(2014)

https://arxiv.org/abs/1409.3215

 

SMT(Statistic Machine Translation)

먼저 Seq2Seq 이전에는 SMT(Statistic Machine Translation) 즉 통계적 기계번역을 사용했습니다. 문장의 유창성,자연스러움을 담당하는 언어모델, 단어 또는 구절의 대응관계를 확률적으로 모델링하는 번역모델, 위 두 모델의 결과를 종합하는 디코더 세 단계로 이루어져 있습니다. 이는 카운트 기반의 접근을 사용하는데

$$P(가다|서둘러\;집에) = \frac{P(서둘러\;집에\;가다)}{P(서둘러\;집에)}$$
이런식으로 "서둘러 집에" 뒤에 "가다" 가 나올 확률은 실제로 "서둘러 집에" 가 나온 확률 분에 "서둘러 집에 가다" 가 나온 확률(횟수,카운트)가 됩니다.

이런방식에는 여러 문제가 있습니다.

  • 실제 사용하는 모든 문장을 가지고 있을 수 없을 뿐더러 매우 방대한 양의 데이터가 필요합니다
  • 해당 문장이 데이터 내에 없을 수 도 있습니다
  • 긴 문장은 저 흐름의 반복이기 때문에 계산이 매우 어려워 집니다
    • 이에 대해선 n-gram(인접한 n개의 단어만 고려하는 방법)으로 일부 해결할 수 있습니다
Seq2Seq

이에 반해 NMT(Neral Machine Translation) 즉 신경망 기계번역은 인공신경망 특히 딥러닝을 기반으로 하며, 세개의 모델로 나누어져 있지않고 end to end로 모델이 직접 번역을 수행합니다.

모델 구조는 위와 같이 RNN(LSTM)등 순환형으로 이루어져있고, 기존 방법에 비해 계산은 많이 줄었지만 여러 단점들이 생겼습니다.

  • 마지막 hidden state인 context vector를 고정된 크기로 사용하기 때문에 긴 Seq에 대해 모든정보를 학습하기 힘듭니다
  • 또한 뒤로갈 수록 앞의 정보들은 소실 될 수 밖에 없는데 이는 입력시퀀스를 뒤집어서 넣는 방법으로 어느정도 극복합니다

다른 특징으로는

  • 학습시에 디코더 단에서 잘못된 답을 도출 했을 때 잘못된 시퀀스가 다음 입력으로 들어가게 된다면 제대로 된 학습을 할 수 없기 때문에 생성한 답이 아닌 Ground Truth를 넣어주어 학습시켜 주었습니다
  • 원핫 인코딩으로 임베딩을 시키면 차원크기가 어마어마하게 커지기 때문에 학습 가능한 임베딩 레이어로 임베딩 시켰습니다(차원축소)
  • 시퀀스의 시작과 끝을 알리기 위해, <sos>(start of seq) , <eos>(end of seq)등을 사용했습니다
  • 본 논문에서는 lstm을 그냥 사용하지않고 4번을 겹쳐 쌓아 사용했습니다
  • 인코더와 디코더는 서로 다른 파라미터(가중치)를 가집니다
  • 딥러닝 기법과 기존에 사용했던 통계적 기법을 같이 앙상블로 사용했을 때 성능이 가장 좋았습니다

 

 

Attention: Neural Machine Translation by Jointly Learning to Align and Translate

 

https://arxiv.org/abs/1409.0473

 

이전 Seq2Seq의 한계점
  • 사용되던 고정된 크기의 Context Vector에는 정보를 다 담기 힘든 한계가 있음(Fixed-length Context Vector)
  • 층이 깊어질수록 앞쪽의 정보가 제대로 전달되지 못하는 long term dependency (Vanishing Gradient) 문제
  • RNN 구조이기 떄문에 입력이 차례대로 들어가(앞의 결과가 뒤의 입력으로 사용됨) 계산을 병렬적으로 처리하지 못함

이들 중에서 첫번째와 두번째는 개선했다고 볼 수 있습니다.

 

Attention Model 구조

전체 구조

  • 왼쪽 아래 Encoder Hidden States 부분
    • source들이 RNN기반 구조에 들어오게 되는데, 이전 Seq2Seq와 달리 양방향의 정보를 모두 활용하기 위해 양방향 모델(bi-directional model)을 사용함
    • 이들이 결과로 만든 각 hidden state들을 순서에 맞게 각각 concat시킴
  • 오른쪽 아래 Decoder Hidden States 부분
    • t 시점에 입력으로 t-1시점의 결과(맨 처음엔 <sos>)(그림상에선 out_{t-1})와 t-1시점의 hidden state(맨 처음엔 encoder 의 마지막 hidden state)와 encoder hidden states들의 attention(그림상에서 Context)의 concat, 그리고 t-1 시점의 hidden state가 사용됨
    • 이때 Attention은 왼쪽 위에 Attention Distribution에서 이루어 지는데, 양방향 모델에서 concat한 hidden state들을 fc layer에 통과 시켜준 뒤, 역시 fc layer를 통과한 t-1 시점의 decoder hidden state와 각각 유사도 계산(보통 내적)을함 (그림상에서 보라색 부분), t-1시점과 각 인풋의 상관도를 계산하여 어느 단어의 영향을 많이 받는 과정이라 생각하면되며 그 유사도 값을 한번더 Fc layer에 보내주고 각 값들을 softmax처리하여 합이 1이 되게 만들어 준 뒤(스칼라 값이 됨), 각 값들을 가중치로써 사용하여 각 encoder 의 hidden state(concat해줬던거) 에 곱해준 뒤 더해줌(그림에서 Context)
  • 이런식으로 길이가 길어져도 앞의 encoder에서 hidden state들을 참조하기 때문에 시간은 좀더 길어 지지만, 정보 소실 문제와, 앞단 내용소실 문제들을 해결함
  • 다만 역시 RNN구조이며 심지어 구조가 양방향에 Attention도 구해야 하기 때문에 , 여전히 병렬로 처리할 수 없고, 시간은 더 늘어남

attention 구조의 이해를 돕기위한 이미지

 

attention 의 종류

  • 위 논문에서 언급된 attention은 바다나우 어텐션으로 그림에서 왼쪽과 같음
  • T 시점의 Representation을 구하기 위해 T-1시점의 히든스테이트의 attention을 계산해 context vector 계산
  • 오른쪽은 룽 어텐션으로 T 시점의 hidden state를 구한 다음 이를 가지고  context벡터를 만들어서 g현재 시점의 hidden state와 concat하여 예측함
  • attention계산과정은 같지만 적용하는 시점이 다르다고 이해하면 됨
 

 

Transformer : Attention is All You Need

https://arxiv.org/abs/1706.03762

 

기존 Attention 의 한계
  • Attention논문에서는 attention을 활용해 encoder의 hidden state들의 정보를 계속 참고해 고정된 context vector여서 담을 수 있는 정보의 한계까 있다는 점과 긴 문장이 들어가면 앞의 정보가 소실된다는 점을 개선함
  • 하지만 역시 rnn구조(양방향 lstm)을 사용하기 때문에 병렬적으로 처리하지 못하여 계산속도가 오래걸린다는ㄴ 점은 개선하지 못함

 

Transformer 모델 구조 및 특징(Encoder)

Transformer에서는 rnn구조를 사용하지 않고 모두 attention구조로 바꾸면서 병렬적으로 계산을 가능하게 해 성능 및 속도의 향상을 가져왔습니다.

  • 먼저 문장을 하나씩이 아닌 통째 임베딩을 시킨 후, 동일한 벡터 크기를 가지는 포지셔널 encoding 정보를 더해줌
    • Transforemer는 rnn 이나 cnn을 전혀 사용하지 않기 때문에 Positional encoding없이는 문장, 단어의 선후 관계를 파악 할 수 없음, 보통 sin,cos과 같은 주기함수를 사용하지만 주기함수가 아니더라도 학습이 가능한 형태라면 별도의 임베딩 레이어 로도 사용 가능 (토큰 개수가 n이고, 단어 임베딩 크기가 v일때 (n x v) 크기 )
    • 그 후 n개의 encoding layer를 통과하게 되는데, 이때 한개의 layer는 multi-headed self attention,add+Norm, feedforward, add+Norm구조로 되어있음, 각 4개의 구조는 인풋과 아웃풋의 벡터의 크기가 (n x v)로 일정함 
      (아웃풋이 인풋으로 들어가야 하기 때문에)

 

  • 인풋으로 들어가게 되면 h개의 head 마다 (v x p)크기의 Wq,Wk,Wv벡터가 있으며(Q(query),K(key),V(value)로 바꿔주는) 이 들을 인풋과 곱하면 (n x p)크기의 Q,W,V가 생김
    Q와 K^T를 곱한 뒤 루트 p(d_k)로 나눈값을 Softmax시킨 뒤 각 단어들의 value에 곱해주면 각 단어들의 유사도인 (n x p)크기의 attention vector가 head개수만큼 생기게 됨

  • h 개의 attention들을 concat하면 (n x (p x h))크기의 벡터가 생기고 ((p x h) x h)크기의 학습가능한 가중치 W^o를 곱해주어 원래 차원인 (n x v)크기로 돌아오게 됨 , 이후 add+norm(residual layer)에서 원래 인풋 벡터와 아웃풋 벡터를 더해 기존 정보를 받으면서 학습난이도를 낮추고 수렴속돌ㄹ 올리며 글로벌 옵티마를 찾을 확률을 높힘, 이후 feed-forward와 add+norm층을 한번 더 거친 이 작업을 n회 반복
Transformer 모델 구조 및 특징(Decoder)

디코더에는 총 세파트가 있는데, masked multi-head attention, encoder-decoder attention, feed-forward가 있으며 각 층이 끝날땐 add+norm층이 추가됩니다.

  • masked multi-head attention은 encoder에서 사용한 multi-headed self attetention과 구조가 같지만, 기존엔 해당 Q(query)에 대해 모든 단어와 비교한것에 반해, decoder에선 masked인 만큼 자기자신 까지만 참고하고 미래의 단어들은 참고하지 않음(Q 와 K^T를 곱하고 루트 q(dk)로 나눈 값은 (n x n)크기의 행렬을 가지는데 이때 같은 크기의 0과 -무한대로 이루어진 mask행렬을 더해준뒤 softmax해서 V를 곱해줌. 이렇게 되면 -무한대로 설정된 위치는 softmax를 하게되면 0으로 수렴하게 됨 (자기 뒤에있는 단어들은 참고하지 않게되는 효과))

  • encoder-decoder multi-headed attention은 Q(query)는 decoder의 Q를 사용하고 K,V를 사용할때 decoder단에서 임베딩의 K,V가 아닌 encoder에서의 K,V를 사용함, decoder의 단어가 encoder의 어떤 단어와 연관이 있는지 알게 됨 
 

Word2Vec : Efficient Estimation of Word Representations in Vector Space

https://arxiv.org/abs/1301.3781

 

Word2Vec의 흐름
  • 원핫 인코딩은 저장할 데이터가 너무 크고 임베딩단어 간 유사도 계산이 안되므로(모든 벡터간 거리가 같음), 더 작은 차원의 벡터에 학습시켜 임베딩을 함
  • 모든 토큰에 일정 크기의 랜덤한 값을 가지는 벡터를 할당함(이 크기는 단어갯수보다 훨씬 적음 (d << N)
  • 일련의 학습과정을 거침(Skip-gram Or cbow)
  • 학습을 마친 벡터는 각 토큰들이 사용되는 문법적 의미적 정보를 가지게 됨

중심단어/주변단어 : 문장이 있을 때 기준이 되는 단어를 중심단어, 동시에 등장하는 단어를 주변단어라고 칭합니다.
이때 동시에 등장하는 기준은 한문장이 아닌 윈도우 사이즈를 통해서 정함(사이즈 만큼 떨어진 토큰만 동시에 등장하는 단어 가령 1이라면 앞뒤 토큰까지)

 

cbow

 

  • 주변단어들로부터 중심단어를 학습하는 방법
  • 윈도우 사이즈를 m이라고 했을 때 2m개의 주변단어들이 생기고, 기존 원핫 인코딩의 크기를 (1 x V)라고 했을때 2m개의 주변단어들의 원핫 인코딩을 더해준 뒤, 학습가능한 (V x N)크기의 W벡터를 곱해주어 (1 x N)의 hidden-layer을 만듦(평균으로 만들기 위해 2m으로 나눠도 되는데, 결국 같은계산)
  • 다시 W'(N x V)를 곱해주어 (1 x V)의 결과 벡터가 나오게 되는데 이에 Soft max를 취해 만든 값을 해당 중심단어의 원핫 인코딩이 되도록 W 와 W'를 학습시킴
  • 이때 W와 W'는 전치관계가 아닌 완전히 다른 벡터이며 둘의 파라미터는 독립적으로 학습됨
  • 이후 W를 사용해 각 단어들은 N의 크기를 가지는 벡터로 임베딩 됨

 

Skip-gram

 

  • Cbow와 반대로 중심단어로 부터 주변단어들을 예측함
  • 역시 input은 토큰의 인덱스에 해당하는 One hot vetor이 크기 V이고, (V x N)인 W를 곱해서 (1 x N)인 hidden layer가 나옴
  • 다시 N x V를 곱한뒤 softmax를 하면 주변단어의 해당하는 원소는 1/2m이고 나머지는 0인 즉 1/2m이 2m 개 0이 V-2m개의 원소를 가지는 (1 x V) 크기의 벡터가 나옴 
  • 학습이 끝나면 W를 사용해 단어들을 임베딩 시킴
  • CBOW는 한 중심단어당 주변단어가 한번에 들어가는것에 비해 Skip-gram은 중심단어와 각 주변단어가 페어로 학습하기 때문에 학습량도 2m개로 더 많고 , 성능도 더 높아 많이 사용함

추가적으로 Softmax를 그냥하면 시간복잡도가 O(V)인데, 이는 V가 클 경우 굉장히 오래 걸리기 때문에 Hierarchinal Softmax를 통해 시간복잡도를 O(logV)로 줄입니다. 이는 이진트리를 활용해 최대 logN의 계산으로 softmax를 합니다.

 

 

GloVe: Global Vectors for Word Representation

https://nlp.stanford.edu/pubs/glove.pdf

 

이전 방식의 한계 (Shallow Window-Based Method) 

e.g. Word2Vec(CBOW, Skip-gram)

Word2Vec의 주요 방식인 Skip-gram과 CBOW는 Local Context(주변단어)를 활용하여 단어의 임베딩을 학습합니다. 이 모델들은 각 학습샘플에서 직접적으로 단어간의 관계를 학습하지만, 전체 말뭉치의 통계적 정보는 간접적으로만 반영합니다. 이 때문에 다음과 같은 한계가 있습니다.

  • Sparse data Problem : 특정 단어 쌍이 충분히 빈번하게 등장하지 않는 경우, 그 관계를 잘 학습하지 못할 수 있음
  • Window based train : Word2Vec은 지정된 윈도우 크기 내의 단어만을 고려하기 때문에, 더 넓은 맥락에서의 단어 사용 패턴을 포착하는 데 제한적일 수 있음
이전 방식의 한계 (Matrix Factorization Methods)

e.g. Latent Semantic Analysis(LSA, 잠재 의미 분석)

  • 고차원 공간에서 단어와 문서간의 의미적 패턴을 발견하기 위해 단어-문서 행렬을 저차원 공간으로 축소하는 기법
  • Singular Value Decomposition(SVD, 특이값 분해)을 사용해 행렬을 분해 , 단어,문서가 공유하는 잠재 의미 구조 파악(그래서 학습이라는 개념보다는 분석에 가까움(이름도 Analysis)
  • 문서의 수와 단어의 수에따라 초기 단어-문서 행렬을 구성하는데 계산이 많이 필요할 수 있으나 이후 svd를 통한 차원 축소는 비교적 빠르게 처리될 수 있음
  • n개의 문서가 있고 v개의 단어가 있을때 (v x n)행렬이고 각 행렬값들은 그 단어의 빈도수(또는 TF-IDF)로 설정하고,
    이를 저차원 k 로 특이값분해를 하면 (v x v) (v x n) (n x n)이렇게 세개의 벡터로 분리할 수 있는데, 이때 좌 특이 벡터 행렬이 임베딩벡터로 사용될 수 있으며, 특이값이 큰 순서대로 차원을 축소하여 (v x k) (k x k) (k x n)으로 차원을 축소할 수 있고, 이때 그 특이값에 해당하는 열들을 가져오면 역시 좌특이벡터를 임베딩 벡터로 사용할 수 있음
  • 한계는 새로운 문서, 단어가 추가될 때마다 새로운 단어-문서 행렬을 만들고 다시 svd를 해야함(동적인 데이터 셋엔 어울리지 않음), svd는 매우 큰 행렬에 대해서 메모리와 계산비용이 높을 수 있으며, 이는 대규모 데이터셋 처리에 있어서 한계로 작용할 수 있음

e.g. Hyperspace Analouge to Language(HAL)

  • LSA는 단어와 문서의 등장횟수에 관련하여 TF-IDF를 통해 행렬을 구성하였고, HAL은 공기 행렬(Co-occurrence matrix)을 통해 행렬을 구성한 후 둘다 차원축소를 통해 단어의 임베딩을 뽑아냄
  • 공기(Co-occurrence)란 두단어가 특정 윈도우 크기 내에서 함께 등장할 때, 이들은 서로 공기한다고 함, 예를들어 "The cat sat on the mat"에서 윈도우 크기를 2로 설정하면 "cat"과 "sat","on","the"이 셋은 서로 공기함
  • 윈도우 크기 설정 후 공기행렬을 만든 다음 (거리에 따라 가중치를 부여하기도함), PCA를 진행함 고유값과 고유벡터를 계산하고 , 고유값을 크기순으로 정렬해서 svd와 마찬가지로 차원을 축소해 임베딩 벡터로 사용
  • 이와 같은 근사는 global statistical information(글로벌 통계 정보)에 대해서 잘 포착함, 단어 간 관계나 의미적 문법적 패턴등
  • 한계로는 자주 등장하는 단어가 similarity 측정에 불균형을 초래 예를들어 the,is,of와 같은 고빈도 불용어는 문장내에서 자주 나타나므로 많은단어와 공기함, 이로써 다른 단어에 비해 과도하게 높은 영향력을 발휘해서 문맥적 중요성이 낮은 단어지만 높은 가중치를 받게되어 노이즈가 증가됨, 불용어 제거,정규화,거리가중치 조정등으로 어느정도 해결가능함
GloVe(Global Vectors)

GloVe는 global matrix fatorization 방법론과 local context window방법론의 장점을 둘다 가지고 있습니다, 각각의 ocal context windows나 sparse matrix를 학습하는대신 word-word co-occurrence matrix에서 0이아닌 원소들만 학습하여 계산효율성을 개선하였습니다.

공기 행렬을 사용하되 임의로 초기화한 단어들의 임베딩의 곱이 둘의 공기값의 로그를 씌운것과 같게 학습을 진행하여 둘이 연관이 있다면 내적값이 크게, 낮다면 내적값이 낮게 학습을 진행합니다.

 

 

FastText : Enriching Word Vectors with Subword Information (2016)

https://arxiv.org/pdf/1607.04606

 

이전 논문들의 단점
  • Word2Vec,GloVe
    • 단어 단위로 벡터를 생성하기 때문에 어휘 외 단어(out-of-vocabulary,OOV)에 대해 벡터를 생성할 수 없음
    • 또한 단어의 형태적 정보를 반영하지 않으므로 형태가 유사단어라도 전혀 다른 벡터로 나타날 수 있음
FastText

FastText는 중심단어를 n-gram의 서브워드로 나누어 학습시키고 그 서브워드 벡터들의 합으로 최종임베딩을 시킵니다. 어근이 중요한 형태론적인 언어를 학습시킬 때 효과가 좋고, OOV에 강점을 가지며 오타 및 변형에 강합니다. 다만 계산 비용이 그만큼 증가하며 많은 서브워드가 무조건 성능으로 이어지는것은 아니라고 할 수 있습니다.

  • 장점
    • 모르는 단어(Out of Vocabulary, OOV)
      • 데이터 셋만 충분한다면 위와 같은 내부 단어(Subword)를 통해 모르는 단어(Out Of Vocabulary, OOV)에 대해서도 다른 단어와의 유사도를 계산할 수 있음
      • 가령, FastText에서 birthplace(출생지)란 단어를 학습하지 않은 상태라고 해봅시다. 하지만 다른 단어에서 birth와 place라는 내부 단어가 있었다면, FastText는 birthplace의 벡터를 얻을 수 있습니다. 이는 모르는 단어에 제대로 대처할 수 없는 Word2Vec, GloVe와는 다른 점입니다.

    • 단어 집합 내 빈도 수가 적었던 단어(Rare Word)
      • FastText의 경우 만약 단어가 희귀한 단어라도 그 단어의 n-gram이 다른 단어의 n-gram과 겹치는 경우라면, Word2Vec과 비교하여 비교적 높은 임베딩 벡터값을 얻습니다. (Word2Vec의 경우에는 등장 빈도 수가 적은 단어(rare word)에 대해서는 임베딩의 정확도가 높지 않다는 단점이 있음
      • FastText가 오타(Typo)나 맞춤법이 틀린 단어 등 노이즈가 많은 코퍼스에서 강점을 가진 것 또한 이와같은 이유
    • 풍부한 형태론 정보
      • FastText는 형태론적 정보를 잘 포착합니다. 이는 특히 어근이 중요한 언어나 복합어를 다룰 때 유리함
  • 단점
    • 계산 비용 : FastText 는 각 단어를 여러 서브워드로 분해하기 때문에, 모델의 크기와 학습시간이 Word2Vec보다 많이 증가할 수 있음 이는 특히 매우 큰 말뭉치를 다룰 때 부담이 됨
    • 노이즈 증가 : 너무 많은 서브워드를 사용하는 것이 오히려 노이즈를 증가시킬 수 있으며 , 모든 서브워드가 유용한 정보를 제공하는 것은 아님

 

 

ELMo : Deep contextualized word representations (2018)

https://arxiv.org/pdf/1802.05365

 

이전 논문들의 흐름 및 ELMo의 특징

  • 기존의 Word2Vec(FastText) ,GloVe 와 같은 방법들은 다의어의 모든 의미를 담아내기 힘들다는 한계점이 있음
  • 다른 의미로 쓰이는 다이어에서 그 둘은 같은 벡터를 사용하기 때문
  • ELMo논문에서는 같은 표현의 단어(다의어)라도 문맥에 따라 word embedding을 다르게 하여 구분함
  • Context내의 syntax와 semantic정보를 모두 활용하기에 다의어에 효과적이며 큰 corpus에 대해 pretrain된 Bidirectional language model을 사용하는것이 큰 특징
  • ELMo 는 Embeddings from Language Models 의 약자이며 단어의 embedding vector가 특정되지 않기에 NLP model앞에 ELMo model을 연결하는 방식으로 사용됨

 

ELMo의 학습방식

먼저 GloVe나 Word2Vec 같이 사전 훈련된 모델들을 초기 입력으로 사용하고 양방향 LSTM모델(문맥파악을 위함)을 L층으로 쌓은 뒤 대규모 corpus로 학습시킴, 그리고 language model(LSTM)이 각각 다음단어가 그리고 이전단어가 잘 생성되게 학습한 후 hidden state들이 만들어 지면 각 층마다 정방향 역방향 hidden state들을 concat시킵니다.(여기까지가 사전학습 된 ELMo모델)

 

그렇게 더한 뒤 Downstream Task에 따라 concat 시킨 각 hidden state들에 가중치s가 곱해져서 더해집니다. 이후 스케일링 파라미터인 감마가 곱해져서 파인튜닝을 하게 됩니다. 이때 가중치 s와 스케일링 파라미터 감마는 학습 가능한 파라미터 이며, 가중치 s는 Softmax를 통해 정규화 되어 합이 1 이 되도록 조정됩니다.

(syntax parsing, pos tagging등 문법적인 문제라면 아래층의 가중치 s가 커지고, 분류 감성분석 같은 context분석(의미)라면 위층의 가중치s 가 커지게 됩니다.)

이후 문장이 단위로 입력으로 들어가게 되며 그렇기 때문에 같은 단어라고 해도, 옆에 같이 입력으로 들어가는 단어들에 따라 해당 단어의 임베딩이 다르게 때문에 임베딩의 동적생성이라고 합니다.

NLP task모델의 parameter를 freeze 시키고 ELMo파라미터(S랑 감마만,hidden state는 freeze) 만 파인튜닝 시킬 수 도있고, 전부 NLP task모델까지 한번에 파인튜닝 시킬 수 도 있습니다.

 

Ablation Study

task에 맞게 가중치를 두어 학습한것이 제일 성능이 좋았고 그 다음이 이 hidden state들의 평균을 사용한것(s를 1/l 로 통일), 그 다음이 가장위층, 가장 아래층을 사용한것으로 나타났습니다.

 

항상 시작할때만 붙이는거보다 아웃풋에도 붙이는것이, 그리고 그냥 ELMo임베딩만 쓰는것 보다 원래 임베딩을 붙여 학습시켜주는것이 가장 효과가 좋았습니다.

 

 

BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding(2018)

https://arxiv.org/pdf/1810.04805

 

GPT의 단점

Transformer의 decoder를 사용한 Gpt의 자연어 처리 능력은 문장을 처리하는데 부족합이 있을 수 있습니다. 

더불어 질의&응답 능력은 문맥 이해 능력이 중요한데, 왼쪽에서 단순히 읽어나가는 방식에는 한계가 있어 encoder를 사용하여 모든 토큰을 한번에 읽어나가서 이를 극복하려했습니다.

 

BERT 의 특징 및 학습방법

먼저 Transformer에서 encoder단으로 학습하며, base모델은 12개 Layer, large모델은 24개의 layer로 학습합니다. 이때 elf-attention 구조를 사용하여 양방향으로 문맥을 이해할 수 있기 때문에 bidirectional이라는 이름을 사용합니다.

 

먼저 Pretrain을 위해 mask방식을 사용하는데 토큰들 중에서 15퍼센트의 랜덤으로 token을 [mask]토큰으로 바꾸어 학습합니다. 그냥 하게 되면 추후 finetuning 모델에서 mismatch 가 생길 수 있기 때문에(파인튜닝에선 마스크 방식을 사용하지 않기 때문에 초기학습과 다른 상황 때문에 mismatch발생할 수 있음) 15퍼센트의 [mask]토큰 중에서 80퍼센트는 그대로 [mask]토큰으로 바꾸고 10퍼센트는 랜덤값으로 바꾸고, 10퍼센트는 원래 정답 그대로 두어 mistmatch문제를 해결합니다. 



인풋토큰은 총 세가지의 합으로 결정 되는데 먼저 단어 동일한 크기의 토큰 임베딩 벡터와, 포지셔널 임베딩 벡터, 그리고 segment 임베딩 벡터가 더해져 사용됩니다.

토큰임베딩 벡터는 30000크기의 ord Piece embedding을 사용하고, 여기서 segment 임베딩 벡터는 초기에 랜덤하게 초기화 되고 학습을 통해 결정되며, [Sep]토큰을 기준으로 시퀀스마다 다른값을 가지게 됩니다.

 

그리고 첫번째 MLM(masked language model)으로 pretrain시키고 두번째 NSP(next sentence prediction)으로 pretrain시킵니다. corpus에서 50퍼센트는 연속된 두 문장을 넣고 시작토큰인 [CLS]토큰의 결과가 1이나오게 연속되지않은 관련없는 두문장을 넣고 결과가 0이나오게 학습시킵니다 이렇게 해서 QA,NLI같은 task성능이 크게 향상됩니다.

 

파인튜닝할땐 목적에 따라 방법이 조금씩 달라지는데 왼쪽의 위의 경우는 파인튜닝할때 두개의 문장이 들어가서 Class label로 구분을 위해 학습시키고 왼쪽 아래의 경우는 question answering task 이기 때문에 ouput 이 단순히 범주의 예측인지, 새로운 문장의 생성인지에 따라 달라집니다.

오른쪽 두개는 한개의 입력만 받으며 , 왼쪽 위같이 감성분석등은 class label 을 추측할 수 도 있고

오른쪽 아래같이 각각의 토큰마다 정답을 내려주어야 하는(형태소 분석,개체명인식) task에도 다음과 같이 finetuning시킬 수 있습니다.

이모든것이 BERT구조 위에 한개의 단을 추가로 설정하는것으로 가능합니다.

 

관련글 더보기