텍스트 분석 방법인 Word2Vec에서 추천 시스템 임베딩으로 발전한 Item2Vec의 관계, 차이점에 대해 배운 강의 내용을 정리 (RecSys 5강)
텍스트 분석을 위해 단어를 벡터로 표현하는 방법
비슷한 단어일수록 embedding vector가 가까운 위치에 분포
이렇게 표현하기 위해서는 학습 모델이 필요하다
→ MF도 이러한 학습의 일종이라고 볼 수도 있다
뉴럴 네트워크 기반, 간단한 구조라 효율적으로 빠른 학습 가능
학습 방법 : CBOW, Skip-Gram, Skip-Gram w/ Negative Sampling(SGNS)
CBOW
- 주변에 있는 단어를 가지고 센터에 있는 단어를 예측하는 방법
단어의 총 개수가 이고, 임베딩 벡터의 사이즈가 이라고 할 때,
input Layer에서 Projection Layer로 보내주는 Embedding matrix()와
Projection Layer에서 output layer로 보내주는 Embedding matrix()를 학습해야 한다
마지막 출력 Layer에서는 sofrmax 함수를 이용해 실제 벡터와 계산된 벡터의 cross entropy를 계산 후 학습해 나가는 과정을 반복한다.
Skip-Gram
CBOW와 반대인 모델 (입력층과 출력층이 반대로)
따라서 입력과 출력의 개수가 반대
하지만 학습하는 파라미터 행렬의 차원은 같다 (Embedding size가 같다면)
일반적으로 CBOW보다 고성능
SGNS
Skip-Gram에서는 주변 단어의 개수를 지정해주면 그 개수만큼 output이 생기지만,
SGNS에서는 주변 단어가 맞는지 아닌지 판단하는 이진분류로 바뀌게 된다.
따라서 Input에는 2개의 단어가 들어가면, 그 단어들이 가까이 있는지 판단해주는 확률값이 Output이 된다.
레이블을 생성하는 과정에서, 주변에 있는 단어들끼리만 가지고 생성하면, 모든 레이블이 1이 된다.
그렇기 때문에 주변에 있지 않은 단어들 또한 레이블을 생성하는 과정에 포함되어야 하고 그러므로 “Negative Sampling”이라는 용어가 붙게 되었다.
이 때, 중심단어 하나당 몇개의 negative sampling을 할 것이냐가 하이퍼 파라미터가 된다.
학습 데이터가 적으면 5-20, 충분히 큰 경우 2-5개를 추천한다.
ex) fox 라는 중심단어 하나당 4개의 negative label을 sampling 한다.중심 단어와 주변 단어가 각각의 embedding matrix를 갖게 된다.
Input으로 들어온 중심 단어와 주변 단어 각각의 vector를 내적하고 sigmoid 연산을 이용하여 output을 0과 1로 분류하고 발생한 loss를 이용하여 embedding matrix를 학습한다.
위 단계에서 학습한 각 단어의 Embedding Matrix, Vector가 중요한 역할을 한다.
ex) brown의 중심 단어 임베딩 벡터
유저 혹은 세션 별로 소비한 아이템 집합을 생성하고, 이 때 공간/시간적 정보는 생략된다.
ex) A,C,B 순으로 소비 했더라도 순서를 고려하지 않은 집합 {A,B,C} 탄생그렇기 때문에 당연히 집합 내 모든 아이템 쌍들은 Positive sample이 된다.
ANNOY : spotify가 개발한 tree-based ANN
ANNOY 작동 원리
이진 분류를 반복하며 tree 구조를 갖게 된다.
가장 가까운 벡터가 속한 subspace를 O(logn)의 속도로 찾을 수 있다.
ANNOY 특징
게시글에 사용된 이미지와 자료는 Boostcamp AI Tech의 강의 자료, 출처를 참고하였습니다.
출처 : https://www.slideshare.net/erikbern/approximate-nearest-neighbor-methods-and-vector-models-nyc-ml-meetup