1 序列推荐
1.1 传统的序列推荐
1.2 基于深度学习的序列推荐
2 模型
2.1 嵌入层(embedding layer)
2.2 Transformer层
2.2.1 多头自注意力机制
2.2.2 mask
2.2.3 FNN
2.2.4 Transformer层堆叠(stacking Transformer layer)
3 主要方法
3.1 基于高斯噪声的数据增强方法
3.2 推荐系统中的对比学习
3.3 修改后的对比学习算法
| 算法 对比学习模型训练 输入:训练数据集D = {(xi,yi)};学习率rl;批量大小Sbatch;迭代次数nepochs。 过程: 1. 使用高斯增强方法对输入样本D进行数据增强,得到增强后的样本集D' 2. 初始化对比学习模型M,包括高斯增强网络G和自注意力网络A 3. 初始化优化器optimizer,使用学习率rl 4. for epoch = 1 to nepochs do 4.1 随机打乱增强后的样本集D' 4.2 将D'分成大小为Sbatch的小批量数据集B,其中每个批次包含多个(x,y)对 //注意:这里的 batch 实际上是一个包含多个(x,y)对的集合 4.3 for batch ∈ B do 4.3.1 初始化一个空列表 batch_zs 用于存储表示向量Z 4.3.2 for (x, _) ∈ batch do //忽略y,因为在这个对比学习场景中可能不需要它 end for 4.3.2.1 使用M中的高斯增强网络G进行前向传播,计算增强后的样本的表示向量Z=G(x) 4.3.2.2 将Z添加到 batch_zs 列表中 4.3.3 将 batch_zs 中的所有Z传递给自注意力网络A,计算注意力权重W=A(batch_zs) 4.3.4 根据 batch_zs和W(以及其他可能的规则)计算正样本对的表示向量Zp和负样本对的表示向量Zn //注意:这里需要定义一个机制来从batch_zs中选择正样本对和负样本对 4.3.5 计算对比损失函数Lcontrastive(Zp,Zn) 4.3.6 使用Lcontrastive进行反向传播 4.3.7 使用优化器optimizer更新模型M的参数 end for end for 5.算法结束,返回训练好的对比学习模型M |
4 实验结果与分析
4.1 数据集
表1 数据集信息表Tab.1 Dataset information table |
| 数据集 | 用户数 | 项目数 | 交互数 |
|---|---|---|---|
| Movielens-1m | 6 041 | 3 707 | 1 000 209 |
| Yelp | 45 478 | 30 709 | 1 777 765 |
4.2 超参数
表2 超参数设置情况表Tab.2 Hyperparameter setting table |
| 实验超参数 | 具体设置数值 |
|---|---|
| 学习率 | 0.001 |
| Dropout | 0.1 |
| 优化函数 | Adam |
| 激活函数 | GELU |
| 嵌入维度 | 64 |
| epoch | 300 |
4.3 比较模型及评价指标
4.4 SASRec模型简介
4.5 实验结果分析
4.5.1 整体性能分析
表3 实验结果表Tab.3 Experimental result table |
| 数据集 | 模型 | 指标 | |
|---|---|---|---|
| Rc | gNDC | ||
| Movielens-1m | BERT4Rec | 0.129 8 | 0.071 9 |
| GRU4Rec | 0.281 0 | 0.161 8 | |
| SASRec | 0.254 3 | 0.135 9 | |
| SASCTS | 0.301 3 | 0.177 0 | |
| SASCTS GN | 0.310 9 | 0.179 0 | |
| Yelp | BERT4Rec | 0.045 1 | 0.022 8 |
| GRU4Rec | 0.052 7 | 0.026 0 | |
| SASRec | 0.060 0 | 0.031 4 | |
| SASCTS | 0.060 4 | 0.031 5 | |
| SASCTS GN | 0.063 3 | 0.032 5 | |