《推荐系统》-DIN模型

本文介绍了阿里提出的深度兴趣网络DIN,用于解决用户行为数据中的多样性和局部激活特性。DIN通过Attention机制对用户历史行为加权,更好地捕捉用户即时兴趣。模型细节包括:GAUC评价指标、Dice激活函数和自适应正则化。实验表明,DIN在模型效果上有显著提升。
摘要由CSDN通过智能技术生成

1、背景

深度学习在CTR预估领域已经有了广泛的应用,常见的算法比如Wide&Deep,DeepFM等。这些方法一般的思路是:通过Embedding层,将高维离散特征转换为固定长度的连续特征,然后通过多个全联接层,最后通过一个sigmoid函数转化为0-1值,代表点击的概率。即Sparse Features -> Embedding Vector -> MLPs -> Sigmoid -> Output.

这种方法的优点在于:通过神经网络可以拟合高阶的非线性关系,同时减少了人工特征的工作量。

不过,阿里的研究者们通过观察收集到的线上数据,发现了用户行为数据中有两个很重要的特性:

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

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

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

举个简单的例子:

Diversity体现在年轻的母亲的历史记录中体现的兴趣十分广泛,涵盖羊毛衫、手提袋、耳环、童装、运动装等等。而爱好游泳的人同样兴趣广泛,历史记录涉及浴装、旅游手册、踏水板、马铃薯、冰激凌、坚果等等。

Local activation体现在,当我们给爱好游泳的人推荐goggle(护目镜)时,跟他之前是否购买过薯片、书籍、冰激凌的关系就不大了,而跟他游泳相关的历史记录如游泳帽的关系就比较密切。

针对上面提到的用户行为中存在的两种特性,阿里将其运用于自身的推荐系统中,推出了深度兴趣网路DIN,接下来,我们就一起来看一下模型的一些实现细节,然后我们会给出一个简化版的tensorflow实现。

2、模型设计

整体框架

我们先来看一下推荐系统的整体框架:
在这里插入图片描述
图1、架构

整个流程可以描述为:

1.检查用户历史行为数据

2.使用matching module产生候选ads。

3.通过ranking module做point-wise的排序,即得到每个候选ads的点击概率,并根据概率排序得到推荐列表。

4.记录下用户在当前展示广告下的反应(点击与否),作为label。

特征设计

本文将所涉及到的特征分为四个部分:用户特征、用户行为特征、广告特征、上下文特征,具体如下:
在这里插入图片描述
图2、特征

其中,用户行为特征是multi-hot的,即多值离散特征。针对这种特征,由于每个涉及到的非0值个数是不一样的,常见的做法就是将id转换成embedding之后,加一层pooling层,比如average-pooling,sum-pooling,max-pooling。DIN中使用的是weighted-sum,其实就是加权的sum-pooling,权重经过一个activation unit计算得到。这里我们后面还会再介绍到。

BaseModel

在介绍DIN之前,我们先来看一下一个基准模型,结构如下:
在这里插入图片描述
图3、基准模型

这里element-wise的意思其实就是元素级别的加减,同时,可不要忽略广播的存在哟。一个元素和一个向量相乘,也可以看作element-wise的,因为这个元素会广播成和向量一样的长度嘛,嘻嘻。

可以看到,Base Model首先吧one-hot或multi-hot特征转换为特定长度的embedding,作为模型的输入,然后经过一个DNN的part,得到最终的预估值。特别地,针对multi-hot的特征,做了一次element-wise+的操作,这里其实就是sum-pooling,这样,不管特征中有多少个非0值,经过转换之后的长度都是一样的!

Deep Interest Network

Base Model有一个很大的问题,它对用户的历史行为是同等对待的,没有做任何处理,这显然是不合理的。一个很显然的例子,离现在越近的行为,越能反映你当前的兴趣。因此,对用户历史行为基于Attention机制进行一个加权,阿里提出了深度兴趣网络(Deep Interest Network),先来看一下模型结构:
在这里插入图片描述
图4、DIN模型

Attention机制简单的理解就是,针对不同的广告,用户历史行为与该广告的权重是不同的。假设用户有ABC三个历史行为,对于广告D,那么ABC的权重可能是0.8、0.1、0.1;对于广告E,那么ABC的权重可能是0.3、0.6、0.1。这里的权重,就是Attention机制即上图中的Activation Unit所需要学习的。

为什么要引入这一个机制呢?难道仅仅是通过观察历史数据拍脑袋决定的么?当然不是,如果不用Local activation的话,将会出现下面的情况:假设用户的兴趣的Embedding是 V u V_u Vu,候选广告的Embedding是 V a V_a Va,用户兴趣和候选的广告的相关性可以写作 F ( u , a ) = V u ∗ V a F(u,a)=V_u *V_a F(u,a)=VuVa。如果没有Local activation机制的话,那么同一个用户对于不同的广告, V u V_u Vu都是相同的。举例来说,如果有两个广告A和B,用户兴趣和A,B的相似性都很高,那么在 V a V_a Va V b V_b Vb连线上的广告都会有很高的相似性。这样的限制使得模型非常难学习到有效的用户和广告的embedidng表示。

在加入Activation Unit之后,用户的兴趣表示计算如下:
V u = f ( V a ) = ∑ i = 1 N w i ∗ V i = ∑ i = 1 N g ( V i , V a ) ∗ V i V_u = f(V_a) = \sum_{i=1}^N w_i * V_i = \sum_{i=1}^N g(V_i, V_a)* V_i Vu=f(Va)=i=1NwiVi=i=1Ng(Vi<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值