[추천시스템 논문리뷰] StarSpace: Embed All The Things!
들어가기에 앞서
- 본 논문은 추천시스템에도 적용이 가능하지만, Labeling (Classification), Ranking (Information Retrieval), Graph Embedding, Word/Sentence/Document Embedding 등의 분야에 다양하게 적용된다
- 추천시스템에서는 Collaborative Filtering, Content-based Recommendation에 적용할 수 있다
- 본 리뷰는 Content-based Recommendation 연구 중 작성했다
논문 링크
https://ojs.aaai.org/index.php/AAAI/article/view/11996
논문 주요 내용
0) Abstract
- StarSpace는 Facebook(현 Meta)에서 개발한 모델로, general-purpose neural embedding 모델임
1) Introduction
- Discrete한 Feature를 가진 entities를 embedding 한다
- StarSpace에서는 서로 다른 성질의 entities가 하나의 공간에 embedding 된다 (예: 문서와 단어태그)
2) Related Work
- 기존에 학습 기반으로 Word Embedding을 했던 방법으로, word2vec과 fastText가 있다 (정해진 bag of words에 대해 embedding lookup table을 만드는 형태)
- 추천에서는 SVD, SVD++ 방법으로 Embedding을 하며, 새로운 Entity에 대해 확장성을 가진다
3) Model
- Learning Entities: Discrete한 Feature의 set으로 표현됨
- Feature가 D개일 때 D x d로 matrix를 embedding한다
- 동일한 공간에 서로 종류가 다른 entities를 embedding한다. 같은 공간에 비교할 수 있다. 예) Document & label
- Loss Function
. BPR Loss와 유사한 방식으로 이해할 수 있다
. (a, b)는 positive sample, (a, bi-)는 negative sample로 이해할 수 있다
. similarity function은 cosine similarity와 내적을 적용할 수 있으며, 선택사항이다
. 논문에서 제시된 L_batch의 수식은 정확히 알 수 없으나, 코드에서 제시된 수식을 보자면
아래와 같이 margin이라는 값에서 E+의 샘플은 빼고, E-의 샘플은 더해주는 방식으로 처리한다.
비슷한 것 간의 similarity가 높을 때 loss가 작아지는 방식으로 이해할 수 있다.
torch.clamp(self.margin - positive_similarity + negative_similarity, min=0))
- Optimizer: SGD와 Adagrad를 사용한다.
- 활용
. CF: User는 bag of items로
. Content-based Recommendation: User는 bag of items로, 각 item은 bag of features로 표현
(Document의 경우, User는 선호하는 Documents로, Documents는 해당 Document가 포함하는 단어로)
3) Experiments
- Text Classification을 통해 성능 검증. fastText와 동일한 dictionary를 사용하고, 간략한 n-grams과 pruning 적용
- Datasets: AG news, DBpedia, Yelp15
- 분류 정확도는 AG news의 경우 가장 좋았고, DBpedia나 Yelp15의 경우 SOTA는 아니지만 충분히 좋은 성능을 보임
- Influence of k : embedding하는 dimension 수는 적정 수준으로 선택한다. 본 실험에서는 1~1000까지 다양한 숫자로 실험했고, 50으로 선정함
코드
1) FaceBook 제공: https://github.com/facebookresearch/StarSpace/blob/main/src/model.cpp
GitHub - facebookresearch/StarSpace: Learning embeddings for classification, retrieval and ranking.
Learning embeddings for classification, retrieval and ranking. - GitHub - facebookresearch/StarSpace: Learning embeddings for classification, retrieval and ranking.
github.com
2) Pytorch 코드: https://github.com/ChristophAlt/pytorch-starspace.git