Skip to content

7dudtj/HiRM

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

76 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

HiRM

HiRM: High Speed Recommendation Model Based on Graph Signal Processing
그래프 신호 처리 기반 고속 추천 모델

📜 최종 보고서 추후 업로드 예정
📺 발표 영상
🎨 전시 포스터

HiRM은 그래프 신호 처리 기반의 고속 추천 모델로서, High Pass Filter를 적용하여 추천의 다양성을 크게 향상하였습니다.
또한, 다양성을 높임과 동시에 모델의 성능(Recall, NDCG)도 개선하였습니다.
그래프 신호 처리 기반 모델인 GF-CF의 학습 과정 최적화를 통해, 추천 모델의 학습을 획기적으로 짧은 시간에 수행할 수 있습니다.

🧪 Research Background

Neural Network를 이용한 Collaborative Filtering 기반의 추천 모델은 학습에 많은 시간이 소모된다는 문제가 있습니다. 이러한 이유로 추천 시스템에서는 실시간으로 생성되는 수많은 데이터를 즉시 추천 모델에 반영하지 못하여 즉각적인 성능 및 정확도 개선이 불가합니다.
이러한 문제를 해결하기 위하여, 추천 모델을 Neural Network 대신에 Graph Filter를 이용하여 처리를 하는 Graph Filter based Collaborative Filtering 모델(이하 GF-CF)이 새로 등장하였습니다.

저희는 이 GF-CF 모델에 주목하였습니다. Graph Signal Processing에 기반한 새로운 접근법은 기존에 사용되던 모델들(ex. Multi-VAE, LightGCN)을 제치고 새로운 SOTA를 제시하였으며, 획기적으로 짧은 학습 시간을 보였습니다. 그러나, GF-CF에 적용된 방법을 분석해본 결과, Linear Filter와 Ideal Low Pass Filter만을 이용한다는 점을 확인하였습니다. 저희는 모델의 아키텍처를 개선하여 추천 성능을 높이고, 학습 과정을 최적화하여 학습 시간을 단축할 여지가 있다고 판단하여 연구를 진행하였습니다.

자세한 내용은 최종 보고서발표 영상에서 확인하실 수 있습니다.

📖 Methodology

  1. SVD Package
  다양한 SVD Package의 성능을 측정하여 학습 시간을 단축하고자 하였습니다.
  저희가 사용한 SVD Package는 다음과 같습니다.
  SVD Packages
  ├── sparsesvd
  │   └── sparsesvd.sparsesvd
  ├── scipy
  │   ├── scipy.sparse.linalg.svds
  │   └── cupyx.scipy.sparse.linalg.svds (CUDA version of Scipy)
  ├── fbpca
  │   └── fbpca.pca
  ├── scikit-learn
  │   └── sklearn.utils.extmath.randomized_svd
  └── pytorch
      ├── torch.svd_lowrank (CPU)
      └── torch.svd_lowrank (GPU)
  1. SVD Dimension
  SVD Dimension을 다양하게 실험하여 최적의 Dimension을 찾고자 하였습니다.
  SVD Dimensions
  ├── 64
  ├── 128
  ├── 256
  ├── 512
  └── 1024
  
  1. Diverse Filters
  다양한 Low/High pass filter를 실험하여 최적의 필터 조합을 찾고자 하였습니다.
  Filters
  ├── Linear Filter
  ├── Ideal Low Pass Filter
  ├── Gaussian Filter
  ├── Heat Kernel Filter
  ├── Butterworth Filter
  │   ├── order 1
  │   ├── order 2
  │   └── order 3
  ├── Linear Autoencoder Filter (From GF-CF)
  ├── Neighborhood Based Filter (From GF-CF)
  ├── Inverse Filter
  └── Sigmoid Low Pass Filter
  1. Alpha Value
  필터 간의 비율을 조정하는 최적의 Hyperparameter를 찾고자 하였습니다.
  -1부터 2까지, 0.05씩 증가시켜서 다양한 Metric에 대해 확인했습니다.

🏅 Result

🚅 모델 성능 및 추천 다양성 향상

Recall의 경우 GF-CF 모델 대비 약 2~3% 향상되었으며, NDCG의 경우 약 3~4% 향상되었습니다.
모델의 추천 다양성을 나타내는 지표인 Diversity의 경우, 큰 폭으로 향상되었습니다.

⏰ Training & Inference Time 감소

GF-CF는 기존에 많이 사용되던 LightGCN 모델에 비하여 학습 시간이 획기적으로 단축된 모델입니다.

HiRM은 이러한 GF-CF에 비해서도 Training time을 크게 단축하였습니다.

또한, Inference time도 크게 단축하였습니다.

🏃 How to run

  1. Install requirements
pip install -r requirements.txt
  1. Change base directory
cd HiRM
  1. To Reproduce HiRM
최소 램 32GB, VRAM 24GB 환경에서 Reproduce함을 추천드립니다.
python main.py --dataset="amazon-book" --simple_model="HiRM" --expdevice="cuda:0" --testbatch=256
python main.py --dataset="gowalla" --simple_model="HiRM" --expdevice="cuda:0" --testbatch=2048
python main.py --dataset="yelp2018" --simple_model="HiRM" --expdevice="cuda:0" --testbatch=2048
  1. To Reproduce Exp1~Exp4
Exp1~Exp4의 Reproduce는 Wiki를 확인바랍니다.

👍 Team Information

Team LGTM, Looks Good To Me

김강현 유영서 정강희

📚 Reference

Paper

Code

About

High Speed Recommendation Model based on Graph Signal Processing

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published