Word2Vec은 단어의 의미를 숫자로 표현하는 시대를 열었습니다. 하지만 하나의 단어에 하나의 벡터만 사용하는 구조에는 분명한 한계가 있었습니다. 같은 단어라도 문장에 따라 전혀 다른 의미를 갖는 경우를 충분히 표현할 수 없었기 때문입니다.
언어를 더 깊이 이해하려면 단어 자체뿐 아니라 앞뒤 문맥과 단어의 순서까지 함께 고려해야 합니다. 이러한 한계를 극복하기 위한 새로운 시도가 이어졌고, 그 과정에서 RNN과 같은 문맥 기반 모델이 등장하게 됩니다.
The Original Goal
Word2Vec은 무엇을 해결하려고 했을까?
컴퓨터에게 단어는 처음에는 단순한 Token ID에 불과합니다.
Token ID만으로는 cat과 dog가 비슷하고,
cat과 airplane은 멀다는 관계를 계산할 수 없습니다.
단어를 계산 가능한 벡터로 표현
단어를 단순한 번호가 아니라 여러 숫자로 이루어진 임베딩 벡터로 바꾸려 했습니다.
비슷한 단어 관계를 자동 학습
비슷한 문맥에서 사용되는 단어가 벡터 공간에서도 가까워지도록 만들었습니다.
다른 NLP 작업에서 재사용
한 번 학습한 임베딩을 검색, 분류, 추천, 감성 분석 등의 입력으로 활용할 수 있게 했습니다.
Word2Vec의 진짜 목표는 단어 예측 자체가 아니라,
단어의 사용 관계가 반영된 좋은 Embedding Table을 만드는 것이었습니다.
Real-World Uses
Word2Vec은 실제로 어디에 사용되었을까?
Word2Vec은 단어를 의미 있는 벡터로 바꿀 수 있게 하면서
단순한 문자열 일치보다 의미 관계를 활용하는 여러 자연어 처리 작업에 사용되었습니다.
검색과 유사어 확장
사용자가 입력한 단어와 벡터 공간에서 가까운 단어를 찾아
검색 범위를 넓힐 수 있습니다.
검색어: 자동차
↓
승용차 · 차량 · SUV · car
추천 시스템
상품명, 콘텐츠, 사용자 행동을 단어처럼 다루고
비슷한 사용 패턴을 가진 항목을 가까운 벡터로 표현할 수 있습니다.
노트북을 자주 본 사용자
↓
마우스 · 키보드 · 노트북 가방 추천
문서와 뉴스 분류
문서에 포함된 단어 임베딩을 입력으로 사용해
경제, 스포츠, 정치 같은 범주를 분류할 수 있습니다.
은행 · 주식 · 금리 · 채권
↓
경제 기사
감성 분석훌륭하다, 멋지다, 최고다처럼
비슷한 문맥에서 사용된 단어의 관계를 분류 모델이 활용할 수 있습니다.
최고 · 훌륭 · 만족
↓
긍정 감성 판단에 활용
초기 챗봇과 대화 모델
Transformer 이전에는 Word2Vec 또는 유사한 임베딩을
RNN의 입력으로 사용하는 구조가 널리 활용되었습니다.
Token ID → Word Embedding
↓
RNN → 응답 분류 또는 생성
기계번역과 문장 모델
단어 임베딩을 RNN 기반 번역 모델의 입력으로 사용해
단어 간 유사성과 관계를 학습에 활용했습니다.
영어 단어 임베딩
↓
RNN 번역 모델 → 다른 언어 출력
Word2Vec은 당시 매우 중요한 기술이었습니다.
단어를 단순한 기호가 아니라 의미 관계가 반영된 벡터로 바꾸면서,
여러 자연어 처리 모델의 입력 표현을 크게 개선했습니다.
따라서 Word2Vec의 한계를 살펴본다는 것은
Word2Vec이 쓸모없었다는 뜻이 아니라,
실제 활용을 통해 다음에 해결해야 할 문제가 분명해졌다는 뜻입니다.
From Success to Limitation
하지만 단어 벡터만으로는 해결되지 않는 문제가 있었다
검색, 추천, 분류처럼 단어 사이의 유사성이 중요한 작업에서는
Word2Vec이 큰 효과를 보였습니다.
그러나 문장 안에서 같은 단어의 의미가 달라지거나,
단어 순서가 문장의 뜻을 바꾸는 문제는 여전히 남아 있었습니다.
Word2Vec이 잘한 것
단어 사이의 전반적인 의미 관계와 사용 패턴을 하나의 벡터에 담았습니다.
Word2Vec이 어려워한 것
현재 문장의 문맥, 단어 순서, 다의어의 실제 의미를 반영해 벡터를 바꾸는 일입니다.
이제부터는 Word2Vec이 실제로 널리 활용되었음에도
왜 더 새로운 문맥 모델이 필요했는지 살펴봅니다.
One Word, One Vector
가장 큰 한계: 하나의 단어에는 하나의 벡터만 있다
Word2Vec은 단어마다 하나의 임베딩 벡터를 Embedding Table에 저장합니다.
따라서 같은 단어가 어떤 문장에 등장하더라도 항상 같은 벡터를 가져옵니다.
문장에 따라 의미가 달라지는 bank
I deposited money in the bank.
은행
We sat on the river bank.
강둑
→
Word2Vec의 bank 벡터[0.42, -0.18, 0.73, 0.06]
두 문장에서 의미는 다르지만 Lookup 결과는 같습니다.
Word2Vec의 임베딩은 문장이 입력되기 전에 이미 정해져 있으므로,
현재 문맥에 따라 벡터가 달라지지 않습니다.
Static Embedding
정적 임베딩(Static Embedding)이란?
하나의 단어에 항상 같은 벡터를 사용하는 방식을 정적 임베딩이라고 합니다.
문장
단어
Word2Vec Lookup 결과
은행에서 돈을 찾았다.
bank
항상 같은 bank 벡터
강둑을 따라 걸었다.
bank
항상 같은 bank 벡터
여기서 정적이라는 말은 학습 중에 벡터가 바뀌지 않는다는 뜻이 아닙니다.
학습 과정에서는 벡터가 계속 수정됩니다.
정적이라는 말은 학습이 끝난 뒤 현재 문맥에 따라 벡터가 달라지지 않는다는 뜻입니다.
Training Context vs Usage Context
Word2Vec은 문맥을 사용하지만 문맥에 따라 벡터를 바꾸지는 않는다
학습할 때
Word2Vec은 주변 단어를 관찰해 단어 간 통계적 관계를 학습합니다.
즉, 문맥을 이용해 임베딩을 만듭니다.
사용할 때
학습이 끝난 뒤에는 현재 문장을 다시 읽어 벡터를 새로 만들지 않습니다.
Token ID에 대응하는 고정 벡터를 그대로 가져옵니다.
Word2Vec은 문맥을 이용해 학습하지만,
문맥에 따라 달라지는 임베딩을 생성하지는 않습니다.
Word Order
단어 순서와 문장 구조를 직접 표현하기 어렵다
Word2Vec은 단어 사이의 공기 관계를 잘 학습하지만,
문장 전체를 순서대로 읽어 주어와 목적어의 관계를 계산하는 모델은 아닙니다.
dog bites man
dogbitesman
dog가 행동 주체이고 man이 대상입니다.
man bites dog
manbitesdog
man이 행동 주체이고 dog가 대상입니다.
두 문장은 같은 단어들로 구성되어 있지만 순서에 따라 뜻이 완전히 달라집니다.
개별 단어 임베딩만으로는 이 문장 구조를 직접 표현하기 어렵습니다.
Sentence Representation
문장이나 문단 전체의 의미를 직접 만들지 못한다
Word2Vec의 기본 산출물은 단어별 임베딩 벡터입니다.
문장 전체를 하나의 의미 벡터로 만들어 주는 모델은 아닙니다.
Word2Vec이 제공하는 것
dog → 벡터
bites → 벡터
man → 벡터
Word2Vec만으로 부족한 것
문장 전체의 의미
주어와 목적어의 관계
앞 문장과 뒤 문장의 연결
대화의 누적 문맥
단어 벡터의 평균을 이용해 문장 벡터를 만들 수는 있지만,
그 과정에서는 단어 순서와 중요한 문법 관계가 사라질 수 있습니다.
Out-of-Vocabulary
Vocabulary에 없는 단어는 바로 처리하기 어렵다
고전적인 Word2Vec은 학습 Vocabulary에 포함된 단어마다 하나의 벡터를 저장합니다.
새로운 단어가 들어오면 대응하는 행이 없을 수 있습니다.
새로운 단어
희귀어·신조어·오타
Vocabulary 확인
등록 여부 확인
단어 없음
Token ID 없음
Embedding Table
대응 행 없음
OOV 문제
벡터 Lookup 불가
현대 LLM은 단어 전체보다 서브워드 토큰을 사용하여
새로운 단어나 희귀 단어도 더 작은 조각으로 나누어 처리합니다.
Bias in Embeddings
학습 데이터의 편향도 임베딩에 반영될 수 있다
Word2Vec은 데이터에서 반복되는 통계적 관계를 학습합니다.
따라서 데이터에 편향된 표현이 많으면 그 관계도 임베딩에 반영될 수 있습니다.
학습 데이터
특정 단어들이 편향된 방식으로 반복해서 함께 등장합니다.
Word2Vec 학습
반복되는 동시 출현 패턴을 벡터에 반영합니다.
Embedding 결과
실제 사실과 무관한 고정관념이나 편향도 함께 나타날 수 있습니다.
Word2Vec은 데이터에 존재하는 언어 패턴을 학습하지만,
그 패턴이 항상 공정하거나 사실에 부합하는 것은 아닙니다.
Interactive Comparison
정적 임베딩과 문맥 기반 표현 비교하기
현재 문장
해석:
bank 벡터
문맥 기반 벡터 값은 원리를 설명하기 위한 예시입니다.
실제 값은 모델과 학습 데이터에 따라 달라집니다.
Why Context Models?
Word2Vec의 한계는 다음 모델이 필요한 이유가 되었다
Word2Vec
단어별 고정 벡터
다의어 문제
bank 의미 구분 어려움
순서 문제
문장 구조 표현 부족
문맥 필요
앞뒤 정보 활용
순차 모델
RNN 등장
단어 하나의 고정 벡터만으로는 현재 문장의 의미를 충분히 설명하기 어렵습니다.
따라서 문장을 순서대로 읽고,
앞에서 나온 정보를 다음 계산에 전달하는 모델이 필요해졌습니다.
Common Questions
자주 생기는 의문
Word2Vec은 문맥을 전혀 사용하지 않는가?
아닙니다. Word2Vec은 학습할 때 주변 문맥을 적극적으로 사용합니다.
다만 학습이 끝난 뒤에는 현재 문장에 따라 벡터를 새로 만들지 않습니다.
정적 임베딩은 항상 쓸모가 없는가?
아닙니다. 계산량이 작고 단어 유사도, 검색, 간단한 분류처럼
문맥 변화가 크지 않은 작업에서는 여전히 유용할 수 있습니다.
Word2Vec은 지금도 사용되는가?
최신 대규모 언어 모델에서는 문맥 기반 임베딩이 중심이 되었지만,
계산 비용이 작고 단어 유사도나 간단한 검색·분류가 중요한 환경에서는
Word2Vec이 여전히 활용될 수 있습니다.
또한 분산 표현, 임베딩 학습, Negative Sampling 같은 핵심 아이디어는
이후의 자연어 처리 기술에도 큰 영향을 주었습니다.
Word2Vec의 단어 벡터를 평균하면 문장 의미를 얻을 수 있는가?
간단한 문장 표현으로 사용할 수는 있습니다.
그러나 단어 순서, 부정 표현, 주어와 목적어 관계 같은 정보는 충분히 반영되지 않을 수 있습니다.
Summary
학습 내용 정리
Word2Vec은 단어의 의미 관계를 계산 가능한 벡터로 표현하려고 등장했습니다.
학습된 임베딩은 검색, 추천, 문서 분류, 감성 분석, 초기 챗봇과 번역 모델 등에 활용되었습니다.