AI_ML

[Boostcamp AI Tech] Item2Vec and ANN

썬2 2022. 4. 6. 20:51

1. Word2Vec

  • 워드 임베딩: 텍스트 분석을 위해 단어를 벡터로 표현하는 방법.
    • 임베딩으로 표현하는 이유: 주어진 데이터를 낮은 차원의 벡터로 만들어서 dense하게 나타내기 위해.
    • 비슷한 단어일수록 임베딩 벡터가 가까운 위치에 분포한다.
    • 임베딩으로 표현하기 위해서는 학습 모델이 필요하다. 
  • Word2Vec
    : 뉴럴 네트워크 기반, 단어를 dense vector로 표현.
    • 학습방법:
      1. Continuous Bag of Words (CBOW): 주변에 있는 단어로 센터에 있는 단어 예측.
      2. Skip-Gram: CBOW의 입력층과 출력층이 반대로 구성된 모델, 즉 센터에 있는 단어로 주변 단어 예측.
      3. Skip-Gram w/ Negative Sampling (SGNS): Negative Sampling을 추가. 중심 단어와 주변 단어가 서로 다른 임베딩 파라미터를 가진다. 최종 생성된 워드 임베딩이 2개 (positive, negative)이므로 선택적으로 하나만 사용하거나 평균을 사용한다.

 

2. Item2Vec

  • SGNS의 영감으로 아이템 기반 CF에 Word2Vec을 적용. 즉, 단어가 아닌 추천 아이템을 Word2Vec을 사용하여 임베딩.
  • 유저가 소비한 아이템 리스트를 문장으로, 아이템을 단어로 가정하여 Word2Vec 사용.
  • SGNS 기반의 Word2Vec을 사용하여 아이템을 벡터화하는 것이 목표.

 

3. Approximate Nearest Neighbor (ANN)

  • Nearest Neighbor Search: 모델 학습을 통해 구한 유저/아이템의 Vector가 주어질 때, 주어진 query vector의 인접한 이웃을 찾아주는 것.
  • Brute Force KNN: NN을 정확하게 구하기 위해서는 나머지 모든 vector와 유사도 비교를 수행해야한다. 하지만 벡터 차원이 매우 큰 경우 시간이 오래 걸려서, 정확도를 조금 낮추되, 아주 빠른 속도로 해결하는 방법이 필요하다.

=> Approximate Nearest Neighbor를 찾자.

  • ANNOY: tree-based ANN 기법. 주어진 벡터들을 여러 개의 subset으로 나누어 tree 형태의 자료 구조로 구성하고 이를 활용하여 탐색.
    • Search index를 생성하는 것이 다른 ANN 기법에 비해 간단하고 가볍다.
    • Search 해야 할 이웃의 개수를 알고리즘이 보장한다.
    • 파라미터 조정 통해 acc / speed trade-off 조정이 가능하다.
    • 기존 생성된 binary tree에 새로운 데이터를 추가할 수 없다.
  • Hierarchical Navigable Small World Graphs (HNSW): 벡터를 그래프의 node로 표현하고 인접한 벡터를 edge로 연결
  • Inverted File Index (IVF), Product Quantization - Compression 등이 있다.

 

HNSW.ipynb
0.01MB
Annoy.ipynb
0.01MB