阿里深度兴趣网络模型paper学习
论文地址:Deep Interest Network for Click-Through Rate ...
这篇论文来自阿里妈妈的精准定向检索及基础算法团队。文章提出的Deep Interest Network (DIN),实现了推荐系统CTR预估模型中,对用户历史行为数据的进一步挖掘。同时,文章中提出的Dice激活函数和自适应正则方法也优化了模型的训练过程。
Motivation
CTR预估任务是,根据给定广告、用户和上下文情况等信息,对每次广告的点击情况做出预测。其中,对于用户历史行为数据的挖掘尤为重要,从这些历史行为中我们可以获取更多的关于用户兴趣的信息,从而帮助作出更准确的CTR预估。
许多应用于CTR预估的深度模型已经被提出。它们的基本思路是将原始的高维稀疏特征映射到一个低维空间中,也即对原始特征做了embedding操作,之后一起通过一个全连接网络学习到特征间的交互信息和最终与CTR之间的非线性关系。这里值得注意的一点是,在对用户历史行为数据进行处理时,每个用户的历史点击个数是不相等的,我们需要把它们编码成一个固定长的向量。以往的做法是,对每次历史点击做相同的embedding操作之后,将它们做一个求和或者求最大值的操作,类似经过了一个pooling层操作。论文认为这个操作损失了大量的信息,于是引入attention机制,提出一种更好的表示方式。
DIN方法基于对用户历史行为数据的两个观察:1、多样性,一个用户可以对多种品类的东西感兴趣;2、部分对应,只有一部分的历史数据对目前的点击预测有帮助,比如系统向用户推荐泳镜时会和用户点击过的泳衣产生关联,但是跟用户买的书就关系不大。于是,DIN设计了一个attention结构,对用户的历史数据和待估算的广告之间部分匹配,从而得到一个权重值,用来进行embedding间的加权求和。

Model
- 模型结构
传统深度模型和DIN模型的对比如下图:

DIN模型在对用户的表示计算上引入了attention network (也即图中的Activation Unit) 。DIN把用户特征、用户历史行为特征进行embedding操作,视为对用户兴趣的表示,之后通过attention network,对每个兴趣表示赋予不同的权值。这个权值是由用户的兴趣和待估算的广告进行匹配计算得到的,如此模型结构符合了之前的两个观察——用户兴趣的多样性以及部分对应。attention network 的计算公式如下, 代表用户表示向量,
代表用户兴趣表示向量,
代表广告表示向量:

- 模型训练
a. 评价指标
不同于以往CTR模型采用AUC作为评价指标,论文采用的评价指标是自己设计的GAUC评价指标,并且实践证明了该评价指标更可靠。
AUC的含义是正样本得分比负样本得分高的概率。在CTR的实际应用场景中,CTR预测常被应用于对每个用户的候选广告进行排序,也即最终想得到的效果是每个用户的AUC达到最高。同时,不同用户的AUC之间也确实存在差别,有的用户天生点击率就高,有的用户却不怎么喜欢点击广告。
以往的评价指标是对样本不区分用户地进行AUC计算。论文采用的GAUC计算了用户级别的AUC,在将其按展示次数进行加权,消除了用户偏差对模型评价的影响,更准确地描述了模型对于每个用户的表现效果。

b. 激活函数
论文提出了一种新的激活函数,实验效果表现优于PReLU,是一种data dependent的激活函数。首先,PReLU的定义如下:

它其实是ReLU的改良版,ReLU可以看作是 ,相当于输出
经过了一个在0点的阶跃整流器。由于ReLU在
小于0的时候,梯度为0,可能导致网络停止更新,PReLU对整流器的左半部分形式进行了修改,使得
小于0时输出不为0。
然而论文里认为,对于所有输入不应该都选择0点为整流点。于是提出了一种data depende- nt的方法,并称该激活函数为Dice函数,形式如下:

可以看出, 值这个概率值决定着输出是取
或者是
,
也起到了一个整流器的作用。这里注意获取
的两步操作:首先,对
进行均值归一化处理,这使得整流点是在数据的均值处,实现了data dependent的想法;其次,经过一个sigmoid函数的计算,得到了一个0到1的概率值,巧合的是最近google提出的Swish函数形式为
在多个实验上证明了比ReLU函数
表现更优。
c. 自适应正则
在CTR预估任务中,用户行为数据具有长尾分布的特点,也即数据非常的稀疏。为了防止模型过拟合,论文设计了一个自适应的正则方法。


代表了特征
出现的频率。该正则项惩罚了出现频率低的item,取得了不错的效果。

Result
可以看到DIN的效果好于Base模型,同时Dice激活函数和自适应正则都为模型效果带来提升。

Innovation
- 论文着力于在CTR预估任务中对用户历史数据的挖掘。基于对用户兴趣的两个观察——兴趣多样性和兴趣与广告部分对应,提出了深度兴趣网络DIN。
- DIN的主要想法是,在对用户的表示上引入了attention机制,也即对用户的每个兴趣表示赋予不同的权值,这个权值是由用户的兴趣和待估算的广告进行匹配计算得到的。这个想法和seq2seq模型中attention的想法类似,seq2seq模型中对应每个输出
都会通过attention结构学习得到一个输入的表示
,改变以往用固定向量表示的方式,使得网络学习更加灵活。
- DIN在训练过程和评价指标上都有一些技巧,尤其论文中提出了Dice激活函数和自适应正则为模型效果都带来了提升
阿里深度兴趣网络模型paper学习的更多相关文章
- 推荐系统中的注意力机制——阿里深度兴趣网络(DIN)
参考: https://zhuanlan.zhihu.com/p/51623339 https://arxiv.org/abs/1706.06978 注意力机制顾名思义,就是模型在预测的时候,对用户不 ...
- [论文阅读]阿里DIN深度兴趣网络之总体解读
[论文阅读]阿里DIN深度兴趣网络之总体解读 目录 [论文阅读]阿里DIN深度兴趣网络之总体解读 0x00 摘要 0x01 论文概要 1.1 概括 1.2 文章信息 1.3 核心观点 1.4 名词解释 ...
- [阿里DIN] 深度兴趣网络源码分析 之 整体代码结构
[阿里DIN] 深度兴趣网络源码分析 之 整体代码结构 目录 [阿里DIN] 深度兴趣网络源码分析 之 整体代码结构 0x00 摘要 0x01 文件简介 0x02 总体架构 0x03 总体代码 0x0 ...
- [阿里DIEN] 深度兴趣进化网络源码分析 之 Keras版本
[阿里DIEN] 深度兴趣进化网络源码分析 之 Keras版本 目录 [阿里DIEN] 深度兴趣进化网络源码分析 之 Keras版本 0x00 摘要 0x01 背景 1.1 代码进化 1.2 Deep ...
- [论文阅读]阿里DIEN深度兴趣进化网络之总体解读
[论文阅读]阿里DIEN深度兴趣进化网络之总体解读 目录 [论文阅读]阿里DIEN深度兴趣进化网络之总体解读 0x00 摘要 0x01论文概要 1.1 文章信息 1.2 基本观点 1.2.1 DIN的 ...
- [阿里DIN] 深度兴趣网络源码分析 之 如何建模用户序列
[阿里DIN] 深度兴趣网络源码分析 之 如何建模用户序列 目录 [阿里DIN] 深度兴趣网络源码分析 之 如何建模用户序列 0x00 摘要 0x01 DIN 需要什么数据 0x02 如何产生数据 2 ...
- 推荐系统---深度兴趣网络DIN&DIEN
深度学习在推荐系统.CTR预估领域已经有了广泛应用,如wide&deep.deepFM模型等,今天介绍一下由阿里算法团队提出的深度兴趣网络DIN和DIEN两种模型 paper DIN:http ...
- 阿里封神谈hadoop学习之路
阿里封神谈hadoop学习之路 封神 2016-04-14 16:03:51 浏览3283 评论3 发表于: 阿里云E-MapReduce >> 开源大数据周刊 hadoop 学生 s ...
- (转载)深度剖析 | 可微分学习的自适配归一化 (Switchable Normalization)
深度剖析 | 可微分学习的自适配归一化 (Switchable Normalization) 作者:罗平.任家敏.彭章琳 编写:吴凌云.张瑞茂.邵文琪.王新江 转自:知乎.原论文参考arXiv:180 ...
随机推荐
- PHP开发小技巧,让你瞬间提升逼格
说到PHP代码的优化,PHP开发的小技巧我想很多人都有自己的一套,下面分享一些小技巧,希望对大家有所帮助. 1.循环内部不要声明变量,尤其是对象这样的变量. 2.foreach效率更高,尽量用fore ...
- JAVA入门[6]-Mybatis简单示例
初次使用Mybatis,先手写一个hello world级别的例子,即根据id查询商品分类详情. 一.建表 create table Category ( Id INT not null, Name ...
- python 列表解析
列表解析,主要用于动态创建列表 本篇主要说一下,lambda.map().和filter()同列表解析语句之间结合的用法 列表解析的基本语法为:[expr for iter_var in iterab ...
- Python笔记·第九章—— 函数 (一)
一.函数的作用 函数可以让我们代码结构更清晰,而且避免了代码的重复,冗余,使一段代码或者功能可以反复的被调用,大大提高了开发效率 二.函数的定义 def 函数名(参数1,参数2,*args,默认参数, ...
- 利用AndroidStudio开发java工程
1.新建一个project,或者如果你已经有project的话,那就直接新建一个module.注意选择Java library,然后下一步. 2.输入module的一些信息.点击finish.(在创建 ...
- utf8、unicode与gbk
中国人民通过对 ASCII 编码(对于英文字母8位)的中文扩充改造,产生了 GB2312 编码,可以表示6000多个常用汉字. 汉字实在是太多了,包括繁体和各种字符,于是产生了 GBK (汉字:两个字 ...
- 微信小程序路过
应该算是入门篇, 从我怎么0基础然后沿着什么方向走,遇到的什么坑,如何方向解决,不过本人接触不是很多,所以也就了解有限. 小程序的前提: 1.小程序大小不允许超过2M.(也就是本地图片,大图精图不要在 ...
- TCP/IP的那些事--子网掩码
当前互联网使用的主要是IPv4协议,它是第一个被广泛使用,构成现今互联网的基础的协议.但是,随着用户数量的增多,IPv4包含的IP资源在不断减少.或许你会想,不是还有IPv6吗?IPv6的容量足以应付 ...
- APP安全--网络传输安全 AES/RSA/ECC/MD5/SHA
移动端App安全如果按CS结构来划分的话,主要涉及客户端本身数据安全,Client到Server网络传输的安全,客户端本身安全又包括代码安全和数据存储安全.所以当我们谈论App安全问题的时候一般来说在 ...
- csdn博客被删除联系客服恢复
前几天写了篇"如何使用shadowsocksFQ",居然被删除,我很郁闷,客服给我的回答是"影响了客户体验,网安查的严,不能带有FQ的信息出现" 我一直很郁闷, ...