Study/Deep Learning

자연어 처리(2) - Word2Vex

볘찌 2025. 6. 11. 17:30

 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