상세 컨텐츠

본문 제목

[ 논문 리뷰 스터디 ] Recent Trends in Deep Learning Based Natural Language Processing (2017) (남정재)

심화 스터디/논문 리뷰

by 남르미누 2022. 9. 15. 20:30

본문

작성자 : 남정재

 

### 최근 자연어처리 연구트렌드를 정리한 페이퍼로, 2003년 Neural Language Model부터 2018년 BERT까지 Word Embedding 방법론의 발전 흐름을 6가지 모델을 중심으로 리뷰 진행 ###

 

본 논문을 리뷰한 DSBA 세미나 영상을 참고하여 NLP의 핵심이 되는 모델들 위주로 살펴보았습니다.

[Sparse Embedding]

1) One-hot Encoding

Text Corpus에서 중복을 제외한 모든 단어들에 대해 Vocab Dictionary를 구축

이때 단어 사전 내에서 각 단어들은 고유한 정수 인덱스 번호를 부여받게됨

이 인덱스 번호에 따라서 원 핫 벡터를 생성하게 되는데,

단어들의 인덱스 번호에 해당하는 위치에 1, 나머지는 0으로 생성됨

이때 원 핫 벡터 차원은 단어 사전의 vocab size와 동일한 차원(k)로 설정됨

  • 단어 간 관계 파악 불가 ⇒ 어떤 두 단어든 간에 두 단어 사이의 벡터의 내적값은 0이 되므로 단어 간의 유사 정도 및 관계 파악이 불가능
  • 단어 수가 늘어날수록 차원 증가 ⇒ 차원 수 조정이 불가하고, 너무 많은 단어 집합 수가 있을 때 지나치게 큰 연산 비용 발생하는 문제가 일어날 수 있음

이러한 문제를 통틀어서 희소성 문제(sparsity problem) 이라고 함

[Dense Embedding]

위와 같은 문제들을 해결하기 위해 Dense Embedding이 등장함

0) Distributed Representation

아래에 나오는 Dense Embedding 방법론들은 모두 Distributed Representation을 생성하는 것을 주목적으로 하고 있음

이때 중요하게 작용하는 분포가정(Distributional hypothesis)이 있음

⇒ 분포가정 : 비슷한 의미의 단어는 비슷한 문맥에서 등장하는 경향이 있다.

sparse embedding에서 한번더 연산을 거치게 되어 실수로 이루어진 각 단어마다의 dense vector를 생성하게 됨(dense embedding)

이때 dense vector의 차원은 vocab size보다 더 작은 값으로 설정

이는 단어의 특성을 최대한 잘 보존하고 있는 representation을 특정 저차원 공간에 매핑하므로써 연산의 효율성을 증대시킴

단어간의 유사도를 코사인 유사도와 같은 지표로 벡터 간 유사성 측정이 가능해지게 되었음

이로써 단어 간 유사도 및 관계 파악이 가능해졌음

이러한 성질들을 바탕으로 sparse한 원 핫 벡터들이 들어왔을 때 딥러닝 모델의 초기 layer로 사용되어 각 단어의 embedding representation을 생성하게 됨

그렇다면 단어 임베딩 벡터를 잘 생성하기 위해서는 문맥의 정보를 반영하는 단어 임베딩 벡터 생성이 핵심이 될텐데 문맥을 어떻게 잘 반영할 수 있을지에 대한 연구들이 진행되었음

1) Neural Language Model

2003년 발표

미리 지정한 window size 내 단어를 통해 그 다음에 위치할 단어를 예측하는 task

기존에는 통계기반의 Ngram과 같은 모델들로 task를 풀려고 했는데

최초로 딥러닝 네트워크 기반의 구조로 task를 풀어낸 연구임

윈도우 사이즈에 해당하는 이전 단어들이 입력으로 원핫벡터 형식으로 들어오게 되면

특정 임베딩 연산과정을 거쳐서 representation vector를 생성하게 됨

이때 임베딩 연산은 선형 결합 연산을 통해서 이뤄짐

(가중치 행렬과 선형결합을 통해 임베딩 벡터 생성)

모든 단어들이 같은 가중치 행렬을 공유하기 때문에 이는 Lookup table과 같다고 볼 수 있음

이렇게 생성된 임베딩 벡터들은 동일한 단일 벡터로 concat 되어서 활성화 함수를 거치고,

이후 linear classifier layer를 거치고 softmax 함수를 통해서 이전 시퀀스의 context가 주어졌을 때 다음 단어로 나올 확률 분포들이 반환되는 구조

한계점

  • window size가 고정되어있기 때문에 모델이 하나의 단어를 예측하기 위해서 보는 범위가 이전에 있던 모든 단어가 아닌 window size에만 한정되게 됨 >> 문맥 정보를 고려할 수 없다는 점
  • Lookup table을 구성하는 파라미터 외에도 concat 이후 classifier 층에서 연산되는 파라미터가 다수 존재하고, 만약 임베딩 사이즈가 증가해서 concat된 벡터의 사이즈도 증가하게 되면 classifier에서 필요로하는 파라미터의 수가 증가하기 때문에 계산 복잡도가 증가하고 과적합의 가능성이 존재함

2) Word2vec

2013년 발표

NLM(신경망언어모델)과 달리 불필요한 파라미터를 사용하지 않기 위해 임베딩 행렬만 포함시킨 은닉층 하나인 뉴럴 네트워크 구조를 사용

또한, 이전 단어들을 참고해서 다음 단어를 예측하는 NLM과 달리 window size를 기준으로 이전, 이후, 주변 단어들을 통해서 중심 단어를 예측하는 task

Word2vec은 크게 CBOW와 Skip-gram으로 나뉨

{ CBOW }

window size 내 주변 단어로 중심 단어를 예측하는 task

window size 내 주변 단어들의 원핫벡터들을 input layer에 넣게 되고,

(이때 각각 단어의 원핫벡터는 가중치 행렬 W와 만나서 선형결합을 진행함)

이렇게 해서 나온 임베딩 벡터들의 값을 평균내서 동일한 차원의 단일 벡터를 생성하고,

이는 은닉층 입력으로 넣게 됨

이 은닉층으로 입력된 벡터는 W_T(transpose)에 해당하는 또다른 가중치 행렬과 만나서 output 벡터를 반환하게 됨 (W와 W_T는 서로 전치했을 때 모양이 같을 뿐 행렬을 구성하는 파라미터 값은 다른 값으로 구성되어 있어 동일한 행렬은 아님, W는 단어 임베딩 벡터로 활용)

정답에 해당하는 원핫벡터와 크로스 엔트로피 연산을 통해서 파라미터 업데이트 진행

{ Skip-gram }

CBOW와는 정반대 task를 수행

중심단어가 주어졌을 때 window size 내 주변 단어에 위치할 단어들을 예측

중심단어를 기준으로해서 원핫벡터가 input layer에 들어가게되면 가중치 행렬 W와 만나서 단일 임베딩 벡터를 형성

이는 다시 은닉층에서 모든 단어들이 공유하는 또다른 가중치 행렬 W_T와 만나서 각각의 output 벡터를 반환하게 됨

W는 가중치 행렬이자 단어 임베딩 벡터임

Skip-gram은 CBOW와 다른 방식으로 최적화가 진행됨

o : 주변단어

c : 중심단어

P(o|c) : 중심단어가 주어졌을 때 주변단어의 나타날 확률

이 확률 값이 최대화되는 쪽으로 즉, 정답에 해당하는 주변단어들이 실제로 등장할 확률을 키우는 방향으로 학습이 진행됨

보통 Skip-gram이 CBOW보다 성능이 좋음 (대부분 Word2vec 방법론은 Skip-gram의 형식을 따름)

이유 : CBOW의 경우 역전파(back propagation) 진행시 gradient가 흐르는 방향이 주변 정보가 모두 분산되는 쪽으로 흐르게 되는 반면, Skip-gram은 output layer에 해당하는 주변 단어들이 하나의 중심 단어로 gradient를 흘려보내는 형태를 띄기 때문에 gradient가 점점 합산된다는 의미로 볼 수 있기에 Skip-gram의 성능이 CBOW보다 좋음

3) GloVe

2014년 스탠포드Univ. 발표

Word2vec의 한계점으로 고정된 윈도우 내의 단어만 고려하기 때문에 전체 코퍼스 내의 동시 등장 정보를 반영하기가 어렵다고 지적

⇒ Word2vec과 같은 단어를 예측하는 LM 기반의 방법론은 유지하되, 단어의 동시 등장 여부(co-occurence)를 추가로 고려하는 방법론 제시

(위에 보이는 표는 ice 그리고 steam이라는 단어가 주어졌을 때 동시에 k라는 단어가 등장할 확률값을 담고 있는 확률 분포표임)

동시에 등장할 확률이 클수록 혹은 작을수록 확률의 비율 값들이 다 달라지게 되고,

이러한 경우들을 모두 고려해서 임베딩된 단어 벡터 간의 내적 값은 동시 등장 확률의 로그 값과 같도록 학습하게 됨

(오른쪽 아래 그림은 여러 기업과 각 기업의 CEO 이름이 매핑된 그림임)

4) Dense Embedding 방법론의 한계

NLM이나 Word2vec의 경우 고정된 window size 내에 위치하지 않은 단어들을 고려하지 못함

GloVe의 경우 동시등장빈도행렬을 통해서 모든 단어의 등장 여부에 대한 문맥 정보를 담고 있지만 단어 수가 많아지면 행렬의 크기가 커지기 때문에 계산 복잡도가 급격하게 증가함

 

공통된 문제점 : 문맥에 따른 단어의 의미 차이를 고려하지 못하는 점 (ex. play: 놀다 / 연주하다)

이를 극복하기 위해서 Contextual Embedding 방법론들이 새롭게 고안됨

 

[Contextual Embedding]

Contextual Embedding : 각 단어가 각각 다른 문맥에서 등장했을 때 그 차이를 반영해서 문맥별로 다른 임베딩 벡터를 생성할 수 있도록 해주는 방법론

1) ELMo

2018년 발표

RNN 계열(LSTM)의 sequential 임베딩을 다룸

LM과 같이 이전 시퀀스가 주어졌을 때 다음 시퀀스를 예측하는 LM task를 수행

순방향 언어 모델과 역방향 언어 모델 각각 구성하여서 서로의 가중치는 공유하지 않도록 설정

  • 순방향 언어 모델 : 해당 단어 이전에 등장하는 단어의 문맥을 고려
  • 역방향 언어 모델 : 해당 단어 이후에 등장하는 단어의 문맥을 고려

같은 단어라고 할지라도 문장 시퀀스에 따라 다른 임베딩 벡터를 생성하기 위해 기존 방법론과는 다른 구조를 구성하게 됨

{ play라는 단어의 임베딩 벡터를 산출하기 위한 과정 }

  1. play 단어의 character embedding을 수행하게 됨 (단어 기준인 워드 임베딩과는 다르게 단어 안에 있는 철자 기준이라고 보면 됨) ⇒ p, l, a, y를 기준으로 하는 원핫벡터가 들어오게 됨
  2. 그리고나서 캐릭터 임베딩 벡터들이 LSTM을 타고 들어가서 총 2개의 LSTM 층을 거치게 되면서 각각의 hidden state vector를 반환하게 됨 (이때 생성된 모든 벡터를 보존하게됨) (역방향도 마찬가지로 진행됨)
  3. 위의 과정으로 생성된 순방향, 역방향의 각 벡터들을 concat해주고 가중치들과 곱해서 가중합 벡터를 도출하게됨
  4. 여기에 이어서 벡터 크기를 조절하는 파라미터를 추가적으로 곱해줌으로써 최종적인 representation vector를 생성하게됨

확실히 dense embedding 방법론 보다는 복잡한 구조를 갖고있음

모든 시퀀스에서의 단어들, 그리고 문맥을 고려하기 위해서 순방향과 역방향의 bidirectional한 구조를 효율적으로 활용하고자 했음을 알 수 있음

(참고로 Transformer(2017)보다 늦게 등장한 방법론이지만 Transformer가 등장하기 전까지는 LSTM과 같은 RNN 계열의 모델들이 많이 사용되었기에 LSTM layer을 활용한 ELMo의 순서를 먼저 배치하여 언급하였음)

2) Transformer

2017년 구글 발표

기존의 RNN 계열의 모델들이 순차적으로 입력시퀀스를 받아서 연산을 처리하던 것과는 달리,

self-attention 구조에서 기반한 multi head attention을 통해서 병렬적인 연산처리를 가능케 했다는 큰 contribution을 갖고 있음

Transformer 모델은 임베딩 자체를 위한 모델은 아니고, machine translation과 같은 seq2seq task를 해결하기 위한 모델 구조로써 제안되었음

다만, LSTM을 뛰어넘는 좋은 성능을 기록하게 되면서 당시 Transformer를 활용해서 사전 훈련한 언어 모델을 학습하는 시도가 등장하게 되었고, 뒤에 나올 BERT 또한 Transformer의 Encoder 구조를 계승한 연구임 (BERT를 이해하기 위해서는 Transformer 이해가 필수적임)

3) BERT

2018년 구글 발표

Transformer의 Encoder 구조를 사용하여 비지도 기반의 사전학습을 수행

  • 대표 사전 학습 task : Masked Language Model, Next sentence prediction, …

시퀀스 내 모든 단어간의 관계를 고려한 임베딩 벡터를 생성함

사전 학습 이후에는 해당하는 임베딩을 fine tunning 작업을 거치게 해서 각각 downstream task에 맞게 활용하게 함

가장 큰 contribution은 하나의 단일한 임베딩을 대량의 텍스트 코퍼스로 미리 사전 학습을 수행해서 그 어떤 task에 적용을 하더라도 약간의 fine tunning 작업을 시행하게 되면 잘 들어맞는 결과를 얻을 수 있다는 점이다.

버트의 동작과정??

버트의 input은 문장의 첫 시작을 알리는 CLS 토큰, 첫번째 문장, 첫번째 문장과 두번째 문장을 잇는 SEP 토큰, 두번째 문장, 마지막을 알리는 SEP 토큰까지 총 3개의 스페셜 토큰과 2개의 문장 토큰으로 나눠짐

버트의 인풋이 두개의 문장으로 구성되는 이유 : 버트가 수행하는 subtask 중 하나인 next sentence prediction 때문임

처음에 문장이 들어왔을 때 스페셜 토큰과 더불어서 서브워드 기반의 워드 피스 토크나이저를 통해서 분절과정이 이루어지게 됨

이후에 트랜스포머와 동일한 positional encoding 과정을 거치게 되고, 문장간의 분류를 위해서 만들어지는 segment embedding까지 전부 더해서 input embedding vector를 단어마다 생성하게 됨

이렇게 input이 들어오게 되면 사전학습 task로 총 2가지를 수행하게 됨

  • BERT 사전 학습 task 1 : Masked Language Model

⇒ 입력 텍스트의 15% 단어를 랜덤으로 마스킹한 후 해당 단어들을 예측하는 task 수행

⇒ 변형을 가하는 방법은 80%는 MASK 토큰으로 대체하고 10%는 랜덤으로 다른 단어로 대체하고 또 나머지 10%는 동일한 단어를 그대로 유지하는 식으로 진행

  • BERT 사전 학습 task 2 : Next sentence prediction

⇒ 버트의 인풋으로 주어지는 두가지 문장이 서로 실제로 이어지는 문장인지를 판별하는 task

⇒ CLS 토큰에 해당하는 위치의 출력층을 전체 문장들의 모든 정보를 담고 있는 벡터로 간주하고, 이 출력층에서 NSP classifier를 추가를 해서 문장이 이어지는지 아닌지의 여부를 판단

버트의 경우 ELMo와 마찬가지로 대량의 unlabel text corpus를 가지고 사전학습을 진행하게 됨

앞선 두가지 subtask를 사전 학습 과정 중에 수행하게 됨

대량의 데이터를 가지고 사전 학습을 수행한 만큼 업데이트된 파라미터들은 새로운 text input이 들어왔을 때 단어들 간의 관계를 충분히 잘 고려해서 word representation vector를 반환할 수 있게끔 하도록 업데이트가 되어있을 것임

그리고 각각의 BERT의 layer들은 Transformer와 같은 multi head self attention이나 feed forward network로 구성된 구조를 가짐

text input이 새로 들어왔을 때 input embedding 이후에 총 12개의 BERT layer를 통과해서 최종적으로 단어마다 임베딩 벡터를 반환하게 됨

이 방법론을 기점으로 워드 임베딩에서의 대량의 데이터를 가지고 하는 사전 학습이 주목받기 시작했음

[ Conclusion ]

위에서 살펴본 워드 임베딩 방법론들은 “문맥을 잘 반영하고 있는 임베딩 벡터 생성하는 것”이 핵심

Dense Embedding에서 Contextual Embedding으로 발전함에 따라 거시적인 관점에서 바라본 특징

  1. Shallow 네트워크에서 Deep 네트워크로의 발전

GloVe까지는 단일 은닉층으로 구성된 만큼 얕은 구조를 가지고 있었는데 이후에 등장한 모델들은 굉장히 깊은 구조의 네트워크를 갖고 있음

  1. ELMo의 경우 RNN 계열의 모델이었기에 sequential한 연산 처리 및 임베딩 벡터를 생성했다면, Transformer와 BERT의 경우는 self attention과 multi head attention 이라는 연산을 통해서 병렬적인 처리가 가능하게 되었음 (Sequential ⇒ Parallel)
  2. 초창기 Dense Embedding 방법론들이 input 데이터로 주어지는 text에 특화된 임베딩 벡터를 생성해냈다면, 후반부의 방법론들은 대량의 text corpus를 활용해서 사전 학습을 수행했기 때문에 다양한 문맥하에서 단어의 representation vector를 생성할 수 있다는 방향으로 발전되었음

⇒ 초창기 방법론들도 사전학습은 가능하나 다의어와 같은 단어들에 대한 특성을 반영하지 못하는 한계가 있었음

⇒ 후반부 방법론들이 등장했기에 사전학습 효과성에 큰 영향을 미쳤다고 할 수 있음

관련글 더보기

댓글 영역