在第二部分,我们总结MLP基础上的推荐系统,我在这里只截取了原文的一部分内容。这篇博客中所使用的注解字符和参考文献目录可以在基于深度学习的推荐系统(一)Overview中找到。我们把这些工作分为如下几部分:
传统推荐算法的神经网络扩展
许多现有的推荐模型基本上是线性方法。 MLP可用于向现有RS方法添加非线性变换。
Neural Collaborative Filtering
在大多数情况下,推荐被视为用户偏好和项目特征之间的双向交互。 例如,矩阵分解(MF)将评分矩阵分解为低维的用户/项目latent factors。 构建双神经网络来模拟用户和项目之间的双向交互是很自然的。 神经网络矩阵分解(NNMF)[37]和神经协同过滤(NCF)[53]是两个代表性的著作。
图2a显示了NCF架构。 设
s
u
u
s
e
r
s_u^{user}
suuser和
s
i
i
t
e
m
s_i^{item}
siitem表示用户和item的特征(例如用户简档和项目特征),或者仅表示用户
u
u
u和项目
i
i
i的一个one-hot编码。 其评分函数定义如下:
r
u
i
^
=
f
(
U
T
˙
s
u
u
s
e
r
,
V
T
˙
s
i
i
t
e
m
∣
U
,
V
,
θ
)
\hat{r_{ui}} = f(U^T \dot~ s_u^{user}, V^T \dot~ s_i^{item} | U, V, \theta)
rui^=f(UT ˙suuser,VT ˙siitem∣U,V,θ),其中
f
(
˙
)
f(\dot~)
f( ˙)是MLP网络,
θ
\theta
θ是网络的参数。传统的MF可以被视为NCF的一个特例。 因此,将矩阵因子分解与MLP融合,以制定更通用的模型是很方便的,该模型利用MF的线性和MLP的非线性来提高推荐质量。 整个网络可以用加权平方损失(用于显式反馈)或二进制交叉熵损失(用于隐式反馈)来训练。
Deep Factorization Machine
DeepFM[47]是一种端到端模型,可无缝集成FM和MLP。它能够通过深度神经网络来建模high-order interactions,用FM来建模low-order interactions。分解机器(FM)利用加法和内积运算来捕获特征之间的线性和成对相互作用(更多细节参见[119]中的等式(1))。MLP利用非线性激活和深层结构来建模高次特征交互。 MLP与FM结合的方式受到wide & deep 的网络的启发。它用FM的神经解释取代了wide分量。与wide & deep模型相比,DeepFM不需要繁琐的特征工程。图2b说明了DeepFM的结构。 DeepFM的输入是由pair
(
u
,
i
)
(u,i)
(u,i)(user和item的标识和特征)组成的m字段数据。为简单起见,FM和MLP的输出分别表示为
y
F
M
(
x
)
yFM(x)
yFM(x)和
y
M
L
P
(
x
)
yMLP(x)
yMLP(x)。预测分数的计算方法是:
r
u
i
^
=
σ
(
y
F
M
(
x
)
+
y
M
L
P
(
x
)
)
\hat{r_{ui}} = \sigma(yFM(x) + yMLP(x))
rui^=σ(yFM(x)+yMLP(x))。
σ
\sigma
σ代表sigmoid方法。
上述方法都有很多改进版本,我在这里不再赘述,感兴趣的读者可以去看原文。
使用MLP进行特征学习
使用MLP进行特征表示非常简单且高效,即使它可能不像自编码器,CNN和RNN那样强大。
wide & deep model
这个通用模型(如图3a所示)可以解决回归和分类问题,但最初是为Google Play中的App推荐引入的[20]。 wide学习组件是单层感知器,也可以视为广义线性模型。 deep学习组件是多层感知器。 结合这两种学习技术的基本原理是它使推荐算法能够具备记忆力和泛化能力。 wide学习组件实现的记忆代表了从历史数据中捕获直接特征的能力。 同时,deep学习组件通过产生更一般和抽象的表示来捕捉泛化能力。 该模型可以提高推荐的准确性和多样性。
形式上,wide组件可以表示为
y
=
W
w
i
d
e
T
{
x
,
ϕ
(
x
)
}
+
b
y = W^T_{wide}\{x, \phi(x)\} + b
y=WwideT{x,ϕ(x)}+b,即线性模型。
{
x
,
ϕ
(
x
)
}
\{x, \phi(x)\}
{x,ϕ(x)}表示一组输入,输入由原始输入特征
x
x
x和变换(例如,交叉
转换以捕获特征之间的相关性)之后的特征组成。而深度网络部分的每一层的形式都为
α
(
l
+
1
)
=
f
(
W
d
e
e
p
(
l
)
a
(
l
)
+
b
(
l
)
)
\alpha^{(l+1)} = f(W_{deep}^{(l)}a^{(l)} + b^{(l)})
α(l+1)=f(Wdeep(l)a(l)+b(l)),
l
l
l代表层数,
f
(
˙
)
f(\dot~)
f( ˙)是激活函数。整个wide & deep模型则表示为:
P
(
r
u
i
^
=
1
∣
x
)
=
σ
(
W
w
i
d
e
T
{
x
,
ϕ
(
x
)
}
+
W
d
e
e
p
(
l
)
a
(
l
f
)
+
b
i
a
s
)
P(\hat{r_{ui}} = 1|x) = \sigma(W^T_{wide}\{x, \phi(x)\} + W_{deep}^{(l)}a^{(l_f)} + bias)
P(rui^=1∣x)=σ(WwideT{x,ϕ(x)}+Wdeep(l)a(lf)+bias)。其中
σ
\sigma
σ代表sigmoid函数,
a
(
l
f
)
a^{(l_f)}
a(lf)代表最后一层的activation。
同样地,这个模型的其他扩展也请去原文阅读。
基于深层结构化语义模型的推荐
深度结构化语义模型(DSSM)[65]是一种深度神经网络,用于学习公共连续语义空间中实体的语义表示并测量它们的语义相似性。 它广泛应用于信息检索领域,非常适合于top-n推荐[39,182]。 DSSM将不同的实体投射到一个共同的低维空间,并计算它们的余弦相似性。基本的DSSM由MLP组成,因此我们将其放在本节中。 请注意,更高级的神经层(如卷积和最大池层)也可以轻松集成到DSSM中。
Deep Semantic Similarity based Personalized Recommendation (DSPR) [182]是标签感知个性化推荐器,其中每个用户
x
u
x_u
xu和项目
x
i
x_i
xi由标签注释表示并映射到公共标签空间。 余弦相似度
s
i
m
(
u
,
i
)
sim(u,i)
sim(u,i)用于决定item和user的相关性(或用户对项目的偏好)。 DSPR的损耗函数定义如下:
L
=
−
∑
(
u
,
i
∗
)
[
l
o
g
(
e
s
i
m
(
u
,
i
∗
)
)
−
l
o
g
(
∑
(
u
,
i
−
)
∈
D
−
)
e
s
i
m
(
u
,
i
−
)
]
L = -\sum_{(u,i*)}[log(e^{sim(u,i*)}) - log(\sum_{(u, i^-) \in D^-})e^{sim(u, i^-)}]
L=−∑(u,i∗)[log(esim(u,i∗))−log(∑(u,i−)∈D−)esim(u,i−)]
其中 ( u , i − ) (u, i^-) (u,i−)是从负的user-item pair中随机抽取的负样本。
Multi-View Deep Neural Network (MV-DNN) [39]是为跨域推荐而设计的。 它将用户视为枢轴视图,并将每个域(假设我们有Z个域)视为辅助视图。 显然,Z个user-domain对有Z个相似度得分。 图3b示出了MV-DNN的结构。 MV-DNN的损失函数定义为:
其中 θ \theta θ是模型参数, γ \gamma γ是平滑因子, Y u Y_u Yu是user视图的输出,a是当前active的视图的index, R d a R^{da} Rda是view a的输入domain。MV-DNN能够扩展到许多domain。 然而,它基于这样的假设:如果用户在某一个domain中具有相似的品味,那么他们在其他domain中也应该具有相似的品味。 直观地说,在许多情况下,这种假设可能是不合理的。 因此,我们应该对不同domain之间的相关性有一些初步了解,以充分利用MV-DNN。