Part0 基于match function learning的深度学习方法
对比representation learning的方法,基于match function learning最大的特点是,不直接学习user和item的embedding,而是通过已有的各种输入,通过一个neural network框架,来直接拟合user和item的匹配分数
图4.1 基于match function learning的深度匹配模型框架
简单来说,第一种方法representation learning不是一种end-2-end的方法,通过学习user和item的embedding作为中间产物,然后可以方便的计算两者的匹配分数;而第二种方法matching function learning是一种end2end的方法,直接拟合得到最终的匹配分数。本章主要介绍基于match function learning的深度学习匹配方法。
Part1 基于Collaborative Filtering的方法
前面传统匹配模型以及基于表示学习的模型,其base模型都离不开协同过滤,也可以称为基于矩阵分解的模型。基于match function learning的模型也不例外。
基于NCF框架的方法
基于神经网络的学习方法(NCF)为何向南博士在2017年提出,对比传统的CF网络,在得到user vector和item vector后,连接了MLP网络后,最终拟合输出,得到一个end-2-end的model。这套框架好处就是足够灵活,user和item侧的双塔设计可以加入任意side info的特征,而MLP网络也可以灵活的设计,如图4.2所示。
图4.2 基于神经网络的协同过滤框架
NCF框架对比第三章所说的CF方法最主要引入了MLP去拟合user和item的非线性关系,而不是直接通过inner product或者cosine去计算两者关系,提升了网络的拟合能力。然而MLP对于直接学习和捕获从mf提取的user和item vector能力其实并不强。在wsdm2018的一篇文章质疑的就是MLP对特征组合的拟合能力
图4.3 DNN模型拟合数据实验
该paper做了一组实验,使用1层的MLP网络去拟合数据;实验证明对于二维一阶的数据,也需要100个节点才能拟合;如果超过2阶,整个MLP的表现将会非常差。文章因此说明了DNN对于高阶信息的捕捉能力并不强,只能捕捉低阶信息。
下文要讲的模型,也是在模型结构或者特征层面做的各种变化。
NMF模型(Neural Matrix Factorization)
Neural MF,顾名思义,同时利用了MF和神经网络MLP的能力来拟合matching score;MF利用向量内积学习user和item的关联,同时MLP部分捕捉两者的其他高阶信息。这篇paper其实和NCF框架是出自同一篇paper的。模型可以分为GMF和MLP两个部分来看,如图4.4所示。
图4.4 NeuMF模型结构框架
(1) GMF(General Matrix Factorization)部分
user和item都通过one-hot编码得到稀疏的输入向量,然后通过一个embedding层映射为user vector和item vector。这样就获得了user和item的隐向量,一般可以通过向量点积或者哈达马积(element-wide product)得到交互,不过在NeuMF中多连接了一个连接层,也就是GMF layer
(2) MLP部分
输入和GMF部分一样,都是one-hot的稀疏编码,然后通过embedding层映射为user vector和item vector。注意到这里user和item的vector 和GMF部分是不一样的,原因是GMF和MLP两个网络结构对隐层维度要求不同,MLP部分会高一些(个人感觉share embedding能更充分训练embedding)
embedding层之后就是几层常规的MLP,这块没什么好说的,最后一层输出作为MLP的output。
NNCF模型(Neighbor-based NCF)
CIKM2017提出的一种基于neighbor的NCF方法,最大的不同在于输入除了user和item的信息,还各自引入了user和item各自的neighbor信息。
图4.5 NNCF模型框架
图4.5所示的输入由两部分组成,中间xu和yi为原始的user和item的one- hot输入,通过embedding层后映射为pu和qi的embedding向量,然后通过哈达马积作为MLP的输入。而输入层两侧的nu和ni是user和item各自的neighbor信息的输入,这里nu和ni息如何提取可以采用多种手段,如二部图挖掘,user- CF或者item-CF等。
对于neighbor信息,由于每个用户和item的neighbor数不一致,输入是不定长的,通过卷积和pooling后提取得到定长的embedding,然后和user以及item本身的向量concat后输入到模型中
ONCF模型(Outer-Product based NCF)
何向南博士2018年在NCF模型框架上提出了outer-product based NCF,在原有的NCF框架上,引入了outer product的概念,如图4.6所示。
图4.6 ONCF模型框架
在embedding layer之后,O-NCF模型引入了interaction map也就是特征交叉层,对于用户u的向量pu和物品i的向量qi,引入两者的outer-product
E是一个维的矩阵,其中的每个element两两相乘,得到2维的矩阵。到这,可以通过把二维矩阵展开变成一个k2维度的向量,作为MLP的输入。假设k=64,那么E就是个4096的向量,每一层隐层单元个数设置为上一层的一半,那么第一层的维度为4096*2048约需要840万的网络参数需要训练,参数量非常巨大。
因此,文章提出了一种利用CNN局部连接共享参数的方法来减少embedding layer到hidden layer之间的参数,如图4.7所示。
图4.7 ConvNCF模型框架
假设隐层维度K=64,有6层hidden layer,每一层有32个卷积核(feature map),步长stride=2,那么经过每个卷积核后的feature map大小为原来的1/4(长和宽各少了一半)。以第一层卷积为例。
那么第一层卷积后得到的网络是个323232的3维vector,其中最后一个32代表feature map个数。这里如何体现特征交叉的思想呢?ei,j,c代表的就是在前一层的feature map中,第i个单元和第j个element的二阶交叉。第一层feature map中,每个单元提取的是上一层区域的local连接信息,第三层提取的就是第一层的信息,那么在网络的最后一层就能提取到原始feature map里的global 连接信息,从而达到高阶特征提取的目的。
总结来说,使用原始的outer- product思想,在第一层网络处有近千万的参数需要学习,而使用CNN网络一方面能够减少参数量,另一方面又同时提取了低阶和高阶特征的组合。个人觉得引入CNN固然能节省内存,但也同时会带来训练和推理时间的增加,是一种时间换空间的思想。另外用CNN是否能够比原始MLP更有效拟合特征组合也需要结合数据分布去看。
基于CF的方法总结
基于NCF框架的方法基础原理是基于协同过滤,而协同过滤本质上又是在做user和item的矩阵分解,所以,基于NCF框架的方法本质上也是基于MF的方法。矩阵分解本质是尽可能将user和item的vector,通过各种方法去让user和item在映射后的空间中的向量尽可能接近(用向量点击或者向量的cosine距离直接衡量是否接近)。
而另外一种思路,基于翻译的方法,也叫translation based model,认为user和item在新的空间中映射的vector可以有gap,这个gap用relation vector来表达,也就是让用户的向量加上relation vector的向量,尽可能和item vector接近。两种方法的区别可以用图4.8形象的表示。
图4.8 基于矩阵分解和基于翻译的模型区别
Part2 基于translation框架的方法
transRec模型
2017年的recsys会议上提出的一种基于“translate”的推荐方法,要解决的是next item的推荐问题。基本思想是说用户本身的向量,加上用户上一个交互的item的向量,应该接近于用户下一个交互的item的向量,输入是(user, prev item, next item),预测下个item被推荐的概率
图4.9 transRec模型框架
用户向量表达如下:
这里ri和rj表示的是用户上一个交互的item i和下一个交互的item j,tu为用户本身的向量表达。而在实际的推荐系统中,往往存在数据稀疏和用户冷启动问题,因此,作者将用户向量tu分解成了两个向量。
这里t可以认为是全局向量,表示的是所有用户的平均行为,tu表示用户u本身的bias,例如对于冷启动用户,tu可以设置为0,用全局用户的表达t作为冷启动。
对于热门item由于出现次数非常多,会导致最终热门item的向量和绝大多数用户向量加上item向量很接近,因此文章对热门item做了惩罚,最终,已知上一个item i,用户和下一个item j的匹配score表达为:
其中, 第一项beta_j表示的是物品j的全局热度;第二项d表示的是用户向量加上物品i的向量与物品j向量的距离;距离越小表示i和j距离越接近,被推荐的可能性就越大
LRML模型(Latent Relational Metric Learning)
前面讲到,基于translation框架的方法对比基于CF框架方法最大的不同,在于找到一个relation vector,使得user vector + relation vector尽可能接近item vector。WWW2018提出的LRML模型通过引入memory network来学习度量距离。可以分为三层layer,分别是embedding layer, memory layer和relation layer。
图4.10 LRML模型框架
(1) embedding layer
底层是常规的双塔embedding,分别是用户embedding矩阵和物品的embedding矩阵,用户one-hot输入和item的one- hot输入通过embedding后得到用户向量p和物品向量q
(2) memory layer
记忆网络层是文章的核心模块,作者通过引入memory layer作为先验模块。这个模块可以分为三个步骤进行计算:
a)用户和物品embedding融合
embedding层得到的user和item向量p和q需要先经过交叉合成一个向量后输入到下一层,作者提到使用哈达码积效果优于MLP效果,也更简单
b)用户-物品key addressing
从第一步得到的向量s中,去和memory记忆网络模块中的各个memory vector挨个计算相似度,相似度可以用内积表达并做归一化
得到的ai代表的是当前用户-物品输入对(p, q)与memory-network中的第i个向量的相似度.
c)最终加权表达
最终得到的relation vector是第二步得到的memory记忆网络中不同vector的加权表达,如下所示
(3) relation layer
从memory layer得到的r向量可以认为是用户向量p与物品向量q的relation vector,最终的距离用平方损失衡量,如图4.11所示。
图4.11 LRML relation层以及loss结构
由于解决的是推荐物品的排序问题,文章使用的是pairwise loss,因此在网络的最后一层,对user和item分别进行负样本采样得到p’和q’,然后使用pairwise hinge loss进行优化
Part3 match function learning的深度匹配方法总结
对于match function learning的深度模型,也分为基于协同过滤的模型和基于特征的模型。前者和传统CF模型一样,不同在于后面接入了MLP模型来增强非线性表达,目的是为了使得user 和item的vector尽可能接近,这种方法就是基于NCF的模型;也有通过引入relation vector来是的user vector加上relation vector后接近item vector,这种方法是基于翻译的模型。
整理本篇综述主要基于原始slides,对其中的paper部分粗读部分精读,收获颇多,在全文用如何做好推荐match的思路,将各种方法尽可能串到一起,主要体现背后一致的思想指导。多有错漏,欢迎批评指出。