Title: RecVAE: A New Variational Autoencoder for Top-N Recommendations with Implicit Feedback
Authors: Ilya Shenbin, Anton Alekseev, Elena Tutubalina, Valentin Malykh, Sergey I. Nikolenko
Abstract: Recent research has shown the advantages of using autoencoders based on deep neural networks for collaborative filtering. In particular, the recently proposed Mult-VAE model, which used the multinomial likelihood variational autoencoders, has shown excellent results for top-N recommendations. In this work, we propose the Recommender VAE (RecVAE) model that originates from our research on regularization techniques for variational autoencoders. RecVAE introduces several novel ideas to improve Mult-VAE, including a novel composite prior distribution for the latent codes, a new approach to setting the β hyperparameter for the β-VAE framework, and a new approach to training based on alternating updates. In experimental evaluation, we show that RecVAE significantly outperforms previously proposed autoencoder-based models, including Mult-VAE and RaCT, across classical collaborative filtering datasets, and present a detailed ablation study to assess our new developments. Code and models are available at https://github.com/ilya-shenbin/RecVAE.
Running with RecBole¶
hidden_dimendion (list): The hidden dimension of auto-encoder. Defaults to
latent_dimendion (int): The latent dimension of auto-encoder. Defaults to
dropout_prob (float): The drop out probability of input. Defaults to
beta (float): The default hyperparameter of the weight of KL loss. Defaults to
gamma (float): The hyperparameter shared across all users. Defaults to
mixture_weights (list): The mixture weights of three composite priors. Defaults to
[0.15, 0.75, 0.1].
n_enc_epochs (int): The training times of encoder per epoch. Defaults to
n_dec_epochs (int): The training times of decoder per epoch. Defaults to
training_neg_sample (int): The negative sample num for training. Defaults to
A Running Example:
Write the following code to a python file, such as run.py
from recbole.quick_start import run_recbole run_recbole(model='RecVAE', dataset='ml-100k')
Note: Because this model is a non-sampling model, so you must set
training_neg_sample=0 when you run this model.
Tuning Hyper Parameters¶
If you want to use
HyperTuning to tune hyper parameters of this model, you can copy the following settings and name it as
learning_rate choice [0.01,0.005,0.001,0.0005,0.0001] latent_dimension choice [64,100,128,150,200,256,300,400,512]
Note that we just provide these hyper parameter ranges for reference only, and we can not guarantee that they are the optimal range of this model.
Then, with the source code of RecBole (you can download it from GitHub), you can run the
run_hyper.py to tuning:
python run_hyper.py --model=[model_name] --dataset=[dataset_name] --config_files=[config_files_path] --params_file=hyper.test
For more details about Parameter Tuning, refer to Parameter Tuning.
If you want to change parameters, dataset or evaluation settings, take a look at