3、 xDeepFM
xDeepFM是一种新的压缩交互网络(Compressed Interaction Network,CIN),目标是以显式方式在矢量级上生成特征交互。一方面,xDeepFM 能够显式地学习某些边界度特征交互。另一方面,它可以隐式学习任意的低阶和高阶特征交互。
CIN网络设计的优点:1)以vector-wise而不是bit-wise形式得到特征交叉关系;2)可以得到显式的特征高阶交叉关系;3)参数容量不会随着网络层数的加深而呈指数形式上升。embedding向量是看做vector-wise形式的特征交互,然后将多个field embedding表示成矩阵X0,其中,X0的第i个field特征的嵌入向量(X_i,*)0=ei,D为field embedding向量维度,对应的CIN第k层的输出为矩阵Xk。对于每一层, 是通过下面的方式计算的:
其中,Wk,h表示用于计算第k层输出中的第h行向量 X(i,*)k 的一个参数矩阵,因此W(i,j)k,h是一个标量数值,即对哈达玛积计算标量倍数。X_k是通过Xk-1和X0计算得到的,因此特征交互关系是通过显性计算的,并且特征交互的阶数随着层数的增加也在加深。CIN结构如图4所示。
图4. 压缩交互网络(CIN)的组成部分和架构
作者分析,CIN的结构非常类似于RNN结构,即下一层输出的结果取决于上一层输出的结果和一个额外的输入,而且我们在每层中都是用这样的结构,因此特征交互关系就是在vector-wise水平上得到的。此外,如图22(a),CIN还与CNN有类比性,引入一个中间张量(intermediate tensor) Zk+1,它是关于隐藏层Xk和X0的一个outer products(沿着embedding维度),因此可以将 Zk+1看做一幅图像,并且 Wk,h 是一个filter。如图22(b)所示,我们将filter沿着 Zk+1的embedding维度方向做平滑操作,即可得到隐向量 X(i,*)k,将其称为一个feature map,因此 Xk 就是 Hk 个不同feature map的集合,Xk+1就是 Hk+1个不同feature map的集合。CIN中的名词compressed
是指第k个隐层将 Hk-1*m 个向量的潜在空间压缩至个 Hk 向量。如图22(c)所示,表达CIN的整体结构,用T表示CIN的深度,每一个隐藏层 Xk(k属于[1,T]) 和输出单元都有关联,在第k个隐层,在其中每个feature map上,完成sum pooling操作,即:
对于第k个隐层,可以得到pooling之后的向量:
对于所有隐层的pooling之后的向量,将它们concat之后作为输出单元:
直接使用CIN用于二分类,那么输出单元就是一个sigmoid节点:
当前SOTA! 平台收录xDeepFM共6个模型实现资源。
项目 | SOTA!平台项目详情页 |
xDeepFM |
前往 SOTA!模型平台获取实现资源:https://sota.jiqizhixin.com/project/xdeepfm |
4、 DIN
针对特定的一件商品的推荐,如果特征中包含用户的历史行为,那么不能一概而论地对所有商品进行均等地计算,而以往的Embedding&MLP类型方法中,对历史商品没有侧重,这是不合理的。在DIN中,作者针对目标item对历史行为进行了attentive learning。举例来说,如果一个人买了一件游泳镜,那这一定是因为这个人之前买过泳装、泳帽之类的东西,跟这个人买的羊毛衫、电脑之类的其它东西不太相关。基于此,提出了 DIN 模型。DIN引入 local activation unit 计算历史行为与候选商品的相关性,之后对用户的兴趣点做weighted sum pooling ,得到对当前候选商品用户兴趣的表示向量。与候选商品相关性越高的行为,激活权重越大,在用户兴趣表征中占主导地位。那么对不同的候选商品,用户兴趣的表达向量是不同的,提高了模型在有限维度下的表征能力,能够更好地捕捉用户的各种兴趣。文章还提出一种适应性的正则化方法,以及由PReLU推广而来的适应性的Dice激活函数。
对于某条数据,可以表示为如下形式:
下表为全部特征,主要由4类组成:用户基本特征、用户行为特征、候选商品特征、上下文特征。表1. 阿里巴巴展示广告系统中使用的特征集的统计。特征是由稀疏的二进制向量组成的,以分组的方式展示
图5. 网络结构。左边部分是base模型(嵌入和MLP)的网络。将属于一个商品的cate_id、shop_id和goods_id的嵌入连接起来,代表用户行为中的一个访问过的商品。右边部分是DIN模型。它引入了一个局部激活单元,在不同的候选广告中,用户兴趣的表示是自适应变化的
图5 左侧为base模型的结构。base模型主要包含:Embedding layer、Pooling layer and Concat layer、MLP。损失函数为二分类的交叉熵损失函数,S是N个训练样本,x是模型输入,标签y∈(0,1),p(x)是模型经过softmax层后的输出,代表这条样本x的候选商品被点击的概率
用户行为特征至关重要,与候选商品相关的历史行为对点击有很大的影响。DIN考虑历史行为的相关性,自适应地计算用户兴趣的表示向量,而不是用同一个向量来表达所有的不同兴趣。DIN引入 local activation unit,其他结构与 base model 相同,activation unit 应用在用户行为特征上,作为一个 weighted sum pooling,适应性的计算用户embedding向量。对于候选商品A,用户U的embedding向量可以表示为:
其中,e_1、e_2、...e_H代表H个用户行为特征embedding,v_A代表候选商品的embedding,a(·)是一个前向网络,输入两个embedding向量,输出权重。与传统attention方法不同,为了保留用户兴趣的强度,没有约束∑w_j=1。这里的∑w_j可以被看作在某一方面激活用户兴趣强度的近似,比如某用户历史行为包括90%的衣服和10%的电子产品,那么对于T恤和手机两个候选商品,T恤将会激活历史行为中的大部分衣物行为,会得到更大的,也就是相比于手机,对T恤有更强烈的兴趣。
在阿里巴巴的广告系统中,商品和用户的数量高达数亿。实际上,用大规模的稀疏输入特征训练工业深度网络是一个巨大的挑战。作者在文中介绍了两种重要的且在实践中有效的技术。
Mini-batch Aware Regularization
一种自适应的正则化方法,只计算在每个mini-batch中出现的特征的相关参数的L2范数。实际上,embedding dictionary 占据了网络模型的大部分参数量,令W∈RDxk代表整个 embedding dictionary 的参数,D是embedding向量的维度,K是特征空间的维度,在样本上表示为:
在mini-batch形式下,B代表batch的个数,B_m代表第m个batch,上式可表示为:
令
代表在第m个batch中是否有至少一个样本包含feature ID j,则上式可近似表示为:
那么,得到一个近似的带有L2正则的mini-batch参数更新方法,对第m个batch,feature j的embedding权重更新为:
Data Adaptive Activation Function
经典的激活函数PReLU如下:
其中,s是激活函数f(-)的输入的一个维度,p(s)=I(s>0)是一个指标函数,它控制f(s)在f(s)=s和f(s)=αs两个通道之间切换,第二个通道的α是一个学习参数。这里把p(s)称为控制函数。当各层的输入服从不同的分布时,PReLU取0值作为恒定的修正点可能不合适,因此提出一种根据输入的分布而自适应的激活函数,叫做Dice。当E和Var都为0时,Dice就退化为PReLU。
与PReLU的不同之处在于p(s),在训练时E和Var是每个mini-batch输入的均值和方差,在测试阶段,E和Var是数据E和Var的平均,ε防止分母为0,设为1e-8。图24的左边部分绘制出了PReLU 的控制功能,右侧为Dice的控制函数。
图6. PReLU和Dice控制函数
当前SOTA! 平台收录DIN共17个模型实现资源。
项目 | SOTA!平台项目详情页 |
DIN | 前往 SOTA!模型平台获取实现资源:https://sota.jiqizhixin.com/project/din-2 |