Word2Vec이란 무엇인가요?
2013년 구글의 토마스 미콜로프(Tomas Mikolov)가 발표한 Word2Vec은 "비슷한 위치에서 등장하는 단어들은 비슷한 의미를 가진다"는 분포 가설(Distributional Hypothesis)에 기반한다.
-> 단어 주변 문맥으로 학습
단어를 “의미를 가진 벡터”로 변환하는 방법
정적 임베딩
https://arxiv.org/pdf/1301.3781
왜 필요한가?
기존 방식
-> 원한인코딩
고양이 = [1,0,0]
강아지 = [0,1,0]
문제점
- 의미 없음
- 거리 계산 불가능
- 차원 너무 큼
Word2Vec 등장
고양이 ≈ 강아지 (가까움)
고양이 ≠ 자동차 (멀음)
핵심 아이디어
비슷한 문맥에서 등장하는 단어는 의미도 비슷하다
Word2Vec의 두 가지 학습 방식
Word2Vec은 크게 두 가지 모델 구조로 나뉜다.
- CBOW (Continuous Bag of Words)
주변 단어 → 중심 단어 예측 - Skip-gram (추천 방식)
중심 단어 → 주변 단어 예측
Word2Vec의 놀라운 능력: 단어 산술 연산
Word2Vec이 처음 나왔을 때 사람들을 놀라게 했던 것은 단어 벡터끼리 더하기와 빼기가 가능하다는 점이었다.
예:
왕(King) - 남자(Man) + 여자(Woman) = 여왕(Queen)
이것이 가능한 이유는 단어들이 단순한 숫자가 아니라, '성별', '권위', '나이' 등 수백 개의 의미 정보를 담은 고차원 공간의 좌표값으로 변환되었기 때문이다.
Python 실습: Gensim 라이브러리 활용
Python의 Gensim 라이브러리를 사용하면 아주 쉽게 Word2Vec 모델을 만들 수 있다.
from gensim.models import Word2Vec
# 간단한 학습 데이터
sentences = [
["I", "love", "natural", "language", "processing"],
["Word2Vec", "is", "a", "powerful", "tool"],
["deep", "learning", "makes", "nlp", "better"]
]
# 모델 학습 (벡터 크기 100, 최소 빈도 1)
model = Word2Vec(sentences, vector_size=100, window=5, min_count=1, workers=4)
# 'nlp'와 가장 유사한 단어 찾기
similar_words = model.wv.most_similar("nlp")
print(similar_words)
장점
원-핫 인코딩보다 훨씬 작은 차원으로 단어의 의미적 유사성을 완벽하게 표현한다.
한계
동음이의어 처리가 어렵다. 예를 들어, '배(과일)'와 '배(선박)'를 문맥에 상관없이 항상 동일한 벡터로 표현한다는 단점이 있다.
- 문맥 반영 못함
- 다의어 처리 불가
요약
이 '동음이의어' 문제를 해결하고 문맥에 따라 변하는 벡터를 만들기 위해 등장한 모델이 바로 ELMo와 BERT이다.
Word2Vec은 단어를 고정된 벡터로 표현하면서, 문맥 기반으로 의미적 유사성을 학습하는 초기 임베딩 기법이다. 특히 Skip-gram 구조를 통해 작은 데이터에서도 강력한 성능을 보이며, 이후 등장한 BERT와 GPT 같은 모델들의 임베딩 개념의 기반이 되었다.
제미나이, 챗지피티 등을 이용 하여 작성
'LLM' 카테고리의 다른 글
| 12. Skip-gram (0) | 2026.04.24 |
|---|---|
| 11. CBOW (Continuous Bag of Words) (0) | 2026.04.23 |
| 9. 원-핫 인코딩(One-hot Encoding) (0) | 2026.04.21 |
| 8. 임베딩(Embedding) (0) | 2026.04.17 |
| 7. SentencePiece (0) | 2026.04.15 |