NerualCF模型
主要思想
chp2中https://www.yuque.com/zhang00/xqzytl/wdistl#WgggU 矩阵分解算法,通过分解共现矩阵得到user和item的隐向量,通过隐向量内积来预测用户u对物品i的评分预测,NeuralCF本质思想和MF相同,是基于深度学习的协同过滤模型,只不过将MF中的内积操作替换为多层神经网络和输出层,也就是将简单的内积,替换为复杂的交叉,以期获得更多的组合信息和非线性特征,反过来说MF也可以认为是NCF的特例。NCF是一种框架。Matrix Factorization - > Generalized Matrix Factorization
之所以是一种广义矩阵分解,是因为原始MF的内积可以替换为任意复杂互操作,比如inner product - > element-wise product ,AMF模型中特征交叉就采用了element-wise product。
模型结构
NCF框架
NCF混合模型:
- 论文中只使用了user和item作为输入,输入特征经过one-hot编码,如果预测的是显性反馈例如评分,目标可以设置为均方误差,如果是隐性如点击,就使用二分类的损失。
- NCF混合模型整合了上述NCF和广义矩阵分解(GMF),目的还是为了进行丰富的特征交叉,这个结构和deepfm是比较类似的。
NCF的优缺点
- NCF实际是一种模型框架,可以灵活选择特征交叉方式;
NCF是基于协同过滤的思想,仍然只利用了user和item 的隐向量,没有利用其它更多信息;GMF部分虽然可以进行丰富的互操作,但是如何设计筛选不同的交叉方式还是需要投入很多的精力
PNN模型-Product-based Neural Network
主要思想
将deepcrossing的stacking layer替换为product layer,有针对性地加强特征交叉。
模型结构
DeepCrossing的结构:https://www.yuque.com/zhang00/xqzytl/olq9vu
PNN结构:从上面的结构可以看出整体结构,PNN和DeepCrossing没有本质上差异,都是输入层经过embedding,经过一个stacking layer,再接入多层神经网络。只不过PNN的stacking layer被替换为product layer,在这一层增加了了对embedding向量的互操作,而不是直接concatenate。
- 这里的product layer是PNN的主要创新点,从网络结构图可以看出,这层分成了两个部分,左边是做内积生成的向量z,右边是做外积生成的向量p,外积就是矩阵乘。假设embedding向量长度为k,那么两个feature做外积会生成一个kk的方形矩阵,内积计算乘法k次,外积则要kk,论文中的降维方法是把所有k*k的结果叠加作为最后的p,简化后的式子,相当于所有embedding经过sum pooling之后做外积:
PNN的优缺点
- PNN的创新点在于embedding层之后进行的特征交叉,相比于无差别连接后送入全连接层,能够提取更多交叉信息;
- 外积计算复杂度高,简化的过程模糊了很多不是一个类别的特征信息,可能会影响效果。