1. Count-based vs Prediction-based
방식 | 설명 | 예시 |
Count-based | 단어와 문맥이 같이 등장한 횟수(빈도)를 세는 방법 | 동시발생행렬, PMI, PPMI |
Prediction-based | 어떤 단어가 등장할지 예측하는 방법 | Word2Vec (CBOW, Skip-gram) |
2. Word2Vec (2013, Google)
- 단어를 의미 기반의 실수 벡터로 변환하는 분산표현 학습 기법 중 하나
- Prediction-based 방식의 대표적인 모델
✅ CBOW (Continous Bag Of Words)
- 주변에 있는 단어들을 입력으로 중간에 있는 단어들을 예측하는 방법
- (ex. "I __ to school" → "go"를 예측)
✅ Skip-gram
- 중간에 있는 단어들을 입력으로 주변 단어들을 예측하는 방법
- (ex. "go" → "I", "to", "school" 예측)
✅ CBOW vs Skip-gram
항목 | CBOW | Skip-gram |
예측 방향 | 문맥(Context) → 중심 단어(Target) | 중심 단어(Target) → 문맥(Context) |
학습 방식 | 주변 단어들을 보고 중심 단어 예측 | 중심 단어 하나로 주변 단어들을 예측 |
속도 | 빠름 (전체 평균 벡터 계산) | 느림 (데이터 많지만 독립적 예측) |
희귀 단어 처리 | 약함 | 강함 (드문 단어 중심으로 더 학습함) |
문맥 길이 처리 | 짧은 문맥에 강함 | 긴 문맥에 강함 |
사용 예 | 빠른 임베딩이 필요한 상황 | 더 정교한 의미 임베딩이 필요한 경우 |
ℹ️ Word2Vec의 문제점
- 말뭉치가 커질수록 단어의 수도 많아지면서 학습 양이 증가
- 단어가 10,000개면 모델은 매번 10,000개 중에서 하나의 정답을 골라야 함 → 막대한 계산 비용 발생
3. Word2Vec 속도 개선
✅ Embedding 계층
- 입력 데이터가 원- 벡터이기 때문에, 입력 데이터와 가중치 벡터(W_in)의 행렬곱은 사실 W_in의 행을 슬라이싱하는 것과 같음
- 실제 연산은 거대한 행렬 곱셈이지만, 결과적으로는 임베딩 행렬에서 해당 위치의 행 하나만 슬라이싱해서 가져오는 구조이기 때문에 속도 개선에 도움이 됨
✅ 이진분류와 Negative Sampling
- CBOW 나 Skip-gram의 마지막 층은 softmax인데, 이때 모든 단어에 대해 점수를 계산하여 확률로 변환해야하기 때문에 많은 비용 소모
- 단어가 10,000개면 소프트맥스도 10,000개의 확률을 계산해야 함
- 이를 개선하고자 Negative Sampling 사용
- "모든 단어를 다 예측하지 말고, 진짜 정답 주변 단어 + 랜덤으로 몇 개의 '오답 단어'만 선택해서 학습하자!"
- 중심 단어와 진짜 주변 단어: 긍정 샘플 (label = 1)
- 중심 단어와 무관한 랜덤 단어들: 부정 샘플 (label = 0)
love deep ✅ 1 (positive) love elephant ❌ 0 (negative) love politics ❌ 0 (negative) → 이진 분류 문제로 바뀜! (sigmoid 사용)
'Study > Deep Learning' 카테고리의 다른 글
자연어 처리(1) - 단어의 분산표현 (0) | 2025.06.05 |
---|---|
스타일 전이(Style Transfer) (0) | 2025.01.15 |
전이 학습 (Transfer Learning) (0) | 2025.01.14 |
VGGNet (0) | 2025.01.13 |