今天的博客主要参考了四篇paper,分别为阿里妈妈定向广告推荐团队的《Deep Session Interest Network for Click-Through Rate Prediction》和《Deep Match to Rank Model for Personalized Click-Through Rate Prediction》,蚂蚁金服风控团队的《A Semi-supervised Graph Attentive Network for Financial Fraud Detection》以及最后第四范式偏学术团队的《Network On Network for Tabular Data Classification in Real-world Applications》。虽然这四篇从主题上看,并没有特别大的相关性,但是都是我最近从各个渠道看到的炒的比较热的话题,所以就趁着周末来一起总结记录一下。

首先要讲的paper是第四范式团队的《Network On Network for Tabular Data Classification in Real-world Applications》,这是一篇针对表数据即结构化数据的网络模型结构,话不多说,先展示网络架构图:

从下往上看,三个黑色的说明性文字就是本篇paper三个最大的创新点,下面来一一介绍:
1 Field-wise network
这是我第一次听说结构,paper中关于它的描述是这样说的:“Field-wise netwrok is used to extract intra-field information that features inside each field belong to the same field”,它是用来提取每一个field域的信息,所谓field信息,就是所属该field的那些feature都有包含了该域的属性。这句话无论是中文还是英文,听上去都有点绕。博主也是读了好几遍,再结合后面的例子才算真正的搞明白了。拿推荐系统场景举例,比方说,对于两个field域item和user,每一个item域会对应数以万计的商品,每一个商品都会使用唯一的Embedding进行表征,同样对于每一个user也会使用唯一的Embedding进行表征,而传统的方法,并不会区分说向量item1{item1}item1和向量item2{item2}item2之间要比与向量user1user1user1和向量user2user2user2距离更近,这里作者给每一个field都分配了一个DNN网络,而网络参数就体现了每一个field内部的intra-field information。这样做的好处,就是能让每一个field内部的特征向量被投射到相似的特征空间中去。

同时需要注意的是,如果输入的特征是数值型的话,那么对于它的表征是一个使用数值乘以一个对应于该数值域的Embedding向量,这里正好就数值型特征的入模方式做一个整体的总结:
1 进行归一化处理拼接到其实类别性特征embedding向量侧;
2 进行离散化处理作为类别特征,然后进行Embedding表征;
3 赋予其一个embedding向量,每次用特征值与embedding向量的乘积作为其最终表示。
而这里很显然作者使用的就是第三种处理方式。

2 Across field network
其实这里所谓的across field network,我认为就有点的堆料、拼凑创新点的嫌疑了,说白了就是把现在市面上常见的特征组合网络LR,AutoInt,DNN,FM and Bi-Interaction全部都过一遍,然后得到每一个网络的最后一层输出,接下来拼接这些不同特征提取网络的输出,feed进入最终汇总的DNN网络结构中去,这也就是为什么最后一层DNN叫做“Network on network”的原因。

3 Operation fusion network
不同特征提取网络的最后一层输出,进行拼接即xofn=concat([o1,o2,...,ok])∈R∑dix_{ofn}=concat([o_1,o_2,...,o_k]) \in R^{\sum d _i}xofn=concat([o1,o2,...,ok])Rdi,最后的输出为y=DNNofn(xofn)y=DNN_{ofn}(x_{ofn})y=DNNofn(xofn)。但是这样构造出来的整体网络结构,显而易见是非常深的,直接训练的话,往往难以收敛,于是作者加入了auxiliary loss损失函数,如下图所示:

其实原理很简单,就是把最后DNNofnDNN_{ofn}DNNofn中的每一层神经元都引出来,直接接一个输出网络,然后直接进行二分类的交叉熵预测,lauxi=l(sigmoid(wauxi,hi),label)l_{aux}^i=l(sigmoid(w_{aux_i},h_i),label)lauxi=l(sigmoid(wauxi,hi),label),其中hih_ihi就是第i层layer的输出向量,wauxiw_{aux_i}wauxi是第i层layer的辅助分类参数矩阵(仅在训练阶段起到辅助作用,在预测阶段直接就拿掉了),最终的损失函数为:l=l(y,label)+α∑ilauxi+γ∣∣W∣∣l=l(y,label)+\alpha\sum_i l_{aux}^i+\gamma||W||l=l(y,label)+αilauxi+γW

第二篇要介绍的paper是蚂蚁金服风控团队的《A Semi-supervised Graph Attentive Network for Financial Fraud Detection》。该paper整体上是使用了图卷积神经网络的框架,最大的创新点有2个:1 考虑了不同view视角下的网络节点表征的融合问题;2 在设计损失函数的时候,同时考虑有标注的样本和无标注的样本。下面从这两个最大的创新点出发,来讲解一下这篇paper:
1 首先来解释一下什么叫做不同view视角下的网络:

如上图所示,假设我们目标是构造用户关系网络,图中的每一个节点代表了一个用户node,那么用户之间的边可以根据不同的业务场景、不同标准来进行制定,比方说:根据用户直接是否共享设备,是否共享IP,是否存在转账关系等,不同的方式就代表了不同的view。

整个网络的架构如下所示:

从图中可以看出从view1到viem m,一共使用了m个view的信息。同时在每一个view中计算当前节点的表征的时候,其实是使用了该节点周围邻居节点的信息,显而易见周围每一个节点对于当前节点的重要性程度贡献是不一样的,为了区分不同节点对当前节点的共享重要程度,这里首先使用了基于node-level的attention机制:
Mv∈R∣nv∣.dM^v \in R^{|n_v|.d}MvRnv.d代表了nvn_vnv个节点的Embedding形式向量,而由于根据不同view构建的网络是有权的网络,因此对于一个pair对节点(u,i)(u,i)(u,i)(u为目标中心节点)来说,令euiv=wuiMive_{ui}^v=w_{ui}M_i^veuiv=wuiMiv,接下来引入另一个attention参数矩阵HvH^vHv,这样的话,以节点uuu为中心,节点iii的权重系数αi\alpha_iαi的计算公式如下所示:
αuiv=exp(euivHuv)∑k∈Nuvexp(eukvHuv)\alpha_{ui}^v=\frac{exp(e_{ui}^vH_u^v)}{\sum_{k \in N_u^v}exp(e_{uk}^vH_{u}^v)}αuiv=kNuvexp(eukvHuv)exp(euivHuv)
那么中心节点uuu的在视角vvv下的最终加权表征为:huv=∑k∈Nuαukeukh_u^v=\sum_{k \in N_u}\alpha_{uk}e_{uk}huv=kNuαukeuk
接下来每一个view下得到的节点会经过一个DNN进行特征空间的映射变换,其主要目的是为了将不同view得到的node表征映射到统一语义空间中去,方便后续的融合,变换公式如下:
huv(l)=Relu(huv(l−1)Wlv+blv)h_u^{v(l)}=Relu(h_u^{v(l-1)}W_l^v+b_l^v)huv(l)=Relu(huv(l1)Wlv+blv)

最后得到每一个视角view之下的huv(l)h_u^{v(l)}huv(l)之后,就可将不同的view进行融合,这里针对每一个用户针对每一个视角view引入了新的反映了用户喜好的参数向量ϕuv\phi_u^vϕuv,最后得到的不同视角下的权重计算公式如下:
αuv=exp(huv(L)ϕ)uv)∑kexp(huk(L)ϕuk)\alpha_u^v=\frac{exp(h_u^{v(L)}\phi)u^v)}{\sum_kexp(h_u^{k(L)}\phi_u^k)}αuv=kexp(huk(L)ϕuk)exp(huv(L)ϕ)uv)
那么最终融了了不同view的最终用户节点表征为:
hu=∣∣i=1m(αuvhuv(L))h_u=||_{i=1}^m(\alpha_u^vh_u^{v(L)})hu=i=1m(αuvhuv(L)),其中符号∣∣||代表了向量的拼接操作。

2 来解释一下作者是如何结合使用了有标注的数据和无标注的数据的,在上面得到了每一个用户融合了不同view下的表征向量huh_uhu后,对于有标签的数据可以直接接一个全连接的分类器,这里就不再赘述细节了。而对于无标注的数据,可以参考word2vec的词向量训练思想,即针对某一个节点uuu来说,其周围相近的节点作为正样本,然后采用随机抽样的方式从全局节点中得到负样本,其实整体还是比较简单的,损失函数定义如下:
Lgraph=∑u∈U∑v−log(σ(auTav))−Q.Eq−Pneg(u)log(σ(auTaq))L_{graph}=\sum_{u\in U}\sum_{v }-log(\sigma(a_u^Ta_v))-Q.E_{q-P_{neg}(u)}log(\sigma(a_u^Ta_q))Lgraph=uUvlog(σ(auTav))Q.EqPneg(u)log(σ(auTaq))
其中Pneg(u)=du0.75P_{neg}(u)=d_u^{0.75}Pneg(u)=du0.75

第三篇要介绍的paper是阿里妈妈定向广告推荐团队的《Deep Session Interest Network for Click-Through Rate Prediction》,话不多说,先给上整个推荐网络的架构图:

这篇paper我认为相对于DIN和DIEN等经典模型来说,最大的一个创新就是发现了用户的行为具有session的属性,所谓session就是一个密集时间内的客户sequence序列,同一个session内的行为具有高度一致性(假设用户在同一时刻浏览网站的时候,是在同一兴趣驱动下进行的)。而之前的模型来说都只是简单截取了用户在过去2周内的所有sequence序列,并没有根据sequence之间的时间间隔来进一步去划分session。基于这样的思维方式之下,其实整个网络模型结构就比较清晰了:

Session Division Layer:用来根据sequence之间操作的时间间隔划分session;

Session Interest Extractor Layer:使用multi-head + self attention机制来对某一个session内的sequence交互序列进行处理,使用avgPooling 的方式得到某一个session的唯一向量表征III,假设一共划分出了了k个session,那么最终经过Session Interest Extractor Layer处理之后就会得到一个长度为k的序列,I1,I2,...IkI_1,I_2,...I_kI1,I2,...Ik,每一个向量元素都包含了对应session内的用户浏览行为信息,一方面这些序列可以和当前的target item使用attention机制计算相似性,另一方面可以输入到后续的Session Interest Interacting Layer中去;

Session Interest Interacting Layer
其实这一层就是一个Bi-LSTM,也就是双向的LSTM网络结构。Bi-LSTM的输出是一个向量序列,然后将这些序列向量和target item使用attention 机制计算相似性,将加权后的表征向量输出到Concat & Flatten层中去。

第四篇也是本博客最后一篇要讲解的paper是阿里妈妈定向广告推荐团队的《Deep Match to Rank Model for Personalized Click-Through Rate Prediction》。
对于点击率预估问题,个性化是提升其效果的一个重要的方面。个性化的一个重要方面就是对用户兴趣的刻画,之前博客提到过的DIN、DIEN,以及刚刚讲解的DSIN等模型在建模的时候忽略了建模用户和物品之间的相关性(他们都只是利用到了target item和浏览的sequence item之间的相关性即仅仅使用了I2I的信息)。用户和物品之间的相关性(U2I),可以直接衡量用户对目标商品的偏好强度,这部分的思想其实是参考了召回模型阶段常用的协同过滤手段,因此paper标题才包含了Deep match这个关键字。话不多是说,直接上图:


首先从左到右依次讲解:
I2I Network
αt=zTtanh(Wcec+Wppt+Weet+b)\alpha_t=z^Ttanh(W_ce_c+W_pp_t+W_ee_t+b)αt=zTtanh(Wcec+Wppt+Weet+b)
r=∑t=1Tαtr=\sum_{t=1}^T\alpha_tr=t=1Tαt
βt=exp(αt)∑i=1Texp(αi)\beta_t=\frac{exp(\alpha_t)}{\sum_{i=1}^Texp(\alpha_i)}βt=i=1Texp(αi)exp(αt)
u=∑t=1T(βtet)u=\sum_{t=1}^T(\beta_te_t)u=t=1T(βtet)
其中ete_tet代表了target item的embedding形式,ptp_tpt是position embedding,ece_cec代表用户浏览的sequence embedding。
其实和之前阿里妈妈提出的DIN相比有2点不太一样的地方:
1 加入了位置position embedding;
2 在计算完了α\alphaα进行归一化之前的时候,将归一化之前的相似度系数进行相加作为了一维特征输入到了后面。

U2I Network
这个网络模块的精髓是说利用用户之前浏览行为生成用户的embedding表征形式,然后利用用户embedding和target item商品embedding计算内积,将内积分数作为一个重要特征输入到后续网络中去,公式如下:
αt=zTtanh(Wcec+Wppt+b)\alpha_t=z^Ttanh(W_ce_c+W_pp_t+b)αt=zTtanh(Wcec+Wppt+b)
αt=exp(αt)∑i=1Texp(αi)\alpha_t=\frac{exp(\alpha_t)}{\sum_{i=1}^Texp(\alpha_i)}αt=i=1Texp(αi)exp(αt)
u=g(∑t=1T(αtet))u=g(\sum_{t=1}^T(\alpha_te_t))u=g(t=1T(αtet))
上述g其实是一个全连接网络+非线性激活函数,主要目的是为了保证用户embedding和target item embedding的维度是一致的。
score=uTtargetitemscore=u^Ttarget_{item}score=uTtargetitem。同时作者强调的是,如果从神经网络优化使用的back-propagation技术角度来看的话,只通过一个内积值进行训练,作者认为恐怕对于整个神经网络来说是比较困难的。为了进一步帮助模型进行训练收敛,作者引入了auxiliary 的损失函数,其整体思想是:通过前T−1T-1T1个商品浏览点击行为序列来预测第TTT时刻的商品浏览信息,同样这里利用了负采样的技术来简化模型的训练过程,辅助损失函数形式如下:
LNS=−1N∑i=1N(log(σ(uT−1Tvp))+∑j=1klog(σ(−uT−1Tvn)))L_{NS}=-\frac{1}{N}\sum_{i=1}^N(log(\sigma(u_{T-1}^Tv_p))+\sum_{j=1}^klog(\sigma(-u_{T-1}^Tv_n)))LNS=N1i=1N(log(σ(uT1Tvp))+j=1klog(σ(uT1Tvn)))
其中vpv_pvp代表了正样本即第TTT时刻点击浏览的商品,vnv_nvn代表了负采样得到的样本,其中kkk代表了负采样的样本个数,这是一个超参数。
由于引入了U2IU2IU2I信息,故在各个数据集上均取得了不错的结果。

深度学习在工业界的应用案例(二)相关推荐

  1. 都2021年了,不会还有人连深度学习都不了解吧(二)- 卷积篇

    一.前言 上篇文章详细阐述了激活函数是什么.常用的激活函数有哪些以及为什么要使用激活函数,相信大家对此有了一定的了解.在此基础上,我们趁热打铁,继续学习深度学习其它必须的知识.该篇文章讲述卷积操作及其 ...

  2. 【 卷积神经网络CNN 数学原理分析与源码详解 深度学习 Pytorch笔记 B站刘二大人(9/10)】

    卷积神经网络CNN 数学原理分析与源码详解 深度学习 Pytorch笔记 B站刘二大人(9/10) 本章主要进行卷积神经网络的相关数学原理和pytorch的对应模块进行推导分析 代码也是通过demo实 ...

  3. PyTorch深度学习入门与实战(案例视频精讲)

    作者:孙玉林,余本国 著 出版社:中国水利水电出版社 品牌:智博尚书 出版时间:2020-07-01 PyTorch深度学习入门与实战(案例视频精讲)

  4. 如何实践AI深度学习的十大惊艳案例

    https://www.toutiao.com/i6641746367272190477/ 2019-01-02 12:08:01 你可能已经听说过深度学习并认为它是骇人的数据科学里的一个领域.怎么可 ...

  5. 【深度学习】Keras实现回归和二分类问题讲解

    [深度学习]Keras实现回归和二分类问题讲解 文章目录 [深度学习]Keras实现回归和二分类问题讲解 1 回归问题1.1 波士顿房价预测数据集1.2 构建基准模型1.3 数据预处理1.4 超参数 ...

  6. 【 线性模型 Linear-Model 数学原理分析以及源码实现 深度学习 Pytorch笔记 B站刘二大人(1/10)】

    线性模型 Linear-Model 数学原理分析以及源码实现 深度学习 Pytorch笔记 B站刘二大人(1/10) 数学原理分析 线性模型是我们在初级数学问题中所遇到的最普遍也是最多的一类问题 在线 ...

  7. 【 非线性回归 Logistics-Regression 模块实现与源码解读 深度学习 Pytorch笔记 B站刘二大人(5/10)】

    非线性回归 Logistics-Regression 模块实现与源码解读 深度学习 Pytorch笔记 B站刘二大人(5/10) 数学推导 什么是logistics函数 在定义上Logistic函数或 ...

  8. 【 反向传播算法 Back-Propagation 数学推导以及源码详解 深度学习 Pytorch笔记 B站刘二大人(3/10)】

    反向传播算法 Back-Propagation 数学推导以及源码详解 深度学习 Pytorch笔记 B站刘二大人(3/10) 数学推导 BP算法 BP神经网络可以说机器学习的最基础网络.对于普通的简单 ...

  9. 【 梯度下降算法 Gradient-Descend 数学推导与源码详解 深度学习 Pytorch笔记 B站刘二大人(2/10)】

    梯度下降算法 Gradient-Descend 数学推导与源码详解 深度学习 Pytorch笔记 B站刘二大人(2/10) 数学原理分析 在第一节中我们定义并构建了线性模型,即最简单的深度学习模型,但 ...

最新文章

  1. 第10章* 网络 幂律分布
  2. js 字符和html和数值拼接,js中substring和substr的用法(获取字符串为整个html页面中的某个数值)...
  3. XFtp中文乱码解决
  4. 手机qq2008触屏版_天猫精灵 CC10 电池版体验:只卖 799 元的平板电脑,比 iPad 更适合老人小孩...
  5. Mysql:好好的索引,为什么要下推?
  6. js传真实地址 C:\fakepath
  7. 苹果三星手机被诉辐射超标;淘集集启动破产清算;Drupal 8.8.0 发布 | 极客头条...
  8. 程序员怒了!阿里 Antd 圣诞彩蛋害我被离职了!
  9. 《陶哲轩实分析》习题10.4.1
  10. PLT hook与Inline hook
  11. MariaDB安装教程
  12. 快速插入参考文献的方法
  13. Kettle之Excel输入的简单使用
  14. html制作古诗念奴娇,《念奴娇·赤壁怀古》的教学设计
  15. service now 接口进行GET、POST
  16. 嵌入式Linux:移植USB接口的RTL8188EUS、RTL8188ETV WIFI模块
  17. 最新小笑授权系统源码V6.5+开心免授权版
  18. 仅一张人脸就能被扒得底裤不剩:口罩墨镜都没用,跨平台跨时空,这个人脸搜索惹了众怒...
  19. Linux常见权限处理、文件搜索、帮助、压缩命令
  20. 由电影Matrix(骇客帝国)联想到的操作系统知识

热门文章

  1. 如何将资源打包成.unity3d文件
  2. 隐式内联函数和显式内联函数
  3. C语言:选列主元约当消元法求线性方程组唯一解
  4. 坠落的蚂蚁【思维/模拟】
  5. Linux虚拟声卡有吱吱声,解决Win7+8系统爆音有杂音吱吱声
  6. CSS3之边框图片border-image
  7. 志强:经过测试有效的四种引流方法
  8. 我也写了部lt;西游记gt;
  9. 微信小程序云开发CMS中WebHook功能的使用方法
  10. php 字符串编码方式转换,PHP 字符串编码的转换