AutoRec:基于自编码器的推荐系统入门模型

131 阅读2分钟

实验和完整代码

完整代码实现和jupyter运行:github.com/Myolive-Lin…

摘要

本文深入解析澳大利亚国立大学于2015年提出的AutoRec模型,该模型通过将自编码器(AutoEncoder)与协同过滤相结合,构建了首个基于单隐层神经网络的推荐系统框架。作为深度学习推荐模型的奠基性工作,AutoRec以其简洁的架构和理论启发性,为后续复杂模型的发展提供了重要参考。


1. 研究背景

1.1 传统推荐系统的局限

传统协同过滤方法(如矩阵分解)存在以下缺陷:

  • 非线性关系建模能力不足
  • 特征交互表达能力有限
  • 对稀疏数据的鲁棒性较低

1.2 自编码器的优势

自编码器通过编码-解码过程实现数据重建,其特性包括:

  • 非线性特征提取能力
  • 数据降维与去噪功能
  • 端到端学习范式

2. 模型架构

2.1 整体框架

模型的架构图如下 image.png

模型采用单隐层神经网络结构,数学表达为:

r^=f(Wg(Vr+μ)+b)\hat{r} = f(W \cdot g(Vr + \mu) + b)

其中:

  • rRdr \in \mathbb{R}^d:输入向量(用户/物品评分)
  • V,WV,W:权重矩阵
  • μ,b\mu,b:偏置向量
  • g,fg,f:激活函数(通常为Sigmoid)

2.2 模型变体

类型输入维度适用场景
I-AutoRec用户维度物品冷启动
U-AutoRec物品维度用户冷启动

3. 损失函数与优化

目标函数设计为带正则化的均方误差:

minθi=1nr(i)h(r(i);θ)O2+λ(WF2+VF2)\min_{\theta} \sum_{i=1}^n \| r^{(i)} - h(r^{(i)};\theta) \|_O^2 + \lambda(\| W \|_F^2 + \| V \|_F^2)

关键参数:

  • λ\lambda: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 模型效果

单一样本的预测和实际值对比

0123456789...40414243444546474849
实际值4.0000003.0000005.0000002.0000002.0000004.0000001.0000002.0000005.0000004.000000...0.0000002.0000001.0000000.0000002.0000004.0000005.0000002.0000001.0000003.000000
预测值4.4234683.2324223.6192912.2091493.0814563.6158961.3222594.0874193.9885183.093305...0.7435242.8333092.0614272.7168631.5250584.2784163.4895873.8857511.8792682.059229

image.png

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.