2022. 1. 3. 12:31ㆍNLP
NLP에서 많이 활용되는 Efficient Estimation Of Word Representations In Vector Space (Word2Vec) 논문리뷰를 하겠습니다.
구글(Google)은 2013년 Word2Vec이라고 불리는Efficient Estimation Of Word Representations In Vector Space논문을 발표했습니다. Word2Vec은 단어를 벡터로 바꿔주는 embedding 방법론입니다. 이 논문에서는 큰 데이터셋으로부터 높은 수준의 연속적인 word verctors를 학습하는 기술을 소개합니다.
1. Introduction
기존의 NLP 에서는 단어를 atomic units로 취급했는데 이러한 방법은 단어간의 유사성에 대한 고려가 없고, 대량의 데이터를 학습할때는 유의미한 성능 향상을 만들어낼 수 있으나, 실제 학습을 위한 데이터의 양이 제한되어있어 기술적인 발전을 하기는 어려웠습니다.
머신러닝의 발전으로 더 복잡한 모델을 큰 데이터셋을 이용해 학습할 수 있었고, 복잡한 모델들은 단순한 모델의 성능을 뛰어넘었습니다. 가장 성공적으로 사용된 방식은 단어를 distributed representation으로 표현하는 방법입니다. 여기서 distributued representation은 단어의 의미를 다차원 공간에 분산하여 벡터화 시키는 방식입니다. 분산표현을 이용하여 단어 간의 의미적 유사성을 벡터화 하는 것을 word embedding이라 하고, 해당 논문에서는 neural net을 학습시키기 위해 분산 표현을 사용합니다.
(+ 희소표현 : one-hot encoding 각 단어 벡터간의 유사성을 표현할 수 없습니다.)
Word2Vec은 단어를 벡터로 표현하는 방식을 통해 유사한 의미의 단어가 근처에 위치할 뿐 아니라, multiple degrees of similarity(syntactic, semantic, phonetic 등의 분야의 feature를 공유)를 가질 수 있도록 만들어줍니다. 문장에서 단어가 등장하는 위치가 비슷한 word들의 vector가 가깝게 위치하고(syntax), “King” - “Man” + “Woman” = “Queen” 과 같은 단어 vector 연산을 할 수 있습니다.(semantic).
본 논문에서는 큰 데이터셋으로부터 높은 수준의 word verctors를 학습하는 기술을 소개하는 것을 메인 목표로 합니다. 선형 규칙들을 보존하는 새로운 모델 구조를 개발해, 벡터 계산의 정확도를 높이고자 합니다. 더 나아가 학습 시간과 정확도가 단어 벡터의 차원과 학습데이터의 양에 의존하는지 토의합니다.
2. Model Architectures
우선 전체모델의 parameters의 수로 computational complexity를 정의합니다.
O = E × T × Q
E : number of the training epochs (3 ~ 50)
T : number of the words (~1,000,000,000)
Q : 각 모델 구조에서 정의될 거임.
NNLM
Feedforward Neural Language model은 워드 임베딩을 통해 단어 간의 유사도를 기계에게 학습시켜, 훈련에 없던 단어의 순서에 대해 보다 정확한 예측이 가능하도록 한 모델입니다. input, projection, hidden, output layer로 구성되어있습니다. input layer 에 N개의 선행 단어들이 one-hot encoding으로 N x D 차원의 projection layer(500-2000)에 입력됩니다. (V가 vocabulary size 일때, V크기의 벡터) 주어진 단어에 대해 매핑된 임베딩 벡터에 대해 연결 연산하여 hidden layer(500 - 1000)로 전달하면 hidden layer에서 가중치를 곱해 출력층으로 보내고, 출력층에서 또 다른 가중치와 곱해진 뒤 가장 결과치가 큰 값에 해당하는 단어를 출력하는 모델입니다. 학습 코퍼스의 정답과 얻어낸 결과 간의 차이에 대해 역전파가 이루어지며 지나온 가중치 행렬들과 임베딩 벡터의 값이 조정되며 학습합니다.
RNNLM
Recurrent Neural Network Lauguage Machine은 projection layer를 제거한 NNLM에서 hidden layer의 출력이 다시 입력으로 들어오는 형식으로 모델을 구성됩니다. Reccurent 부분이 일종의 단기저장공간으로 작동하면서 이전 단어들을 체크하는 역할을 수행하기 때문에, NNLM처럼 window size(N개의 단어)를 정해주지 않아도 이전의 단어들을 활용하여 결과를 출력할 수 있습니다.
3. New Log-linear Models
처리 성능 개선과 느린 학습 속도의 개선을 위해 Word2Vec에서는 CBOW와 Skip-gram을 제시합니다.
CBOW
Continuous Bag Of Words는 주변 단어(before and after current word)를 통해 중심 단어(current word)를 예측합니다.중심단어를 예측하기 위해 주변 단어를 어느정도까지 이용할 것인지(window size) 결정하여 모델의 input으로 입력합니다. window size를 n이라 하면, 실제로 예측에 쓰이는 주변 단어의 개수는 2n개가 됩니다.
해당 architecture는 feedforward NNLM과 유사하지만, hidden layer가 제거되면서, projection layer가 모든 단어들과 공유됩니다. 또한, 전체 word vector의 평균값(bag-of-words)을 사용하기 때문에 단어의 순서가 projection에 영향을 주지 않습니다.
input : 예측에 이용할 2n개의 주변단어 1-of-V 벡터
output label : 예측하고자 하는 중간단어의 1-of-V 벡터
training complexity
Q = N x D + D x log(V)
N : 이전 단어의 개수
D : vector의 차원
V : Vocabulary 내 전체 단어 수
예를 들어 "The fat cat sat on the mat" 이라는 문장에서 n이 2일 때, 주변단어 “fat”, “cat”, “on”, “the”을 input으로 입력하여 output "sat"을 도출합니다.
Model에 주변 vector가 입력으로 들어가면서 W(M*V)와 곱해진 4개의 임베딩 벡터에 대하여 평균 값을 게산하여 projection layer로 전달되고,해당 벡터가 다시 W(V*M)와 곱해지면서 output layer로 전달됩니다. 이 벡터에 softmax를 적용한 결과 벡터와 target label 사이의 cross-entropy 값을 loss function으로 이용합니다.
Continuous Skip-gram Model
Continuous Skip-gram Model 은 CBOW과 input과 output이 반대입니다. 즉 CBOW에서는 주변 단어(before and after current word)를 통해 중심 단어(current word)를 예측했다면, Skip-gram은 중심 단어에서 주변 단어를 예측합니다.
input : 예측에 이용할 중간단어의 1-of-V 벡터
output label : 예측하고자 하는 2n개의 주변단어 1-of-V 벡터
training complexity
Q = C x (D + D x log(V))
C : 단어의 최대 거리
D : vector의 차원
V : Vocabulary 내 전체 단어 수
예를 들어 "The fat cat sat on the mat" 이라는 문장에서 “sat”이라는 중심 단어를 log-linear classifier에 input으로 입력하면 “fat”, “cat”, “on”, “the” 의 output을 도출합니다. 중심 단어에 대해서 주변 단어를 예측하므로 projection layer에서 벡터들의 평균을 구하는 과정은 없습니다.
범위를 증가시키면 word vector의 성능이 좋아지지만, 계산 비용이 증가합니다. 또한, 중심 단어와 멀리 떨어진 단어는 해당 단어와 관련이 있을 가능성이 낮기 때문에, 낮은 weight를 줍니다.
<1, C> 의 범위에서 랜덤하게 R을 뽑고, 중심 단어 이전의 R개, 중심 단어 이후의 R(Window size)개에 대해서 예측해 총 R+R =2R개의 word에 대해 예측하는 구조입니다.
Skip-gram과 기존의 방법인 NNLM, RNNLM를 비교했을 때, 단순한 구조로도 뛰어난 성능의 word vector를 학습할 수 있습니다.
4. Results
결과적으로 Word2Vec은 연산 비용이 매우 작기 때문에, 큰 차원의 큰 데이터셋에 대한 학습도 가능합니다. syntax, semantic 관점에서의 다양한 similarity를 반영하고 더 나아가 word 사이의 상관 관계를 뽑아내 다른 word에 적용시키는 방식을 도입했습니다. 이 방식은 기존의 neural network 모델들로 처리하기 어려웠던 “단어의 의미”를 기계에게 학습시키고, 기계가 의미를 이해할 수 있게 만든다는 점에서 큰 의의가 있습니다.
Word2Vec은 이전에 제시되었던 단어 벡터 및 architecture에 비해 학습 속도는 약 9배, 정확도는 약 1.3배 개선된 성능을 보이며 기계가 단어의 의미를 이해할 수 있게 하여, NLP 분야의 새로운 지평을 열어주었습니다.
reference
Word2Vec ⌜Efficient Estimation Of Word Representations In Vector Space⌟
위키 독스 https://wikidocs.net/22660
'NLP' 카테고리의 다른 글
Fasttext 논문 리뷰 : Enriching Word Vectors with Subword Information (0) | 2022.01.22 |
---|---|
GloVe 논문 리뷰 : Global Vectors forWord Representation (0) | 2022.01.16 |
Skip-gram 코드 구현 : Word2Vec의 Skip-gram 모델 구현 (0) | 2022.01.10 |
CBOW 코드 구현 : Word2Vec의 CBOW 모델 구현 (0) | 2022.01.07 |
토픽모델링: LDA(Latent Dirichlet Allocation) (0) | 2021.08.18 |