实验和完整代码
完整代码实现和jupyter运行:github.com/Myolive-Lin…
摘要
本文深入解析澳大利亚国立大学于2015年提出的AutoRec模型,该模型通过将自编码器(AutoEncoder)与协同过滤相结合,构建了首个基于单隐层神经网络的推荐系统框架。作为深度学习推荐模型的奠基性工作,AutoRec以其简洁的架构和理论启发性,为后续复杂模型的发展提供了重要参考。
1. 研究背景
1.1 传统推荐系统的局限
传统协同过滤方法(如矩阵分解)存在以下缺陷:
- 非线性关系建模能力不足
- 特征交互表达能力有限
- 对稀疏数据的鲁棒性较低
1.2 自编码器的优势
自编码器通过编码-解码过程实现数据重建,其特性包括:
- 非线性特征提取能力
- 数据降维与去噪功能
- 端到端学习范式
2. 模型架构
2.1 整体框架
模型的架构图如下
模型采用单隐层神经网络结构,数学表达为:
其中:
- :输入向量(用户/物品评分)
- :权重矩阵
- :偏置向量
- :激活函数(通常为Sigmoid)
2.2 模型变体
| 类型 | 输入维度 | 适用场景 |
|---|---|---|
| I-AutoRec | 用户维度 | 物品冷启动 |
| U-AutoRec | 物品维度 | 用户冷启动 |
3. 损失函数与优化
目标函数设计为带正则化的均方误差:
关键参数:
- :L2正则化系数(默认0.001)
- 激活函数:Sigmoid(编码层)/恒等函数(解码层)
- 优化器:随机梯度下降(SGD)
4 代码复现和实现效果
4.1 torch实现
#定义模型
class AutoRec(nn.Module):
def __init__(self,input_dim, hidden_dim, variant = 'user'):
"""
:param input_dim: 输入维度(用户数或物品数)
:param hidden_dim: 隐层维度
:param variant: 模型变体 'item' (I-AutoRec) 或 'user' (U-AutoRec)
"""
super(AutoRec,self).__init__()
self.input_dim = input_dim
self.hidden_dim = hidden_dim
self.encoder = nn.Sequential(
nn.Linear(input_dim, hidden_dim),
nn.Sigmoid()
)
self.decoder = nn.Sequential(
nn.Linear(hidden_dim,input_dim)
)
def forward(self,x):
encoded = self.encoder(x)
decoded = self.decoder(encoded)
return decoded
def get_regularization(self, lambda_reg = 0.01):
"""
计算正则项
"""
reg = 0
for name,param in self.named_parameters():
if 'weight' in name: #只选权重参数部分
reg += torch.norm(param, p = 2) **2
return lambda_reg * reg
4.2 模型效果
单一样本的预测和实际值对比
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | ... | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 实际值 | 4.000000 | 3.000000 | 5.000000 | 2.000000 | 2.000000 | 4.000000 | 1.000000 | 2.000000 | 5.000000 | 4.000000 | ... | 0.000000 | 2.000000 | 1.000000 | 0.000000 | 2.000000 | 4.000000 | 5.000000 | 2.000000 | 1.000000 | 3.000000 |
| 预测值 | 4.423468 | 3.232422 | 3.619291 | 2.209149 | 3.081456 | 3.615896 | 1.322259 | 4.087419 | 3.988518 | 3.093305 | ... | 0.743524 | 2.833309 | 2.061427 | 2.716863 | 1.525058 | 4.278416 | 3.489587 | 3.885751 | 1.879268 | 2.059229 |
AutoRec是深度学习推荐系统的入门模型,用以学习概念,并进行复现。从模型性能而言,该模型比较简单,所以从上图也可以看到模型收敛比较缓慢,预测效果不是很好。
5. 理论贡献与局限
5.1 创新价值
- 首次验证神经网络在推荐系统的有效性
- 建立特征自动学习范式
- 为神经协同过滤奠定理论基础
5.2 局限性
- 浅层网络限制特征提取能力
- 未考虑辅助信息融合
- 对动态兴趣建模不足
6. 后续影响
AutoRec启发了众多深度学习模型的发展:
- 纵向扩展:NeuMF, DeepFM
- 横向扩展:CDAE, Mult-VAE
- 混合架构:LightGCN, GraphAutoRec
参考文献
[1] Sedhain S, et al. AutoRec: Autoencoders Meet Collaborative Filtering. WWW 2015.