文章目录
AutoRec 模型
1. AutoRec 模型定义
AutoRec 是一个基于自编码器的协同过滤模型,该模型将深度学习中的神经网络和推荐结合。
2. 自编码器
- 作用:对于输入向量 r, 通过自编码器后,将得到一个和 r 很接近的向量。对于通过自编码器的数据,相当于取出输入数据的“精华”,即自编码器完成了对输入数据的压缩和降维。
- 设自编码器的重建函数为 h ( r ; θ ) h(r;\theta) h(r;θ), 自编码器的目标函数为: m i n θ ∑ r ∈ S ∣ ∣ r − h ( r ; θ ) ∣ ∣ 2 2 min_{\theta}\sum_{r\in S}||r-h(r;\theta)||_2^2 minθr∈S∑∣∣r−h(r;θ)∣∣22 其中 S 为所有数据向量的集合。
3. 模型训练
训练思路:使用单层神经网络的结构来解决构建重构函数的问题,以 Item-based CF 场景为例,对于 user-item rating matrix (n 个用户,m 个商品), 用户向量为:
r
(
u
)
=
(
R
u
1
,
R
u
2
,
…
…
,
R
u
m
)
r^{(u)}=(R_{u1}, R_{u2},……, R_{um})
r(u)=(Ru1,Ru2,……,Rum)
商品向量为:
r
(
i
)
=
(
R
1
i
,
R
2
i
,
…
…
,
R
m
i
)
r^{(i)}=(R_{1i}, R_{2i}, ……, R_{mi})
r(i)=(R1i,R2i,……,Rmi)
网络的输入和输出都是是物品的评分向量:
r
(
i
)
=
(
R
1
i
,
R
2
i
,
…
…
,
R
m
i
)
r^{(i)}=({R_{1i}, R_{2i}, ……, R_{mi}})
r(i)=(R1i,R2i,……,Rmi)可以利用梯度反向传播完成训练。
重建函数为:
其中 θ = { W , V , u , b } \theta=\{W, V, u, b\} θ={W,V,u,b}, f 、 g f、g f、g 分别为输出层神经元和隐层神经元的激活函数。
为防止重构函数的过拟合,可以加入 L2 正则化,形式如下:
4. 模型工作过程
在 Item-based CF 中,输入物品 i 的评分向量 r ( i ) r^{(i)} r(i) 时,模型的输出向量 h ( r ( i ) , θ ) h(r^{(i)}, \theta) h(r(i),θ) 就是所有用户对物品 i 的评分预测,那么用户 u 对物品 i 的评分预测为:
R ^ u i = ( h ( r ( i ) ; θ ^ ) ) u \hat{R}_{ui}=(h(r^{(i)};\hat{\theta}))_u R^ui=(h(r(i);θ^))u
遍历物品向量即可得到用户 u 对所有物品的预测评分,进而根据评分预测排序得到推荐列表。
4.1 I-AutoRec 和 U-AutoRec 的区别
- 基于物品的 AutoRec 对某一用户做推荐时,需要多次输入物品向量,才能得到用户对所有物品的预测评分;
- 基于用户的 AutoRec 对某一用户做推荐时,只需一次输入用户向量,即可得到用户对所有物品的预测评分,不过用户向量的稀疏性会影响基于用户的 AutoRec 模型的性能
5. AutoRec的局限性
- 单隐层的 AutoEncoder 的表达能力不足
参考资料
- 《深度学习推荐系统》-- 王喆
- 【模型篇】AutoRec模型 - 很吵请安静的文章 - 知乎