readme.md 5.6 KB
Newer Older
M
malin10 已提交
1 2 3
# 召回模型库

## 简介
F
frankwhzhang 已提交
4
我们提供了常见的召回任务中使用的模型算法的PaddleRec实现, 单机训练&预测效果指标以及分布式训练&预测性能指标等。实现的召回模型包括 [SR-GNN](gnn)[GRU4REC](gru4rec)[Sequence Semantic Retrieval Model](ssr)[Word2Vector](word2vec)[Youtube_DNN](youtube_dnn)[ncf](ncf)
M
malin10 已提交
5 6 7 8 9 10 11

模型算法库在持续添加中,欢迎关注。

## 目录
* [整体介绍](#整体介绍)
    * [召回模型列表](#召回模型列表)
* [使用教程](#使用教程)
F
frankwhzhang 已提交
12
    * [训练 预测](#训练 预测)
M
malin10 已提交
13 14 15 16 17 18 19
* [效果对比](#效果对比)
    * [模型效果列表](#模型效果列表)

## 整体介绍
### 召回模型列表

|       模型        |       简介        |       论文        |
C
Chengmo 已提交
20 21 22 23 24 25 26 27
| :------------------: | :--------------------: | :--------- |
| Word2Vec | word2vector | [NIPS 2013][Distributed Representations of Words and Phrases and their Compositionality](https://papers.nips.cc/paper/5021-distributed-representations-of-words-and-phrases-and-their-compositionality.pdf) |
| GRU4REC | SR-GRU | [2015][Session-based Recommendations with Recurrent Neural Networks](https://arxiv.org/abs/1511.06939) |
| Youtube_DNN | Youtube_DNN | [RecSys 2016][Deep Neural Networks for YouTube Recommendations](https://static.googleusercontent.com/media/research.google.com/zh-CN//pubs/archive/45530.pdf) |
| SSR | Sequence Semantic Retrieval Model | [SIGIR 2016][Multi-Rate Deep Learning for Temporal Recommendation](http://sonyis.me/paperpdf/spr209-song_sigir16.pdf) |
| NCF | Neural Collaborative Filtering | [WWW 2017][Neural Collaborative Filtering](https://arxiv.org/pdf/1708.05031.pdf) |
| GNN | SR-GNN | [AAAI 2019][Session-based Recommendation with Graph Neural Networks](https://arxiv.org/abs/1811.00855) |
| Fasttext | fasttext | [EACL 2017][Bag of Tricks for Efficient Text Classification](https://www.aclweb.org/anthology/E17-2068.pdf)  |
Y
yaoxuefeng 已提交
28
| RALM | Real-time Attention Based Look-alike Model | [KDD 2019][Real-time Attention Based Look-alike Model for Recommender System](https://arxiv.org/pdf/1906.05022.pdf)  |
M
malin10 已提交
29 30 31 32 33 34 35 36 37 38 39 40 41

下面是每个模型的简介(注:图片引用自链接中的论文)

[Word2Vec](https://papers.nips.cc/paper/5021-distributed-representations-of-words-and-phrases-and-their-compositionality.pdf):
<p align="center">
<img align="center" src="../../doc/imgs/word2vec.png">
<p>

[GRU4REC](https://arxiv.org/abs/1511.06939):
<p align="center">
<img align="center" src="../../doc/imgs/gru4rec.png">
<p>

F
frankwhzhang 已提交
42 43 44 45 46
[Youtube_DNN](https://static.googleusercontent.com/media/research.google.com/zh-CN//pubs/archive/45530.pdf):
<p align="center">
<img align="center" src="../../doc/imgs/youtube_dnn.png">
<p>

M
malin10 已提交
47 48 49 50 51
[SSR](http://sonyis.me/paperpdf/spr209-song_sigir16.pdf):
<p align="center">
<img align="center" src="../../doc/imgs/ssr.png">
<p>

F
frankwhzhang 已提交
52 53 54 55 56
[NCF](https://arxiv.org/pdf/1708.05031.pdf):
<p align="center">
<img align="center" src="../../doc/imgs/ncf.png">
<p>

M
malin10 已提交
57 58 59 60
[GNN](https://arxiv.org/abs/1811.00855):
<p align="center">
<img align="center" src="../../doc/imgs/gnn.png">
<p>
M
malin10 已提交
61

M
malin10 已提交
62 63
## 使用教程(快速开始)
### 
M
malin10 已提交
64
```shell
C
Chengmo 已提交
65 66 67 68 69 70 71 72 73
git clone https://github.com/PaddlePaddle/PaddleRec.git paddle-rec
cd paddle-rec

python -m paddlerec.run -m models/recall/word2vec/config.yaml # word2vec
python -m paddlerec.run -m models/recall/ssr/config.yaml # ssr
python -m paddlerec.run -m models/recall/gru4rec/config.yaml # gru4rec
python -m paddlerec.run -m models/recall/gnn/config.yaml # gnn
python -m paddlerec.run -m models/recall/ncf/config.yaml # ncf
python -m paddlerec.run -m models/recall/youtube_dnn/config.yaml # youtube_dnn
M
malin10 已提交
74
```
M
malin10 已提交
75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92

## 使用教程(复现论文)
为了方便使用者能够快速的跑通每一个模型,我们在每个模型下都提供了样例数据,并且调整了batch_size等超参以便在样例数据上更加友好的显示训练&测试日志。如果需要复现readme中的效果请按照如下表格调整batch_size等超参,并使用提供的脚本下载对应数据集以及数据预处理。

| 模型	| batch_size | thread_num | epoch_num |
| :---: | :---: | :---: | :---: |
| Word2Vec | 100 | 5 | 5 |
| GNN | 100 | 1 | 30 |
| GRU4REC | 500	| 1	| 10 |

### 数据处理
参考每个模型目录数据下载&预处理脚本。
```bash
sh data_prepare.sh
```

### 训练
```bash
C
Chengmo 已提交
93 94 95
git clone https://github.com/PaddlePaddle/PaddleRec.git paddle-rec
cd paddle-rec

M
malin10 已提交
96 97 98 99 100 101 102 103 104
cd modles/recall/gnn # 进入选定好的召回模型的目录 以gnn为例
python -m paddlerec.run -m ./config.yaml # 自定义修改超参后,指定配置文件,使用自定义配置
```

### 预测
```
# 修改对应模型的config.yaml, workspace配置为当前目录的绝对路径
# 修改对应模型的config.yaml,mode配置infer_runner
# 示例: mode: train_runner -> mode: infer_runner
C
Chengmo 已提交
105
# infer_runner中 class配置为 class: infer
M
malin10 已提交
106 107 108 109 110 111
# 修改phase阶段为infer的配置,参照config注释

# 修改完config.yaml后 执行:
python -m paddlerec.run -m ./config.yaml # 以gnn为例
```

M
malin10 已提交
112 113 114
## 效果对比
### 模型效果列表

F
frankwhzhang 已提交
115
|       数据集        |       模型       |       HR@10        |       Recall@20       | 
M
malin10 已提交
116 117
| :------------------: | :--------------------: | :---------: |:---------: |
|       DIGINETICA     |       GNN       |       --        |       0.507       |
Z
zhangwenhui03 已提交
118 119
|       RSC15        |       GRU4REC       |       --        |       0.670          |
|       RSC15        |       SSR       |       --        |       0.590          |
F
frankwhzhang 已提交
120 121
|       MOVIELENS        |       NCF       |       0.688        |       --          |
|       --        |       Youtube       |       --        |       --          |
M
malin10 已提交
122
|       1 Billion Word Language Model Benchmark        |       Word2Vec       |       --         |       0.54          |