一,绪论
本篇是深度学习推荐系统第一篇,介绍Autorec和DeepCrossing 两个模型。前者是将深度学习的思想应用于推荐系统的初步尝试,后者是将深度学习框架在推荐系统中的完整应用。
Autorec2015年由澳大利亚国立大学提出,是一个单隐层的神经网络推荐模型,网络结构简单。由于结构比较简单,表达能力不足,因此没有真正的应用。
DeepCrossing 是2016年,微软基于ResNet的经典DNN结构提出的模型。该模型完整解决从特征工程,稀疏向量稠密化,多层神经网络进行优化目标拟合等一系列深度学习在推荐系统中的应用问题,为后面研究打下了良好基础。
二,AutoRec的结构及推荐原理
2.1AutoRec 模型结构
Autorec:将自编码器的思想与协同过滤(前面讲推荐系统传统机器学习模型时的内容)结合起来的一种单隐层的神经网络推荐模型。基本原理是:利用协同过滤中的共现矩阵(用户与对物品的评分矩阵),完成用户向量或者物品向量的自编码。利用自编码的结果得到用户对物品的预估评分,进而进行推荐排序。模型结构如下:
图中V和W分别表示输入层到隐层,隐层到输出层的参数矩阵。这个模型的预测函数表示为:
f 和g 都是激活函数。为了防止过拟合,可以在损失函数(或者叫目标函数)中加入L2正则,则最终损失函数表示如下:
训练过程:先初始化两个参数矩阵V和W,然后正向传播得到预测值
h
(
r
i
,
θ
)
h(r^{i},\theta)
h(ri,θ),求出损失,然后反向传播更新参数即可。
输出向量与输入向量维度一致,但是与输入向量是不同的。输出向量衡量了所有的输入,尽可能的对于所有的输入都进行重建。
2.2Autorec 如何应用在推荐系统
假设有m个用户,n个物品,用户会对物品中的一个或者几个评分,这样就得到一个m*n的评分矩阵,未评分的可以用默认值或者均值聊表示。这个就是共现矩阵了。如下:
对于一个物品i来说,所有m个用户对它的评分就会形成一个m维的向量
r
i
=
(
R
1
i
,
R
2
i
,
.
.
.
,
R
m
i
)
r^{i}=(R_{1i}, R_{2i},...,R_{mi})
ri=(R1i,R2i,...,Rmi) 。Autorec 是通过自编码器模型结构学习一个预测函数
h
(
r
;
θ
)
h(r;\theta )
h(r;θ),使得所有该预测函数生成的评分向量与原评分向量的误差最小(也就是损失函数最小,损失函数可以使用SME)。
与协同过滤一样,Autorcec分为基于物品的I-Autorec和基于用户的U-Autorec。
I-Autorec 的输入是物品i的评分向量
r
i
r^{i}
ri,模型输出向量
h
(
r
i
,
θ
)
h(r^{i},\theta)
h(ri,θ)就是所有用户对物品i的评分预测。其中的第u维是用户u对物品i的预测评分
R
^
u
i
\hat{R}_{ui}
R^ui :
通过遍历输入物品向量可以得到用户u对所有物品的预测评分,进而根据评分预测排序得到推荐列表。
对于U-Autorec ,输入是用户对物品的评分向量,输出是用户对所有物品的预测评分。这样直接就可以根据预测评分结果做推荐。但是用户向量往往比较稀疏,可能会影响模型效果。
三,DeepCrossing模型
3.1模型结构
为了完成端到端的训练,DeepCrossing模型主要在内部网络中解决如下问题:
1,离散类特征编码后过于稀疏,不利于直接输入神经网络训练,需要解决稀疏特征向量稠密化的问题。
2,如何解决特征自动交叉组合的问题。
3,如何在输出层达成问题设定的优化目标。
DeepCrossing分别设置了不同神经网络层解决上述问题。模型结构如下:
1,Embeding层:类别特征先经过Label Enconder,然后再进行embeding 编码。数值型特征不经过embeding层
2,stacking层:将数值型特征与经过embeding的类别特征进行concat.
3,Multiple Residual Units层:残差网络层。也可以使用多层感知机。使用多层残差网络可以对特征向量各个维度进行充分的交叉组合,使模型能够抓取更多的非线性特征和组合特征信息,增强模型表达能力。
4,Scoring 层:作为输出层,为了拟合优化目标存在。对于CTR预估二分类问题,scoring层采用逻辑回归,对于多分类,采用softmax模型。
3.2模型创新点和意义
DeepCrossing模型没有人工特征工程的参与,只需要进行数据清洗之后,原始特征经过Embeding后输入神经网络层,自主交叉和学习。相比于FM,FFM 只具备二阶特征交叉能力。DeepCrossing可以通过调整神经网络的深度进行特征之间的三阶,甚至更高阶交叉。
4,总结
Autorec:简单的自编码器神经网络,但表达能力不强,没有被实际应用。
DeepCrossing:深度学习框架在推荐系统的一次完整应用,用的是传统的模块,但自主完成了稀疏特征变稠密特征,深度交叉特征学习等,为后面的深度学习奠定基础。这两个模型相比之前传统机器学习模型,都是从改变神经网络的复杂程度上进行进化。
下一篇的两个模型,将从改变特征交叉方式的角度完成进化。一个是改变用户向量和物品向量互操作方式的神经网络协同过滤(NeuralCF),一个是定义了多种特征向量交叉操作的PNN(Product-based Neural Network,基于积操作的神经网络)模型。这个模型还是采用了DeepCrossing的模型堆叠结构,但是是把stacking层换成Product层。