본문 바로가기

Dev/AI 인공지능

[RecSys] Item2Vec | Word2Vec | CBOW | Skip-Gram | SGNS | Embedding | Word Embedding

728x90
반응형

01. 개요

1-1. 임베딩이란?

  • 주어진 데이터를 낮은 차원의 벡터로 만들어서 표현하는 방법
  • Spare Representation(이진값 벡터)을 Dense Representation(실수값 벡터)으로 표현

 

1-2. 워드 임베딩이란?

  • 텍스트 분석을 위해 단어(word)를 벡터로 표현하는 방법
  • 벡터로 표현함으로써, 단어간 의미적인 유사도 계산 가능
  • MF도 user latent vector, item latent vector을 이용한 임베딩이라고 해석할 수 있음

 

 

02. Word2Vec

  • 단어를 예측하는 작업을 수행하기 위해서는 자연스럽게 단어 임베딩을 수행하게 됨 → 임베딩에는 단어의 고유 특징이 저장됨
  • 대량의 문자 데이터를 벡터 공간에 투영하여 dense vector로 표현
  • 효율적이고 빠른 학습이 가능함

 

2-1. CBOW (Continous Bag of Words)

  • 입출력 사이에 하나의 히든 레이어만 있는 간단한 형태의 Neural Network
  • 주변, 즉 앞뒤에 있는 단어 n개로 센터에 있는 단어를 예측 — n은 하이퍼파라미터
  • 수식 정리
    • $V$ : 단어의 총 개수
    • $M$ : 임베딩 벡터의 사이즈
    • $W_{V×M}, W’_{M×V}$: 학습 파라미터
  • 예측값 $\hat y$ 과 정답 $y$ 의 차이를 최소화 하도록 모델 학습 : Cross Entropy

 

2-2. Skip-Gram

  • CBOW의 입출력층이 반대로 구성된 것
  • 일반적으로 CBOW보다 임베딩 벡터의 표현력이 좋다고 함
  • 주어진 단어(입력)에 대해서 주변 단어를 예측 → multi class classification

 

2-3. SGNS (Skip-Gram with Negative Samplilng)

  • Skip-Gram에 주변 단어가 아닌 단어(Negative)도 수집하는 것(Sampling)
  • 입력 단어 간 기준 단어에 대해서 주변 위치 여부를 예측 → binary classification
  • Positive Sample 하나당 Negative Sampling 은 K개 (K개는 하이퍼 파라미터로 학습 데이터가 적으면 5~20, 많으면 2~5)

 

[예측 및 학습 과정]

  1. 중심 단어를 기준으로 주변 단어들과 내적 후 sigmoid → 0과 1로 분류
  2. 역전파(backpropagation)를 통해 임베딩 파라미터 업데이터 업데이트
  3. 최종 생성된 워드 임베딩은 2개 (중심 단어 선택용 & 주변 단어 선택용)
  4. 두 워드 임베딩 중 하나만 골라 사용 혹은 평균 사용

 

 

03. Item2Vec based on SGNS

  1. 유저 혹은 세션 별로 소비한 아이템 집합 생성 → 시간, 공간 정보 X → 같은 집합 내 아이템은 모두 유사하다고 가정
  2. 집합 내 아이템 쌍들은 SGNS의 Positive Sample로 판단
  3. 모든 단어 쌍을 이용하여 내적 계산 (Skip-gram과의 차이점! — n개만 사용) — 주변 여부! 즉, 유사한 정도를 0과 1로 계산
  • t-SNE를 통해 시각화를 해본 결과, 기존 MF (SVD) 방법보다 Item2Vec의 클러스터링 성능이 더 우수함

 

  • 활용 예시
    • 아프리카TV Live2Vec (유저의 시청이력 → 라이브 방송)
    • Spotify의 Song2Vec (유저의 플레이리스트 → 노래)
    • Criteo의 Meta-Prod2Vec (유저의 쇼핑세션 → 상품)
728x90
반응형