추천시스템

[추천시스템 논문리뷰] StarSpace: Embed All The Things!

수터디 2022. 8. 3. 23:23

들어가기에 앞서

- 본 논문은 추천시스템에도 적용이 가능하지만, 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