推荐系统算法性能比较(推荐系统中的深度匹配模型)

4.2.9 FGCNN 模型 ( Feature Generate by CNN )

CNN 模型在图像,语音,NLP 领域都是非常重要的特征提取器,原因是对图像、视频、语言来说,存在着很强的 local connection 信息。而在推荐系统中由于特征输入都是稀疏无序的,很难直接利用 CNN 作为特征提取。华为诺亚方舟在2019年的 WWW 会议上提出了一种巧妙的利用 CNN 提取特征的方法 FGCNN,整个模型框架如图4.30所示。

推荐系统算法性能比较(推荐系统中的深度匹配模型)(1)

图4.30 FGCNN 模型框架

其中利用 CNN 提取新特征是整个 paper 的核心模块,具体框架如图4.31所示,可以分为4个层,卷积层、池化层、重组层以及特征输出层。下面分别介绍这4个不同的层,分别看下各自的输入,输出以及具体的网络结构。

推荐系统算法性能比较(推荐系统中的深度匹配模型)(2)

图4.31 CNN 模块从原始特征提取新特征

❶ 卷积层 Convolution Layer

推荐系统算法性能比较(推荐系统中的深度匹配模型)(3)

图4.32 卷积层的特征卷积过程

原始 one-hot 特征经过 embedding 后,进入的是卷积层。卷积的思想和 TextCNN 类似,通过一个高度为 hp,宽度为 d 的卷积核进行卷积;其中高度 hp 代表的是每次卷积连接的邻域的个数,以图4.32为例,hp=2,表示二维特征的交叉,从上到下卷积,表示的是 N&A,A&H,H&G 卷积,分别表示名字和年龄、年龄和身高、身高和性别的交叉;而宽度方向 d 需要和 embedding 的维度 d 保持一致,这和 TextCNN 的思想是一致的,只在高度方向上进行卷积。

① Convolutional layer 输入

特征 one-hot 之后经过 embedding 层后的输出作为卷积层的输入,输入维度为 nf*k。nf 为 field 个数,k 为隐层维度

② Convolutional layer 输出

经过二维平面大小不变,增加第三维卷积核大小,第一层卷积层的输出大小为 nf*k*mc1,C1为第1个卷积层的卷积个数,以 l=1 为例,C:,:,i 表示的是第一层卷积层第 i 个 feature-map,每个 feature map 的大小为 nf*k,Cp,q,i 表示的是第一层第 i 个 feature map 的坐标为 (p,q) 的元素:

推荐系统算法性能比较(推荐系统中的深度匹配模型)(4)

❷ 池化层 Pooling Layer

特征经过第一层卷积层之后,从 nf*k 变成了 nf*k*mc1,维度反而扩了 mc1 倍,这和预期的特征降维不一致,解决办法和 CNN 里常用的套路一样,通过 pooling 做降维。该 paper 使用的是 max pooling,在原先卷积高度 hp 上选择最大值作为卷积后的特征表达,表达如下所示:

推荐系统算法性能比较(推荐系统中的深度匹配模型)(5)

① pooling 层输入

卷积层的输出作为池化层的输出,以第一层为例,pooling 层的输入维度为 nf*k*mc1。

② pooling 层输出

卷积层输出的时候在高度方向上选择 max,只有高度方向维度发生变化,卷积输出后维度为nf/hp * k *mc1,hp 为卷积核高度,相当于沿着 field 的方向压缩了 hp 倍。

❸ 重组层 Recombination Layer

经过特征卷积层和特征池化层后,可以通过特征重组 Recombination layer 生成新的特征组了。还是以第一层的 Recombination layer 为例,mc1 为原始 feature map 的个数,mr1为新生成的特征 feature map 的个数:

推荐系统算法性能比较(推荐系统中的深度匹配模型)(6)

其中 S1 为池化层的输出,而 WR1 和 BR1 为该层待学习的参数。

① Recombination 层输入

卷积层的输出 S1 为该层的输入,通过 WR1 的矩阵进行特征的 recombination

② Recombination 层输出

新生成的特征维度为 nf/hp*k*mr1

❹ 特征输出层 Concatenation Layer

第一层 Convolution layer -> pooling layer -> recombination layer 后,生成第一层的新特征 R1,连同第2,3,4,…,nc 层的新特征 R2,R3,R4,…,Rnc 层一起 concat 起来,组成新的特征 R=(R1,R2,…,Rnc)。之后 R 可以和原始特征一样做各种可能的交叉,例如和原始特征做二阶交叉等,再一起输入到模型层。

推荐系统算法性能比较(推荐系统中的深度匹配模型)(7)

图4.33 FGCNN 新特征的生成

① concatenation 层输入

重组层 Recombination layer 输出的新特征 R1,R2,R3, Rnc,作为 concatenation layer 的输入

② concatenation 层输出

原有的特征E和新特征 R 连在一起作为 concatenation 的特征输出,作为 NN 层的输入

4.2.10 FiBiNet 模型 ( Feature Importance & Bilinear feature Interaction )

新浪微博张俊林团队2019年提出的结合特征重要性 ( Fi ) 和双线性特征交叉 ( Bi ) 的方法,Feature Importance & Bilinear feature Interaction,简称 FiBiNet,其实是两个相对独立的模块,两个模块可以独立套用在其他的网络结构上,整体框架如图4.34所示。

推荐系统算法性能比较(推荐系统中的深度匹配模型)(8)

图4.34 FiBiNet 模型框架

❶ SENet:特征重要性提取层

该层作用主要是提取特征重要性。可以分为三层 Squeeze, Extract, Reweight,从原始的特征 e1,e2,e3,…,ef 提取到新的特征 v1,v2,v3,…, vf,其中 f 为特征 field 的个数,整体框架如下:

推荐系统算法性能比较(推荐系统中的深度匹配模型)(9)

图4.35 SENet 框架

① Squeeze 层

特征压缩层,对每个特征组中的 embedding 向量进行汇总统计量的 pooling 操作,每个 field 的维度为 k,从中 squeeze 压缩提取最重要的1维。典型的方法一般有 Max pooling 或者 average pooling,在更原始的 SENet 里用的是 max pooling,但是在该 paper 里作者提到 average pooling 表现更好,个人其实也倾向于认为 average pooling 直觉上更加 make sense,只用 max pooling 从 d 维特征提取一维信息损失实在太大。当然具体表现也需要结合具体数据实验才知道:

推荐系统算法性能比较(推荐系统中的深度匹配模型)(10)

经过 S 层,第 i 维特征从 ei 变成了 zi,从维度为 d 的向量变成了一个维度为1的实数。整个输入从 f*d 的矩阵变为 f 维的向量。

② Excitation 层

特征激活层,向量先做压缩 r ( r 为压缩的倍数 ),然后扩展恢复,类似 auto-encoder 思路:

推荐系统算法性能比较(推荐系统中的深度匹配模型)(11)

W1 和 W2 为两个转换矩阵,先经过压缩然后恢复,最终得到的 A 还是一个维度为 f 的向量。

③ Reweight 层

经过前面 Squeeze 和 Excitation 得到的 A 相当于是原始特征 E 的权重向量,乘以原始的特征 E 后,可以得到最终加权提取的 V 向量,可以认为是原始特征的重要性表达:

推荐系统算法性能比较(推荐系统中的深度匹配模型)(12)

总结来说:SENet,用两层全连接阶层提取每个 field 的特征重要性:

S 层:压缩提取 field 中最重要的特征 ( max 或者 average 特征 )

E 层:对 s 层提取的特征信息进行 auto-encoder 式的信息提取

R 层:SE 提取到的每个 field 特征重要性,进行加权提取

❷ Bilinear 特征交叉层

从 SENet 提取到的新特征 V,还有原始特征 E,可以组合成为新的特征一起输入到模型的 MLP 网络中。但是如前面提到的 MLP 对特征交叉很弱的学习能力一样,本文一样提出了一些做特征交叉的方法。我们回顾下在前面提到的两个向量的交叉,无非是向量内积,得到一个实数;或者是向量的哈达马积分如图4.36的 a 所示,得到的还是一个向量,如图中4.36的 b 方法所示。这两种方法都是直接计算的,没有新的参数学习。在该 paper 中,作者提出了另一种引入参数的方法,也就是 Bilinear 双线性特征交叉的方法,如图中4.36的 c 方法所示:

推荐系统算法性能比较(推荐系统中的深度匹配模型)(13)

图4.36 不同特征交叉方法

假设特征 field 的个数是 f 个,每个 field 的隐层维度为 d。那么,如何确定需要学习的参数 W 呢?根据 W 的共享情况,可以分为以下三种类型:

① field type

W 在所有特征之间是完全共享的,也就是说在任意两个需要交叉的特征 i 和特征 j 之间 ( vi,vj ) 共享一个 W,W 的参数维度为 k*k:

推荐系统算法性能比较(推荐系统中的深度匹配模型)(14)

② field each

对于每个特征 i 来说,都需要学习唯一的一个 Wi 矩阵,该 Wi 只和左乘的特征 vi 有关,和右乘特征 vj 无关,一共有 f 个 field,所以 W 的参数维度为 f*k*k:

推荐系统算法性能比较(推荐系统中的深度匹配模型)(15)

③ field-interaction type

对于任意两个需要交叉的特征 vi 和 vj,都需要学习一个唯一的矩阵 Wij,Wij不仅和左乘的特征有关,也和右乘的特征有关,也就是说,vi 和 vj 的交叉,以及 vj 和 vi 的特征交叉,两者用到的 Wij 和 Wji 是不一样的,所以 W 的参数维度为 f*f*k*k:

推荐系统算法性能比较(推荐系统中的深度匹配模型)(16)

当然,以上三种不同的特征类型没有绝对的谁好谁坏,不存在越复杂效果越好的情况,对于简单的数据集,可能 w 共享是最好的,具体还是需要实验才能知道。在文章里用了 criteio 和 avazu 数据集进行实验时,使用不同的模型,三种交叉方法也是各有千秋。

总结本文的两个核心工作,第一个工作,SENet,目的是从一个 f*d 的特征向量中,提取得到表达了特征重要性的同样维度为 f*d 的新特征向量,该网络结构可以和其他模型结构套用。第二个工作 bi-net,从输入的 embedding 特征中提出了几种不同的特征交叉的方法,也可以给其他网络模型做特征交叉提供一些不同的手段。

4.2.11 AutoInt 模型 ( Auto Feature Interaction )

目前为止讲到的模型中,使用到 attention 的是 AFM 模型,而在 AutoInt 文章中,作者除了 attention 机制,还使用了在 transform 中很火的 multi-head 和 self-attention 的概念,整体框架如图4.37所示。

推荐系统算法性能比较(推荐系统中的深度匹配模型)(17)

图4.37 AutoInt 模型框架

文章中的输入没有什么特别需要讲的,就是常规的 one-hot 稀疏的特征经过 embedding 层得到 dense value。这里 embedding 层倒是值得一提,一般在大多数推荐系统里,对于 one-hot 做 embedding 是因为需要转成 dense 的特征,而原本就是 dense 的特征原本就是定长 dense 特征,比较少见到做 embedding 的,而在该文章中将连续值特征和 one-hot 一样去做 embedding 处理。不过这一块不影响 auto-int 部分的理解。

推荐系统算法性能比较(推荐系统中的深度匹配模型)(18)

图4.38 embedding 层输入

该 paper 里提到的 attention 机制,才是文章里的核心亮点,在介绍文章的核心机制之前,先在这里简单介绍下 NLP 里的 attention 里涉及到的3个重要的概念,query,keys,value。想象一下,你在搜索引擎输入了一个搜索词,这个搜索词就是 query,假设你搜了 "应用宝",然后存在一堆候选结果就叫做 keys,例如 "下载 app 的地方","手机应用市场","app store","手机系统" 等等,对这里的每个 key,都去计算和候选词 query 的相似度,例如 "手机应用市场" 对 "应用宝" 的权重,显然是要高于 "手机系统",最终的表达,其实就是每个 keys 的 value 的加权求和,也就是说,谁和 query 的相似度高,在结果中 value 的权重占比就更高。经典的 QKV 结果表达如下:

推荐系统算法性能比较(推荐系统中的深度匹配模型)(19)

回到本文的 attention 机制中,假设特征 field 个数为 M,对于第 m 个 field,在第 h 个 head 空间下的特征表达如下:

推荐系统算法性能比较(推荐系统中的深度匹配模型)(20)

图4.39 特征 m 在空间 h下的 QKV 结构

❶ 特征 m 在空间 h 下的新映射

每个特征 m,在空间 h 下都有3组向量表示,分表代表特征 m 在空间 h 下的 query 向量 Equery、key 向量 Ekey、value 向量 Evalue:

推荐系统算法性能比较(推荐系统中的深度匹配模型)(21)

这里需要学习的参数为 WQuery,Wkey,Wvalue,每个矩阵的维度为 d'*d,从而将特征从 d 维映射为 d'。W 在所有特征中都是共享的,并不是每组特征都需要学习3个 W。

❷ 特征 k 对特征 m 相似度表达,使用向量的点积:

推荐系统算法性能比较(推荐系统中的深度匹配模型)(22)

❸ 特征 k 对特征 m 的归一化注意力 ( M 个特征做归一化 )

推荐系统算法性能比较(推荐系统中的深度匹配模型)(23)

❹ 特征 m 在空间 h 下的加权新特征:

推荐系统算法性能比较(推荐系统中的深度匹配模型)(24)

❺ 特征 m 的全空间表达:

推荐系统算法性能比较(推荐系统中的深度匹配模型)(25)

有 H 个 head,特征 m 最终的表达为 H 个新特征的 concat,特征长度为 H*d'。

❻ 特征 m 最终表达:resnet 保留原始信息

推荐系统算法性能比较(推荐系统中的深度匹配模型)(26)

作者为了保留更多信息,除了第5步得到的 multi-head 的新特征,也将原始的特征 em 引入到进来,其实就是一种 resnet 思路,所以在这里需要有个额外的参数 WRes 需要学习,需要将原始的特征维度 d 映射为和 em 一致的 H*d',所以 WRes 的参数维度为 d'*H*d。

4.2.12 DIN 模型 ( Deep Interest Network )

4.2.11提到的 AutoInt 里特征的 attention 机制有个特点,就是在计算特征的重要性的时候,所有特征都有机会成为 query, 将其他特征作为 keys 去计算和当前 query 的重要性从而得到权重的。而提到推荐系统里的 attention 机制,不得不提的就是阿里的这篇 deep interest network 了,简称 DIN。工业界的做法不像学术界,很多模型网络结构优化并不一味的追求模型的复杂和网络结构有多 fancy,每一步背后都有大量的业务思考后沉淀下来的。

阿里这篇 DIN 也如此。在了解 DIN 之前,我们先看下 DIN 前身的模型,GwEN 模型 ( Group-wise Embedding Network,阿里内部称呼 )。

推荐系统算法性能比较(推荐系统中的深度匹配模型)(27)

图4.40 GwEN 模型结构 ( DIN 的 baseline )

前面讲到的很多模型,输入层都是大规模稀疏特征,经过 embedding 层后输入到 MLP 网络中。这里的一个假设就是,每个 field 都是 one-hot 的,如果不是 one-hot 而是 multi-hot,那么就用 pooling 的方式,如 sum pooling,average pooling,max pooling 等,这样才能保证每个特征 field embedding 都是定长的。DIN 的前身 GwEN 模型也一样,对于 multi-hot 特征的典型代表,用户历史行为,比如用户在电商系统里购买过的商品,往往都是几十几百甚至几千的,需要经过 sum pooling 和其他特征 concat 一起。

而这种数学假设其实往往都是和实际的发生场景不一致的。例如一个女性用户过去在淘宝买过白色针织衫、连衣裙、帽子、高跟鞋、单肩包、洗漱用品等,当前候选商品是一件黑色外套,白色针织衫对黑色外套的权重影响应该更大,洗漱用品权重应该更小。如果将这些历史行为过的商品做 sum pooling,那么无论对于当前推荐什么商品,用户都是一个固定向量的表达,信息损失很大,显然优化空间很大。

推荐系统算法性能比较(推荐系统中的深度匹配模型)(28)

图4.41 DIN 模型框架

针对 sum/average pooling 的缺点,DIN 提出了一种 local activation 的思想,基于一种基本的假设:用户历史不同的行为,对当前不同的商品权重是不一样的。例如用户过去有 a,b,c 三个行为,如果当前商品是 d,那么 a,b,c 的权重可能是 0.8,0.2,0.2;如果是商品 e,那么 a,b,c 的权重可能变成了0.4,0.8,0.1。也就是说,不同的 query,激发用户历史行为不同的 keys 的权重是不一样的。

推荐系统算法性能比较(推荐系统中的深度匹配模型)(29)

① query:用户历史行为,长度为 H,e1,e2,…,eH 表示用户历史行为的向量表示。

② keys:当前候选广告 ( 店铺、类目、或者其他 item 实体 )

关于 DIN 里的 activation weight 还有个可以稍微讲几句的点。两个向量的相似度,在前面讲各种 CF 的方法的时候基本是用的点积或者 cosine,2017年 DIN 挂在 arXiv 的版本中是使用了两个向量本身以及 concat 后进入 MLP 得到其相似度,2018发在 KDD 的版本中多了 outer product,以及向量相减,相当于引入和保留了更多特征的信息。另外作者在文章提到为了保持不同历史行为对当前 attention 的影响,权重也不做归一化,这个和原始的 attention 也有所不同。

推荐系统算法性能比较(推荐系统中的深度匹配模型)(30)

图4.42 DIN 模型中的 Attention Unit

作为工业界的落地实践,阿里在 DIN 上很 "克制" 的只用了最能表达用户个性化需求的特征--用户行为 keys,而 query 也是当前候选的商品广告,与线上提升 ctr 的指标更为吻合,对工业界的推荐系统来说借鉴意义还是很大的。当然这不是说之前的其他 attention 机制模型没用,不同的数据集,不同的落地场景需求不一致,也给工业界更多的尝试提供了很多思路的借鉴。

4.2.13 DIEN 模型 ( Deep Interest Evolution Network )

在前面讲到的模型中,所使用的特征都是时间无序的,DIN 也如此,用户的行为特征之间并没有先后顺序,强调的是用户兴趣的多样性。但是实际用户的兴趣应该是在不断进化的,用户越近期的行为,对于预测后续的行为越重要,而用户越早期的行为,对于预测后续行为的权重影响应该小一点。因此,为了捕获用户行为兴趣随时间如何发展变化,在din提出一年后,阿里又进一步提出了 DIEN,引入了时间序列概念,深度兴趣进化网络。

DIEN 文章里提到,在以往的推荐模型中存在的序列模型中,主要利用 RNN 来捕获用户行为序列也就是用户历史行为数据中的依赖关系,比对用户行为序列直接做 pooling 要好。但是以往这些模型有两个缺点,第一是直接将 RNN 的隐层作为兴趣表达,而一般来隐层的表达和真正表达的商品 embedding 一般不是等价的,并不能直接反映用户的兴趣;另外一点,RNN 将用户历史行为的每个行为看成等权的一般来说也不合理。整个 DIEN 的整体框架,如图4.43所示。

推荐系统算法性能比较(推荐系统中的深度匹配模型)(31)

图4.43 DIEN 模型框架

❶ 输入层

和 DIN 的输入一样。按照类型可以分为4大类

① 用户画像特征:如年龄、性别、职业等

② context 特征:如网络环境、时间、IP 地址、手机型号等,与 user 以及 item 无关

③ target ad 特征:当前候选广告

④ 用户行为特征:DIEN 里最重要的能体现用户个性化的特征,对于每个用户来说,假设有 T 个历史行为,按照发生的先后顺序依次输入模型

❷ embedding 层

将 one-hot 特征转为 dense 的 embedding 向量

❸ 兴趣抽取层 ( interest extractor layer )

该层的主要作用和 DIN 一样,为了从 embedding 层中抽取出用户的兴趣。该 paper 认为用户当前对候选广告是否感兴趣,是和历史行为 behavior 有关的,所以引入了 GRU 的序列模型来拟合抽取用户兴趣。

推荐系统算法性能比较(推荐系统中的深度匹配模型)(32)

经过 GRU 结构后,商品的 embedding 表达从 e(t) 变成了 h(t),表示第 t 个行为序列的 embedding 表达。

推荐系统算法性能比较(推荐系统中的深度匹配模型)(33)

图4.44 DIEN 中的辅助 loss 结构

除了 GRU 结构提取隐层的向量,DIEN 还引入了有监督学习,强行让原始的行为向量 e(t) 和 h(t) 产生交互。如图4.44所示,引入了辅助 loss(auxiliary loss),当前时刻 h(t) 作为输入,下一刻的输入 e(t 1) 认为是正样本 (click),负样本进行负采样 ( 不等于当前时刻 );然后让 h(t) 与正负样本分别做向量内积,辅助 loss 定义为:

推荐系统算法性能比较(推荐系统中的深度匹配模型)(34)

最终的 loss 表达为:

推荐系统算法性能比较(推荐系统中的深度匹配模型)(35)

其中 a 为超参数,代表的是辅助 loss 对整体 loss 的贡献。有了这个辅助 loss,t 时刻提取的隐层向量 h(t) 可以比原始的 h(t) 更有助于表达用户兴趣,也可以加速网络的训练过程。

❹ 兴趣进化层 ( interest evolving layer )

理论上来说,h(t) 如果替代 e(t) 作为商品的最终表达其实也是可以的,把用户序列 t=1,2,3,…,T 当成用户的 T 个行为过的商品,然后和当前的候选广告套用 DIN 的 attention 网络去计算每个行为和当前候选广告的权重,最终得到用户的历史行为加权表达也是完全 ok 的。但作者认为用户的行为模式是会发展的,因此引入了第二层 GRU 网络来学习每个历史行为序列和当前候选广告之间的权重。

对于每个历史行为 ht,当前候选广告 ea,通过 softmax 求出两者的权重。注意这里不是直接向量点击,而是引入了矩阵 W,可以认为是简单的一层全连接网络。

推荐系统算法性能比较(推荐系统中的深度匹配模型)(36)

如何使用这里学习的 attention 作为兴趣进化层的输入,作者又提出了三种计算方法:

❶ AIGRU ( attention input with GRU )

最基础的版本,兴趣进化层第 t 个行为序列的 input 就是隐层 ht 的加权:

推荐系统算法性能比较(推荐系统中的深度匹配模型)(37)

作者尝试后发现效果并不好,原因是如果是输入0,也会参与到隐层 ht 的计算和更新,相当于给用户兴趣的提取引入了噪音,不相关的用户行为会干扰模型的学习。

❷ AGRU ( attention base GRU )

这里作者使用了 attention 权重 at 来取代原始 GRU 中的更新门,表达如下:

推荐系统算法性能比较(推荐系统中的深度匹配模型)(38)

❸ AUGRU ( GRU with attentional update gate )

这里作者依然对原始 GRU 做了改造,公式如下:

推荐系统算法性能比较(推荐系统中的深度匹配模型)(39)

推荐系统算法性能比较(推荐系统中的深度匹配模型)(40)

图4.45 AUGRU 结构

其中,ut' 引入了 at 来取代原有的更新向量 ut,表达的是当前 ut' 对结果的影响。如果当前权重 at 较大,ut' 也较大,当前时刻 ht' 保留更多,上一个时刻 ht-1 影响也会少一点。从而整个 AUGRU 结果可以更平滑的学习用户兴趣。

4.3 Feature-based 模型总结

Feature-based 的模型主要在于学习特征之间的交叉,是近年来整个推荐系统在排序层面的主流研究方向,按照不同维度,我个人把4.2列到的模型分为4个类型,同一个模型可能会分到不同的类型里。这里的分类仅仅代表个人的观点,欢迎探讨。

4.3.1 基于框架的模型

① wide&deep 模型

深度加宽度的模型范式,本身并不是一个具体的模型,wide 和 deep 部分可以用任意结构框架,wide 的 baseline 是 LR 模型;deep 的 baseline 是 MLP 模型。

② deep crossing 模型

和 wide&deep 最大的不同是 deep 部分引用了 res-net,但个人觉得在目前主流的模型里用的较少。虽然 res-net 理论上可以使用更深的模型提升效果,但在目前工业界大规模稀疏的推荐系统里,还没见到太多往 res-net 方向取得较大进展的工作。

4.3.2 基于 FM 特征二阶组合的模型

学习特征交叉的主要手段是将特征的 embedding 做交叉,特点是特征的交叉是二维的,无非是二阶交叉如何做。

① deepFM 模型

特征交叉使用的 element-wise product,最终得到的是一个实数。

② NFM 模型

交叉使用的 bi-interaction,可以理解成是所有 vector 的 sum pooling,最终得到的是一个向量。

③ AFM 模型

交叉使用的带权重的 bi-interaction,可以理解成所有 vector 的 weight sum pooling,然后使用一个简单的线性模型得到最终的值。

④ PNN 模型

PNN 模型放到基于 FM 的模型是因为本质上和 FM 一样,都是在学习特征的二阶组合。和 deepFM 不同的是,以 IPNN 为例,PNN 的所有特征两两 product 交叉学习得到的值 conat 后得到现实的 product vector 后进入 MLP 模型;而 deepFM 是直接将 FM 模型的 vector 输入到 MLP 模型中。

4.3.3 基于 attention 的模型

① AutoInt 模型

使用 multi head 机制,每个特征用 self-attention 得到其他特征和自己的 attention 权重。每个特征的所有 head 得到的特征 concat 起来作为新特征。

② DIN 模型

只使用户历史行为特征作为 keys,keys 之前没有时间序列;得到 keys 和当前候选 item 的 attention。

③ DIEN 模型

只使用用户历史行为特征作为 keys,keys 之间具有先后顺序,引入两层 GRU 表达,第一层 GRU 学习用户历史行为序列的信息,每个时刻 t 输出的隐层 embedding 为该时刻 item 的 embedding 表达;第二层 GRU 用来学习历史每个时刻 t 的历史行为和当前候选广告的权重。

④ FiBiNet 模型

把 FiBiNet 模型放在 attention 模型主要是它的 SENet 部分,通过 squeeze -> Excitation -> reweight 提取原始 embedding 的特征重要性,得到新特征,这里其实也体现了每个特征 embedding 的 attention。

4.3.4 基于特征高阶组合的模型

① DCN 模型

使用多层的 cross 来做特征交叉,对于 cross 网络中每一层的输入都由前一层以及第一层的输入组成,从这个维度上代表的是高阶特征的组合。比如说,第四层网络的输出包含了第三层和第二层的输入;而第三层又包含了第二层和第一层,因此这里就是个3阶的特征交叉。特征的交叉使用的是 bit-wise,也就是每个特征内部 embedding 的 element 也会两两交叉。

② xDeepFM 模型

使用 CIN 模型来提取特征交叉。和 DCN 模型一样的是,这里也使用了多层的 cross,每一层的输入也是由第一层和上一层的输入组成,不同的是,xdeepFM 模型的特征交叉是 vector wise 层级的,而 DCN 模型是 bit-wise 的。

③ FGCNN 模型

通过使用 CNN 模块,先是卷积层提取局部特征的连接,如高度等于3能够提取相邻3个 field 的特征的关系,因此具有高阶特征的交叉能力。然后又通过池化层提取 global 信息,确保特征的输入顺序对结果的影响能够被捕捉到。

05

总结

推荐和搜索的本质其实都是匹配,前者匹配用户和物品;后者匹配 query 和 doc。具体到匹配方法,分为传统模型和深度模型两大类,第二章讲的是传统模型,第三章和第四章讲的是深度模型。

对于传统模型,主要分为基于协同过滤的模型和基于特征的模型,两者最大的不同在于是否使用了 side information。基于协同过滤的模型,如 CF,MF,FISM,SVD ,只用到了用户-物品的交互信息,如 userid, itemid, 以及用户交互过的 item 集合本身来表达。而基于特征的模型以 FM 为例,主要特点是除了用户-物品的交互之外,还引入了更多的 side information。FM 模型是很多其他模型的特例,如 MF,SVD ,FISM 等。

对于深度模型,主要分为基于 representation learning 的深度模型以及 match function learning 的深度模型。基于 representation learning 的深度模型学习的是用户和物品的表示,然后通过匹配函数来计算,这里重点在与 representation learning 阶段,可以通过 CNN 网络,auto-encoder,知识图谱等模型结构来学习。

对于 match function learning 的深度模型,也分为基于协同过滤的模型和基于特征的模型。前者和传统 CF 模型一样,不同在于后面接入了 MLP 模型来增强非线性表达,目的是为了使得 user 和 item 的 vector 尽可能接近,这种方法就是基于 NCF 的模型;也有通过引入 relation vector 来是的 user vector 加上 relation vector 后接近 item vector,这种方法是基于翻译的模型。

对于 match function learning 另一种模型框架,是基于特征层面的,有基于 fm 模型的,基于 attention 的,以及高阶特征捕捉的,另外还有基于时间序列的文章中只提到了 DIEN 模型。

整理本篇综述主要基于原始 slides,对其中的 paper 部分粗读部分精读,收获颇多,在全文用如何做好推荐 match 的思路,将各种方法尽可能串到一起,主要体现背后一致的思想指导。多有错漏,欢迎批评指出。

06

参考资料

1. https://www.comp.nus.edu.sg/~xiangnan/sigir18-deep.pdf

2. Xiangnan He, Hanwang Zhang, Min-Yen Kan, and Tat-Seng Chua. Fast matrix factorization for online recommendation with implicit feedback. In SIGIR 2016.

3. Yehuda Koren, and Robert Bell. Advances in collaborative filtering. Recommender systems handbook. Springer, Boston, MA, 2015. 77-118.

4. Santosh Kabbur, Xia Ning, and George Karypis. Fism: factored item similarity models for top-n recommender systems. In KDD 2013.

5. Yehuda Koren. Factorization meets the neighborhood: a multifaceted collaborative filtering model. In KDD 2018.

6. Steffen Rendle. Factorization machines. In ICDM 2010.

7. Hong-Jian Xue, Xin-Yu Dai, Jianbing Zhang, Shujian Huang, and Jiajun Chen. Deep matrix factorization models for recommender systems. IJCAI 2017.

8. Suvash Sedhain, Aditya Krishna Menon, Scott Sanner, and Lexing Xie. Autorec: Autoencoders meet collaborative filtering. In WWW 2015.

9. Yao Wu, Christopher DuBois, Alice X. Zheng, and Martin Ester. Collaborative denoising auto- encoders for top-n recommender systems. In WSDM 2016.

10. Sheng Li, Jaya Kawale, and Yun Fu. Deep collaborative filtering via marginalized denoising auto- encoder. In CIKM 2015.

11. Xue Geng, Hanwang Zhang, Jingwen Bian, and Tat-Seng Chua. Learning image and user features for recommendation in social networks. In ICCV 2015.

12. Jingyuan Chen, Hanwang Zhang, Xiangnan He, Liqiang Nie, Wei Liu, and Tat-Seng Chua. Attentive collaborative filtering: Multimedia recommendation with item-and component-level attention. In SIGIR 2017.

13. Fuzheng, Zhang, Nicholas Jing Yuan, Defu Lian, Xing Xie, and Wei-Ying Ma. Collaborative knowledge base embedding for recommender systems. In KDD 2016.

14. Xiangnan He, Lizi Liao, Hanwang Zhang, Liqiang Nie, Xia Hu, and Tat-Seng Chua. Neural collaborative filtering. In WWW 2017.

15. Ting Bai, Ji-Rong Wen, Jun Zhang, and Wayne Xin Zhao. A Neural Collaborative Filtering Model with Interaction-based Neighborhood. CIKM 2017.

16. Xiangnan He, Xiaoyu Du, Xiang Wang, Feng Tian, Jinhui Tang, and Tat-Seng Chua. Out Product-based Neural Collaborative Filtering. In IJCAI 2018.

17. Tay, Yi, Shuai Zhang, Luu Anh Tuan, and Siu Cheung Hui. "Self-Attentive Neural Collaborative Filtering." arXiv preprint arXiv:1806.06446 (2018).

18. Ruining He, Wang-Cheng Kang, and Julian McAuley. Translation-based Recommendation. In Recsys 2017.

19. Yi Tay, Luu Anh Tuan, and Siu Cheung Hui. Latent Relational Metric Learning via Memory-based Attention for Collaborative Ranking. In WWW 2018.

20. Heng-Tze Cheng, Levent Koc, Jeremiah Harmsen, Tal Shaked, Tushar Chandra, Hrishi Aradhye, Glen Anderson et al. Wide & deep learning for recommender systems. In DLRS 2016.

21. Ying Shan, T. Ryan Hoens, Jian Jiao, Haijing Wang, Dong Yu, and J. C. Mao. Deep crossing: Web-scale modeling without manually crafted combinatorial features. In KDD 2016.

22. Xiangnan He, and Tat-Seng Chua. Neural factorization machines for sparse predictive analytics. In SIGIR 2017.

23. Jun Xiao, Hao Ye, Xiangnan He, Hanwang Zhang, Fei Wu, and Tat-Seng Chua. Attentional factorization machines: Learning the weight of feature interactions via attention networks. IJCAI 2017.

24. He. Deepfm: A factorization-machine based neural network for CTR prediction. IJCAI 2017.

25. Ruoxi Wang, Gang Fu, Bin Fu, Mingliang Wang. Deep & Cross Network for Ad Click Predictions. ADKDD2017.

26. Jianxun Lian, Xiaohuan Zhou, Fuzheng Zhang, Zhongxia Chen, Xing Xie, Guangzhong Sun. xDeepFM: Combining Explicit and Implicit Feature Interactions for Recommender Systems. KDD2018.

27. Bin Liu, Ruiming Tang, Yingzhi Chen, Jinkai Yu,Huifeng Guo, Yuzhou Zhang. Feature Generation by Convolutional Neural Network for Click-Through Rate Prediction. WWW2019.

28. Tongwen Huang, Zhiqi Zhang, Julin Zhang. FiBiNET: Combining Feature Importance and Bilinear feature Interaction for Click-Through Rate Prediction. Recsys2019.

29. Weiping Song, Chence Shi, Zhiping Xiao, Zhijian Duan, Yewen Xu, Ming Zhang,Jian Tang. AutoInt: Automatic Feature Interaction Learning via Self-Attentive Neural Networks. CIKM2019.

30. Guorui Zhou, Xiaoqiang Zhu, Chengru Song, Ying Fan, Han Zhu, Xiao Ma,Yanghui Yan,Junqi Jin,Han Li, Kun Gai. Deep Interest Network for Click-Through Rate Prediction. KDD2018.

31. Guorui Zhou, Na Mou, Ying Fan, Qi Pi,Weijie Bian, Chang Zhou, Xiaoqiang Zhu and Kungai. Deep Interest Evolution Network for Click-Through Rate Prediction. AAAI2019.

原文链接:

https://zhuanlan.zhihu.com/p/101136699

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页