NLP

[NLP] Word Embedding (Word2Vec, Glove)

uomnf97 2024. 12. 22. 22:20
안녕하세요! 제이덥입니다. 최근에 기술 면접을 준비하며, 기초적인 내용부터 하나씩 정리하고 있는데요. 오늘은 Word Embedding이 무엇인지, 대표적인 Word Embedding 기법인 Word2Vec, GloVe에 대한 내용을 포스팅해보았습니다. 

 

1️⃣ Word Embedding이란?

자연어(Natural Language)란 우리가 일상적으로 사용하는 언어를 말합니다. 그리고 언어의 의미를 파악하는데에는 순서가 중요하기에 자연어 데이터는 단어를 기반으로 한 순서가 있는 데이터(Sequence Data)라고 볼 수 있습니다. Word Embedding은 자연어의 기본이 되는 단어를 하나의 점, 벡터로 매핑(mapping)해주는 기법입니다. 그리고 이러한 Word Embedding은 하나의 머신러닝, 딥러닝 기법으로 학습 데이터와 출력 벡터 공간(Vector Dimension)을 주면 최적화된 벡터표현 표현형을 Output으로 출력하게 됩니다. 이렇게 최적화된 v벡터 표현형은 의미론적으로 유사한 단어를 가까운 공간에 맵핑을하게 되어 의미를 반영하게 되고, 성능을 올리는데 많은 도움이 되기에 다양한 자연어 알고리즘에 널리 사용되고 있습니다. 

 

그리고 이 기법은 앞에 말씀드렸던 워 핫 벡터 인코딩과 큰 차이를 보입니다. 원 핫 벡터는 단어사전의 수가 늘어나면, 단어 하나당 하나의 차원을 늘려야 하기 때문에 기하급수적으로 차원의 공간이 커집니다. 그리고 [ 0 1 0 0 0 0 ] 과 같이 0으로 표현이 된 불필요한 공간 또한 증가하기에 공간의 심하다는 단점이 있습니다. 하지만, Word Embedding은 차원의 공간을 고정해두기 때문에 이와 같은 공간의 낭비가 적습니다. 따라서 One-hot Vector와 비교했을 때 아래와 같이 정리할 수 있어요. 

  원 핫 벡터 인코딩(One-hot Vector Encoding) 워드 임베딩(Word Embedding)
차원의 크기 고차원(단어 집합의 크기만큼 늘어남) 저차원(고정 가능)
표현 방법 희소 벡터(Sparse Embedding/대부분 0, 맵핑된 공간만 1) 밀집 벡터(Dense Embedding/ 실수로 표현)
표현 방법 단어 사전을 통해 1, 0으로 표현  훈련 데이터로부터 학습함
값의 타입 1 or 0 실수

 

2️⃣ Word2Vec

 

Word2Vec은 단어의 의미가 인접한 단어들끼리 의미가 비슷할 것기아는 가정을 하고 만든 알고리즘입니다. 중심 단어를 지정하고 주변 단어의 의미는 중신 단어로부터 예측할 수 있음을 가정하는 것이죠. 아래 예를 살펴보겠습니다. 

- I borrowed a book from the library yesterday.
- She is writing a book about travel adventures.

 

여기서 book의 의미는 library, write 등으로 유추할 수 있는데요. 이러한 book을 중심단어로 하는 문장이 여러개라고 가정했을 때, 가장 주변에 많이 올 단어들의 확률이 높은 것들을 이용한다면 유추하기 용이해집니다. 즉, 정리해서 말하면 중심 단어가 자주 함께하는 단어들과 강한 연관성을 가진다는 것인데요. Word2Vec은 이런 관계를 학습하여 단어간 의미 유사성을 벡터로 표현하여 의미가 유사한 단어들을 비슷한 위치에 매핑시킵니다.

 

그리고 Word2Vec의 벡터 공간은 의미를 반영하고 있기에 매핑된 공간을 통해 단어의 관계를 유추할 수 있다는 독특한 특징을 가지게 됩니다. 아래 예를 들면 MAN → WOMAN 그리고 KING → QUEEN을 살펴보면 같은 방향과 크기를 가지게 되는 것처럼 말이죠.

 

출처 : Linguistic Regularities in Continuous Space Word Representations 논문

 

그리고 Word2Vec은 Word Similarity, Machine Translation, Part-of-speech (POS) tagging, Named entity recognition, Sentiment analysis, Clustering 과 같은 대부분의 NLP Task영역에서 성능향상을 가져왔습니다. 

 

3️⃣ GloVe

GloVe( Global Vectors for Word Representation)는 Word2Vec보다 학습 속도를 높이고, 더 적은 데이터에서 잘 동작하도록 고안된 알고리즘 입니다. Word2Vec는 모든 연산을 반복하지만, GloVe 다르게 사전에 미리 각 단어들의 동시 등장 빈도수를 계산하며, 단어간의 내적값과 사전에 계산된 값(Ground Truth)의 차이를 줄여가는 형태로 학습합니다. 이 표현기법 역시 단어의 의미적 유사도를 고려하고 있기에, 벡터를 통해 단어의 관계를 유추할 수 있습니다. 

Distributed Representations of Words and Phrases and their Compositionality

 

출처 :