阿里妈妈2018的DIN & DIEN

DIN来龙去脉

背景知识:用户画像+用户行为+Item特征+上下文特征,这4者(也可是3者)作为输入信息,将原有的高维稀疏0/1特征做成embedding向量,每组特征由1个或多个向量pooling得到1个向量,最后所有组特征concatenate起来,作为神经网络的input;

一. DIN:(用户行为item和候选item的向量相似度做权重(attention),把所有行为item加和起来,得到行为序列向量)

A. Attention:

引入attention机制,对user侧的特征进行了“选择性pooling",把和当前这个广告相关的信息加强了出来;(这里用的attention不是简单的内积,而是一个小网络)

以前user的一组行为,是平等对待的(同等权重地pooling; 也可以把时间权重加上,越新的权重越大);现在把user每个行为和广告特征计算相关性(其实就是2个向量的内积),作为该行为的权重,该user所有行为加权加和得到最终行为特征向量;

体现了“局部激活”:用户点击了这个广告,和他之前的某些点击行为有关,而不是所有;

体现了“多样性”:用户对广告A感兴趣,和之前的某些行为有关;用户对广告B感兴趣,和之前的另一些行为有关;

每个ad会有good_id, shop_id, category_id三层属性,shop_id只跟用户历史中的shop_id序列发生作用,good_id只跟用户的good_id序列发生作用,...; 其实就是把3个embedding进行concatenate,得到一个item向量;注意:用户行为序列里,是最近点击过的商品(不是广告!),候选广告是用他对应商品的id做特征的;

对以下3点微创新讲的很清楚的文章

B. 自适应正则:输入embedding层是高维稀疏的,如果不进行正则,第1个epoch后效果就大幅下降;传统L2正则用在高维稀疏embedding输入上,会带来巨大的计算量(每个mini-batch只有几百个embedding有效,而L2正则会一股脑更新所有这几百万个embedding); 解决:本mini-batch里出现过的embedding,进行L2正则更新,没出现就不更新;

C. Dice函数:PRelu在LeakyRelu基础上,让x负半轴的参数\alpha变成了可学习的;观察到每一层网络的输入值分布都是不同的,Dice在PRelu的基础上,把0作为分割点改成了把均值点作为分割点, 并进行了平滑;(类比google的Swish函数?)

D. GAUC:  AUC衡量的是样本间的排序能力。CRT预估是二分类问题,输出是该样本被点击的概率。不同用户之前的排序顺序可能不重要,而全局AUC会考虑这个,所以有时候会不准。GAUC对每个用户求一个AUC,然后加权平均起来,权重可以是该用户的总点击数。   (传统AUC是Area-Uner-Curve, 是ROC曲线形成的包络面积,横轴是FPR, 纵轴是TPR;TPR=TP/(TP+FN), FPR=FP/(FP+TN))

 

二. DIEN: (用RNN编码用户行为序列;附加损失函数,用上一时刻的隐状态预测下一时刻的行为;用Attention得到的"权重"去控制当前时刻的输入有多大程度更新(update-gate)到后面的RNN里面去)

DIEN论文中文翻译

DIEN的论文解读

两大思想:

1. latent interest: 用户行为序列是observation, 用户的兴趣是隐变量;

2. interest evolving: 用户的兴趣是在不断变化的;

Base model: 输入是<用户行为,用户画像,ad特征,上下文特征>四大类特征,每大类有多组特征,每组特征由multi-hot编码;embedding+pooling; MLP; softmax层2个类别输出;log-likelihood损失函数;(log-likelihood是极大似然函数的负对数形式;和交叉熵损失函数一模一样,也可以理解成交叉熵损失函数)

Base model的缺点:

1. 直接采用行为们的pooling作为兴趣的做法,忽略了行为时间序列内部的依赖关系;Insight:(1)在电商平台中,用户行为是兴趣的载体,且是以时间而产生的序列数据,其间存在的依赖、次序隐藏着用户喜好。(2)当前时刻的兴趣直接导致了下一行为的产生

2. 忽略了兴趣的变化。Insight: (1)用户的兴趣呈现序列变迁的趋势,即随外在环境和内在认知的变化而变化。(2)DIN的启示:淘宝平台中,用户的兴趣是丰富多样的,但能够影响用户行为的仅仅是与目标商品相关的兴趣(attention)。(3)AGRU的启示:用带attention机制的GRU对序列行为建模。

DIEN网络做出的改进:

1. 其他3大类特征不变,仅对用户行为这类特征进行序列建模;

2. 第一层使用GRU单元解决时间序列的梯度消散问题;(且比LSTM速度快)

3. 第一层t时刻的输出h[t](兴趣)和下一时刻的输入e[t+1](行为), 设计附加损失函数,用negative-sampling,负例的选择:或是从用户未交互过的商品中随机抽取,或是从已展示给用户但用户没有点击的商品中随机抽取。h和e度量相似度,监督信息是0或1,使用负对数似然损失函数(别名是交叉熵损失函数)

4. 第二层使用attention,将上一层得到的兴趣h和ad特征进行相似度度量,然后经过softmax得到本次行为序列里每个兴趣和该ad的相似概率(每个兴趣计算hWe,这些数值经过softmax得到概率们);AUGRU单元:把attention作为update-gate的一个因素,从而影响“当前兴趣”和“记忆兴趣”之间的取舍程度;

效果提升:在阿里在线商品广告推荐大数据集上,AUC做指标:Base model和Deep&wide基本一样;DIN提升了0.65个百分点;只用2层GRU单元提升了1个百分点;DIEN去掉附加loss函数提升了1.3个百分点;DIEN提升了1.9个百分点;

DIEN对效果提升的总结:

1.引入RNN对用户行为序列建模;

2.对序列里的中间兴趣和下一时刻的输入行为,进行了相关度建模(附加损失函数);

3.用每时刻的兴趣和该ad特征进行了相关性概率计算,作为下一层GRU单元的一个输入,影响“当前兴趣”和“记忆兴趣”之间的取舍程度;

 

感想:

人家阿里的人,意识到用户的兴趣只和一部分用户行为有关,和当前商品相关度大的那些行为会构成用户的兴趣,于是就把attention加入了进来,于是有了DIN;

人家阿里的人,意识到用户的行为是一个时间序列,时间序列建模当然用RNN最好,再用上DIN的attention,于是就有了DIEN;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值