19推荐系统3AutoRec
Posted 炫云云
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了19推荐系统3AutoRec相关的知识,希望对你有一定的参考价值。
1、前言
AutoRec将自编码器( AutoEncoder)的思想和协同过滤结合,提出了一种单隐层神经网络推荐模型。因其简洁的网络结构和清晰易懂的模型原理,AutoRec非常适合作为深度学习推荐模型的入门模型来学习。
AutoRec模型是一个标准的自编码器,它的基本原理是利用协同过滤中的共现矩阵,完成物品向量或者用户向量的自编码。再利用自编码的结果得到用户对物品的预估评分,进而进行推荐排序。
2、模型的结构
假设有 m m m 个用户, n n n 个物品, 用户会对 n n n 个物品中的一个或几个进行评分,未评分的物品分值可用默认值或平均分值表示,则所有 m m m 个用户对物品的评分可形成一个 m × n m \\times n m×n 维的评分矩阵, 也就是协同过滤中的共现矩阵。
对一个物品
i
\\mathrm{i}
i 来说, 所有
m
m
m 个用户对它的评分可形成一个
m
m
m 维的向量
r
(
i
)
=
(
R
1
i
,
…
,
R
m
i
)
T
r^{(i)}=\\left(R_{1 i}, \\ldots, R_{m i}\\right)^{\\mathrm{T}}
r(i)=(R1i,…,Rmi)T, AutoRec要解决的问题是构建一个重建函数
h
(
r
;
θ
)
h(\\boldsymbol{r} ; \\theta)
h(r;θ), 使重建函数生成的评分向量与原评分向量的均方差最小,如(式
1
1
1 ) 所示。
min
θ
∑
r
∈
S
∥
r
−
h
(
r
;
θ
)
∥
2
2
\\min _{\\theta} \\sum_{\\mathbf{r} \\in \\mathbf{S}}\\|\\mathbf{r}-h(\\mathbf{r} ; \\theta)\\|_{2}^{2}
θminr∈S∑∥r−h(r;θ)∥22
其中,
S
S
S是所有数据向量的集合。在完成自编码器的训练后,就相当于在重建函数
h
(
r
;
θ
)
h(\\boldsymbol{r} ; \\theta)
h(r;θ)中存储了所有数据向量的 “精华” 。自编码器相当于完成了数据压缩和降维的工作。
在得到 AutoRec 模型的重建函数后, 还要经过评分预估和排序的过程才能得到最终的推荐列表。下面介绍 AutoRec 模型的两个重点内容一重建函数的模型结构和利用重建函数得到最终推荐列表的过程。
重建函数
AutoRec 使用单隐层神经网络的结构来解决构建重建函数的问题。从模型的结构图(如图 1所示 ) 中可以看出, 网络的输人层是物品的评分向量 r \\boldsymbol{r} r, 输出层是一个多分类层。图中蓝色的神经元代表模型的 k k k 维单隐层,其中 k < < m k<<m_{} k<<m .
图
1
图 1
图1
V
V
V和
W
W
W分别是输入层到隐层, 以及隐层到输出层的参数矩阵。该模型结构代表的重建函数的具体形式为:
h
(
r
;
θ
)
=
f
(
W
⋅
g
(
V
r
+
μ
)
+
b
)
h(\\mathbf{r} ; \\theta)=f(\\mathbf{W} \\cdot g(\\mathbf{V} \\mathbf{r}+\\boldsymbol{\\mu})+\\mathbf{b})
h(r;θ)=f(W⋅g(Vr+μ)+b)
其中,
f
(
.
)
,
g
(
.
)
\\mathrm{f}(.), \\mathrm{g}(.)
f(.),g(.) 分别为输出层神经元和隐层神经元的激活函数。
θ
=
{
W
,
V
,
μ
,
b
}
\\theta=\\{\\mathbf{W}, \\mathbf{V}, \\boldsymbol{\\mu}, b\\}
θ={W,V,μ,b},
W
∈
R
d
×
k
,
V
∈
R
k
×
d
,
μ
∈
R
k
,
b
∈
R
d
\\mathbf{W} \\in \\mathbb{R}^{d \\times k}, \\mathbf{V} \\in \\mathbb{R}^{k \\times d}, \\quad \\mu \\in \\mathbb{R}^{k}, \\quad b \\in \\mathbb{R}^{d}
W∈Rd×k,V∈Rk×d,μ∈Rk,b∈Rd.这里,参数
θ
\\theta
θ 通过反向传播来进行学习.
为防止重构函数的过拟合,在加入
L
2
L2
L2 正则化项后, AutoRec目标函数的具体形式如下
min
θ
∑
i
=
1
n
∥
r
(
i
)
−
h
(
r
(
i
)
;
θ
)
∥
O
2
+
λ
2
⋅
(
∥
W
∥
F
2
+
∥
V
∥
F
2
)
\\min _{\\theta} \\sum_{i=1}^{n} \\| \\mathbf{r}^{(i)}-h\\left(\\mathbf{r}^{(i)} ; \\theta\\right) \\|_{\\mathcal{O}}^{2}+\\frac{\\lambda}{2} \\cdot\\left(\\|\\mathbf{W}\\|_{F}^{2}+\\|\\mathbf{V}\\|_{F}^{2}\\right)
θmini=1∑n∥r(i)−h(r(i);θ)∥O2+2λ⋅(∥W∥F2+∥V∥F2)
当输入物品
i
i
i的评分向量为
r
(
i
)
r^{(i)}
r(i) 时,模型的输出向量
h
(
r
i
;
θ
)
h\\left(r^{i} ; \\theta\\right)
h(ri;θ) 就是对所有用户对物品
i
i
i的评分预测。那么,其中的第
u
u
u维就是用户
u
u
u对物品
i
i
i的预测
R
^
u
i
\\hat{R}_{u i}
R^ui, 即:
R
^
u
i
=
(
h
(
r
(
i
)
;
θ
^
)
)
u
\\hat{R}_{u i}=\\left(h\\left(\\mathbf{r}^{(i)} ; \\hat{\\theta}\\right)\\right)_{u}
R^ui=(h(r(i);θ^))u
通过遍历输人物品向量就可以得到用户
u
u
u对所有物品的评分预测,进而根据评分预测排序得到推荐列表。
与协同过滤算法一样,AutoRec也分为基于物品的 AutoRec和基于用户的AutoRec。以上介绍的 AutoRec输入向量是物品的评分向重,因此可称为I-AutoRec( Item based AutoRec ),如果换做把用户的评分问量作为输入向量,则得到U-AutoRec ( User based AutoRec )。在进行推荐列表生成的过程中,U-AutoRec相比I-AutoRec的优势在于仅需输人一次目标用户的用户向量,就可以重建用户对所有物品的评分向量。也就是说,得到用户的推荐列表仅需一次模型推断过程;其劣势是用户向量的稀疏性可能会影响模型效果。
特点和局限性
从神经网络的角度来看,AutoRec模型使用单一的AutoEncoder隐含层对用户或项目评分进行泛化,使模型具有一定的泛化和表达能力。由于AutoRec模型结构简单,存在表达能力不足的问题。
在模型结构上,AutoRec模型和后来的Word2vec模型是完全相同的,只是优化目标和训练方法不同。在学习了Word2vec之后,有兴趣的读者可以比较两者的异同。
从深度学习的角度来看,AutoRec模型的提出开启了利用深度学习思想解决推荐问题的序幕,为构建复杂的深度学习网络提供了思路。
3、代码
def AutoRec(X, reg, first_activation, last_activation):
'''
AutoRec
INPUT:
X: #_user X #_item matrix
reg: L2 regularization parameter
first_activation: activation function for first dense layer
last_activation: activation function for second dense layer
OUTPUT:
Keras model
'''
input_layer = x = Input(shape=(X.shape[1],), name='UserRating')
x = Dense(500, activation=first_activation, name='LatentSpace', kernel_regularizer=regularizers.l2(reg))(x)
output_layer = Dense(X.shape[1], activation=last_activation, name='UserScorePred', kernel_regularizer=regularizers.l2(reg))(x)
model = Model(input_layer, output_layer)
return model
参考
《深度学习推荐系统》王喆
论文地址为:(PDF) AutoRec: Autoencoders Meet Collaborative Filtering (researchgate.net)
te.net/publication/311491420_AutoRec_Autoencoders_Meet_Collaborative_Filtering)
以上是关于19推荐系统3AutoRec的主要内容,如果未能解决你的问题,请参考以下文章
19 01 11 javascript ?????????????????????(???????????????) ??????????????????????????????(代码片段