前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >推荐系统与深度学习(十七)——DIN模型原理

推荐系统与深度学习(十七)——DIN模型原理

作者头像
数据森麟
发布2020-10-27 10:58:17
9280
发布2020-10-27 10:58:17
举报
文章被收录于专栏:数据森麟数据森麟
作者:livan

来源:数据python与算法

模型简介

随着推荐算法逐渐的发展,大佬们的研究方向主要切分成了两部分:一个是对特征的调整,大家想尽办法挖掘特征中的隐含信息,寻找新的特征而且不断进行组合交叉,例如:FM、FFM系列的模型;另一个是对模型的结构调整,另一群人又想尽办法的寻找用户交易行为的特性,添加或优化各种模型结构,以便快速发现数据信息,例如:AFM、NFM以及我们今天要了解的DIN模型。

通过对用户行为数据的探索,我们发现用户的需求存在两个特性:

Diversity:用户在浏览电商网站的过程中显示出的兴趣是十分多样性的。

Local activation: 由于用户兴趣的多样性,只有部分历史数据会影响到当次推荐的物品是否被点击,而不是所有的历史记录。

这两种特性是密不可分的。

从数据角度分析,我们可以明确,用户的访问序列中,各个行为点的权重不一致,这一特性刚好符合我们前期讲到的Attention机制,因此,阿里的大神基于此创造出了深度兴趣网络DIN。

DIN模型

本文我们假设DIN涉及的特征包括:用户特征、用户行为特征、广告特征、上下文特征。

在介绍DIN之前我们先来了解一下DIN的基准模型,即base model,如下图:

数据流为:

1)这一模型会收集各个特征,通过Embedding过程,将各个特征降维到固定的维度,同时concat成为一个完整的向量。

2)用户行为类的数据会经过sum pooling池化,形成一个融合之后的向量,然后将四部分的特征连接(concat)起来,形成完整的数据向量,喂入到DNN模型中。

其对应的损失函数为:

S是训练集数量,x是网络输入,y是标签。

这一模型存在一个问题,即我们上面提到过的两个问题,User Behaviors部分的行为权重未必一致,因此出现了基于Attention的模型结构DIN:

这一模型的核心思路为:对于每一个用户,针对不同的广告有不同的向量表示。

比较上面两个图可以发现,User Behaviors部分的计算添加了Activation Unit部分,我们仔细分析这一部分可以看到:

1)Activation Unit部分融合了用户行为向量Good和广告特性向量Condidate ad,经过一个复杂的网络计算出各个行为点的权重向量Good i Weight。

Good i Weight的计算过程如下图:

User特征向量与Ad特征向量输入到网络中,经过Out Product形成交互向量,并结合User特征向量与Ad特征向量,concat成一个完整的向量,最终经过DNN部分,输出Weight值。

对应的函数表达为:

2)Activation Unit部分输出的Weight值与原始的Good向量进行点乘操作,融合成一个带权重的行为向量,经过Sum pooling计算形成统一的行为向量。

3)接下来将四种特征的向量concat成一个长向量,输入到DNN部分,最终计算出output值。

截止到目前,我们将模型的数据流做了梳理,大家有什么新的认知吗?

模型细节

我们同时聊一下这一模型的一些细节:

1)Mini-batch Aware Regularization

当不使用正则化时,模型很容易会陷入过拟合,而用传统的l1,l2正则化时,在参数更新时,对每个参数都要进行一轮计算,复杂度大大提高,因此本文提出了一种高效的mini-batch aware正则化方法,只有对每个mini-batch中出现的稀疏特征进行l2正则化

2)Data Adaptive Activation Function

PRelu的突变点在0,但是当数据分布不同时,应该让数据自适应的选择分界点,这里改进了PRelu函数,利用Dice作为激活函数。

3)评价指标GAUC

基于模型的设计,我们重新优化了评价模型,如下图:

wi是候选广告影响着每个behavior id的权重,也就是Good i Weight

那么,为什么我们要做这样的调整呢?

我们首先要肯定的是,AUC是要分用户看的,我们的模型的预测结果,只要能够保证对每个用户来说,他想要的结果排在前面就好了。

假设有两个用户A和B,每个用户都有10个商品,10个商品中有5个是正样本,我们分别用TA,TB,FA,FB来表示两个用户的正样本和负样本。也就是说,20个商品中有10个是正样本。假设模型预测的结果大小排序依次为TA,FA,TB,FB。如果把两个用户的结果混起来看,AUC并不是很高,因为有5个正样本排在了后面,但是分开看的话,每个用户的正样本都排在了负样本之前,AUC应该是1。显然,分开看更容易体现模型的效果,这样消除了用户本身的差异。

但是上文中所说的差异是在用户点击数即样本数相同的情况下说的。还有一种差异是用户的展示次数或者点击数,如果一个用户有1个正样本,10个负样本,另一个用户有5个正样本,50个负样本,这种差异同样需要消除。那么GAUC的计算,不仅将每个用户的AUC分开计算,同时根据用户的展示数或者点击数来对每个用户的AUC进行加权处理。进一步消除了用户偏差对模型的影响。通过实验证明,GAUC确实是一个更加合理的评价指标。

代码语言:javascript
复制
◆ ◆ ◆  ◆ ◆麟哥新书已经在京东上架了,我写了本书:《拿下Offer-数据分析师求职面试指南》,目前京东正在举行100-50活动,大家可以用相当于原价5折的预购价格购买,还是非常划算的:
点击下方小程序即可进入购买页面:
代码语言:javascript
复制
数据森麟公众号的交流群已经建立,许多小伙伴已经加入其中,感谢大家的支持。大家可以在群里交流关于数据分析&数据挖掘的相关内容,还没有加入的小伙伴可以扫描下方管理员二维码,进群前一定要关注公众号奥,关注后让管理员帮忙拉进群,期待大家的加入。

管理员二维码:
猜你喜欢
● 麟哥拼了!!!亲自出镜推荐自己新书《数据分析师求职面试指南》● 厉害了!麟哥新书登顶京东销量排行榜!● 笑死人不偿命的知乎沙雕问题排行榜
● 用Python扒出B站那些“惊为天人”的阿婆主!● 你相信逛B站也能学编程吗
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-10-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数据森麟 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
批量计算
批量计算(BatchCompute,Batch)是为有大数据计算业务的企业、科研单位等提供高性价比且易用的计算服务。批量计算 Batch 可以根据用户提供的批处理规模,智能地管理作业和调动其所需的最佳资源。有了 Batch 的帮助,您可以将精力集中在如何分析和处理数据结果上。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档