word2vec
word2vec은 구글(Google)에서 개발한 자연어 처리 기술 중 하나로, 단어의 의미를 벡터(vector)로 표현하는 방법입니다.
원-핫 인코딩(one-hot encoding)의 경우, 단어의 의미를 제대로 표현하지 못해 유의미한 유사도를 반영할 수 없다는 단점이 있습니다.
word2vec의 경우, 비슷한 위치에서 등장하는 단어들은 비슷한 의미를 가진다 는 분포 가설을 따르는 분산 표현 방법을 사용합니다.
예를 들어, ‘사과’,’풋사과’,’자동차’라는 데이터가 있다면, 원-핫 인코딩에서는 3단어가 모두 다른 단어로 인식됩니다.
하지만 맥락에 따라 ‘사과’와 ‘풋사과’는 거의 비슷한 의미를 가질 수 있다고 생각할 수도 있습니다.
Word2Vec은 이를 위해 단어의 의미를 벡터로 표현하여, 단어 간의 유사성을 더욱 정확하게 파악하도록 합니다.
Word2Vec은 다음과 같은 두 가지 학습 방식으로 구현됩니다.
- CBOW(Continuous Bag of Words)
- Skip-gram
CBOW(Continuous Bag of Words)
단어의 주변 단어들을 이용하여 해당 단어의 의미를 예측하는 방식입니다.
CBOW는 다음과 같은 과정으로 동작합니다.
1.입력 단어 선정: CBOW는 입력 단어와 주변 단어들을 이용하여 단어의 의미를 예측합니다.
이때, 입력 단어는 예측하고자 하는 단어이며, 주변 단어들은 입력 단어의 앞뒤로 일정한 개수의 단어들입니다.
2.벡터 생성: 입력 단어와 주변 단어들의 벡터를 생성합니다.
3.예측: 생성된 벡터들을 이용하여 입력 단어의 의미를 예측합니다.
이때, 예측은 주로 딥러닝 모델을 이용하여 이루어집니다.
예를 들어 “The earth is an great place live”라는 문장이 있다고 가정해봅시다.
먼저, 각 단어들을 vector화 합니다.
1
(The, earth, is, an, great, place, live)
중심단어와 주변단어를 일정한 개수끼리 묶습니다.
1
2
3
4
5(The earth is) an great place live
The (earth is an) great place live
The earth (is an great) place live
The earth is (an great place) live
The earth is an (great place live)이를 정리해봅니다.
중심단어 벡터화된 중심단어 벡터화된 주변단어 earth (0, 1, 0, 0, 0, 0, 0) (1, 0, 0, 0, 0, 0, 0), (0, 0, 1, 0, 0, 0, 0) is (0, 0, 1, 0, 0, 0, 0) (0, 1, 0, 0, 0, 0, 0), (0, 0, 0, 1, 0, 0, 0) an (0, 0, 0, 1, 0, 0, 0) (0, 0, 1, 0, 0, 0, 0), (0, 0, 0, 0, 1, 0, 0) great (0, 0, 0, 0, 1, 0, 0) (0, 0, 0, 1, 0, 0, 0), (0, 0, 0, 0, 0, 1, 0) place (0, 0, 0, 0, 0, 1, 0) (0, 1, 0, 0, 1, 0, 0), (0, 0, 0, 0, 0, 0, 1) 벡터화된 주변단어를 input으로, 벡터화된 중심단어를 output의 예측값으로 활용하여 model을 학습시킵니다.
이를 도식화하면 아래와 같습니다.
(1, 0, 0, 0, 0, 0, 0) (the)
(0, 0, 1, 0, 0, 0, 0) (is)
이렇게 CBOW 모델은 훈련 데이터에서 여러 문장들로부터 생성된 문맥 윈도우들을 사용하여
단어를 예측하는 과정을 반복합니다.
이 과정을 통해 모델은 단어의 의미와 관련된 특성을 학습하고,
각 단어를 고정된 길이의 벡터로 표현할 수 있게 됩니다.
이 벡터를 단어 임베딩이라고 부르며, 단어 간의 유사성이나 관련성을 계산하는 데에 사용됩니다.
예를 들어, “I love to eat pizza”라는 문장을 CBOW 모델로 학습시킨 후,
“eat”이라는 단어에 대한 임베딩을 얻는다면,
이 임베딩 벡터는 “eat”과 유사한 단어들과의 거리가 가까울 것입니다.
따라서 이러한 임베딩을 활용하면,
단어 간의 의미적 유사성을 측정하거나 자연어 처리 태스크를 수행하는 데에 유용하게 활용할 수 있습니다.
예를 들어, “I love apple”이라는 문장에서 ‘love’의 의미를 예측하기 위해,
‘I’, ‘apple’의 벡터를 이용합니다.
2.Skip-gram
단어의 의미를 이용하여 주변 단어들을 예측하는 방식입니다.
예를 들어, “apple”이라는 단어의 벡터를 이용하여, ‘I’, ‘love’와 같은 주변 단어들을 예측합니다.
Word2Vec은 다음과 같은 특징을 가지고 있습니다.
단어 간의 유사성을 측정할 수 있습니다.
단어의 의미를 벡터로 표현하기 때문에, 머신러닝 모델의 입력으로 사용하기 쉽습니다.
단어의 의미를 파악하여 자동 번역, 감정 분석, 검색 엔진 등 다양한 분야에서 활용할 수 있습니다.
현재는 Word2Vec을 기반으로 한 다양한 자연어 처리 기술이 개발되고 있습니다.