DIN要解决的问题

DIN(Deep Interest Network)是阿里巴巴用于解决工业级CTR预估问题的预测模型,论文收录于KDD 2018。这篇论文的主要贡献有三点:提出了DIN模型;提出了mini-batch aware regularizer来减少计算量和规避过拟合;根据输入数据的分布设计了Dice激活函数。

对于cost-per-click(CPC)型的广告系统,广告通常是基于eCPM(effective cost per mille)排序的,eCPM是广告竞价与系统预估的CTR的乘积。对于电商平台也是一样,商品往往基于CVR进行排序,而CVR又是商品价格与CTR的乘积。因此不同于个性化推荐中仅用于排序的CTR模型,广告系统与电商平台的CTR模型需要有很高的精度。在DIN之前,CTR预估往往通过embedding+MLP的形式,将用户特征编码为同一个定长向量,再拼接广告或商品向量送入MLP进行预测。而实际情况则是面对不同的广告或商品候选集,用户的不同兴趣会对CTR的结果产生不同影响。此前的模型往往无法从大量历史行为中很好地挖掘出用户分散的兴趣,而DIN则是希望通过Attention机制对用户历史行为进行更有针对性的挖掘,并且实现工业可用的实战模型。

以电商平台为例,用户行为的一大特点就是兴趣广泛。但是为用户进行推荐时,应当针对不同的商品挖掘用户不同的兴趣点。举例来说,比如一个人现在希望购买泳镜,那么进行推荐时,该用户之前购买泳衣的行为就应当比该用户购买鞋子的行为,具有更大的影响权重。因此DIN希望针对不同的候选商品,将用户用更相关的向量进行表示。

DIN的网络结构

在CTR预估任务中,数据一般以多组离散数据的形式出现,比如:[weekday=Friday, gender=Female, visited_cate_ids={Bag, Book}, ad_cate_id=Book]。这种形式的数据一般会被转化为one-hot和multi-hot拼接而成的高维稀疏特征。之后这种高维特征将会被embedding为低维的稠密特征。

在论文中,embedding+MLP这种形式的CTR预估模型被视作base model。这类base model会通过池化将不定长的用户行为转化为定长向量,之后再将这些向量与其他定长向量进行拼接,最终得到可以输入MLP的向量。损失函数选用负对数似然函数:
L=−1N∑(x,y)∈S(ylog⁡p(x)+(1−y)log⁡(1−p(x)))L=-\frac{1}{N}\sum_{(x,y)\in S}(y\log{p(x)}+(1-y)\log{(1-p(x))})L=N1(x,y)S(ylogp(x)+(1y)log(1p(x)))
其中,SSS是训练集,NNN是训练集大小,xxx是网络输入,y∈{0,1}y\in\{0,1\}y{0,1}是标签,p(x)p(x)p(x)是经过softmax后的网络输出,也就是点击xxx的概率。

虽然这种base model的特征处理方式可以把用户不定长的数据转为定长向量,但是这个向量是固定的,它仅仅取决于用户本身,完全不考虑匹配的广告和商品。这种固定的低维向量会成为用户兴趣描述的瓶颈,而扩充维度又会造成需要学习的参数过多以及过拟合的问题。为了优雅地解决这个低维向量描述用户兴趣的问题,DIN摒弃了对相同用户仅使用同一个向量并以此描述用户所有兴趣的做法,转为针对不同的广告计算用户对于这个广告相关的局部兴趣。

对于将要给用户曝光的广告,DIN会将它的向量与用户行为序列中每个商品的向量分别送入activation unit中,以求得每个商品对于这个特定的广告应该具有的权重,然后将权重与行为序列中的商品相乘,这样再通过池化层后,用户的行为序列部分的特征就是有加权的了。可以将整个过程理解为一个加权池化:
vU(A)=f(vA,e1,e2,...,eH)=∑j=1Ha(ej,vA)ej=∑j=1Hwjejv_U(A)=f(v_A,e_1,e_2,...,e_H)=\sum_{j=1}^Ha(e_j,v_A)e_j=\sum_{j=1}^Hw_je_jvU(A)=f(vA,e1,e2,...,eH)=j=1Ha(ej,vA)ej=j=1Hwjej
其中{e1,e2,...,eH}\{e_1,e_2,...,e_H\}{e1,e2,...,eH}是用户UUU的行为序列向量,vAv_AvA是广告AAA对应的向量值,a(⋅)a(\cdot)a()是一个前馈神经网络,用来计算行为序列中的商品eje_jej用于预测广告vAv_AvA的CTR时的贡献权重,也就是attention,接收的输入值是eje_jejvAv_AvA的外积。这种计算方式保证了为用户UUU曝光广告vAv_AvA时,广告的向量值vU(A)v_U(A)vU(A)是不同于为其他用户曝光时的向量值的。

与传统attention不同的是,DIN不是用softmax对权重进行归一化,而是保留运算出的结果值直接作为权重,以此反应用户的兴趣强度。另外,DIN的作者尝试过使用LSTM对用户的行为序列进行序列化的处理,但是没有什么效果。因为如果作为时序数据处理的话,数据中包含了许多各不相同的兴趣,而这些兴趣在序列中的快速切换显得数据本身的噪声很大。作者认为这部分的序列化建模会是之后的研究方向之一。

Mini-batch Aware Regularization

为了避免过拟合,在模型训练时往往会引入正则项作为模型的惩罚系数。但是直接将l1l_1l1l2l_2l2正则项应用在输入稀疏的模型上会导致大量的额外运算。以l2l_2l2为例,在每个mini-batch中,本来只有非零特征的参数才需要进行更新;引入l2l_2l2后,在每个mini-batch中,所有参数都被引入计算,这使得运算量变得难以承受。

在DIN的论文中,作者提出了一种更为高效的正则项,即mini-batch aware regularization。它仅计算每个mini-batch中出现过的特征的l2l_2l2正则。将全部向量词典中的参数记作W∈RD×KW\in\mathbb R^{D\times K}WRD×K,其中DDD为向量的维度,KKK为特征的维度。将l2l_2l2正则扩展到WWW的样本中去:
L2(W)=∥W∥22=∑j=1K∥wj∥22=∑x,y∈S∑j=1KI(xj≠0)nj∥wj∥22L_2(W)=\lVert W\rVert_2^2=\sum_{j=1}^K\lVert w_j\rVert_2^2=\sum_{x,y\in S}\sum_{j=1}^K\frac{I(x_j\neq0)}{n_j}\lVert w_j\rVert_2^2L2(W)=W22=j=1Kwj22=x,ySj=1KnjI(xj=0)wj22
其中wj∈RDw_j\in\mathbb R^DwjRD是第jjj个向量,I(xj≠0)I(x_j\neq0)I(xj=0)表示xxx是否具有特征jjjnjn_jnj为特征jjj在所有样本中出现的次数。上式可以变形为mini-batch aware的方式:
L2(W)=∑j=1K∑m=1B∑(x,y)∈BmI(xj≠0)nj∥wj∥22L_2(W)=\sum_{j=1}^K\sum_{m=1}^B\sum_{(x,y)\in\mathcal B_m}\frac{I(x_j\neq0)}{n_j}\lVert w_j\rVert_2^2L2(W)=j=1Km=1B(x,y)BmnjI(xj=0)wj22
其中BBB是mini-batch的数量,Bm\mathcal B_mBm表示第mmm个mini-batch。用amj=max(x,y)∈BmI(xj≠0)a_{mj}=max_{(x,y)\in\mathcal B_m}I(x_j\neq0)amj=max(x,y)BmI(xj=0)表示在第mmm个mini-batch,即Bm\mathcal B_mBm中,是否存在至少一个样本包含特征jjj。上式可以被近似为:
L2(W)≈∑j=1K∑m=1Bamjnj∥wj∥22L_2(W)\approx\sum_{j=1}^K\sum_{m=1}^B\frac{a_{mj}}{n_j}\lVert w_j\rVert_2^2L2(W)j=1Km=1Bnjamjwj22
上式可以视作mini-batch aware版本的l2l_2l2正则。特征jjj的向量权重梯度为:
wj←wj−η[1∣Bm∣∑(x,y)∈Bm∂L(p(x),y)∂wj+λamjnjwj]w_j\gets w_j - \eta \left[\frac{1}{\lvert\mathcal B_m\rvert}\sum_{(x,y)\in\mathcal B_m}\frac{\partial L(p(x),y)}{\partial w_j}+\lambda\frac{a_{mj}}{n_j}w_j\right]wjwjη

Bm1(x,y)BmwjL(p(x),y)+λnjamjwj


上式仅计算在第mmm个mini-batch中出现过的特征的参数。

Dice: Data Adaptive Activation Function

PReLLU常被用作激活函数:
f(s)={sifs>0αsifs≤0=p(s)⋅s+(1−p(s))⋅αsf(s)=\left\{ \begin{aligned} &s & if \ s>0 \\ &\alpha s & if \ s\le0 \end{aligned} \right.=p(s)\cdot s+(1-p(s))\cdot\alpha sf(s)={sαsifs>0ifs0=p(s)s+(1p(s))αs
其中sss是激活函数的输入值,α\alphaα是学习参数,p(s)p(s)p(s)则是用来调节f(s)f(s)f(s)针对不同的sss的取值所返回不同结果的调节函数。DIN的论文提出了一种更为适应多种数据分布的调节函数,并将使用了这种调节函数的激活函数命名为Dice:
f(s)=p(s)⋅s+(1−p(s))⋅αs,p(s)=11+e−s−E[s]Var[s]+ϵf(s)=p(s)\cdot s+(1-p(s))\cdot\alpha s, p(s)=\frac{1}{1+e^{-\frac{s-E[s]}{\sqrt{Var[s]+\epsilon}}}}f(s)=p(s)s+(1p(s))αs,p(s)=1+eVar[s]+ϵ

sE[s]1
其中E[s]E[s]E[s]Var[s]Var[s]Var[s]在训练阶段分别为sss在该mini-batch中的均值与方差,在测试阶段则改为数据的滑动平均和期望。ϵ\epsilonϵ是一个极小的常数,在论文中使用的是10−810^{-8}108。Dice可以看作是根据不同数据分布进行相应调节的PReLU,当均值与方差都为000时,Dice退化为PReLU。

DIN:使用Attention挖掘历史数据的深度兴趣网络相关推荐

  1. [论文阅读]阿里DIN深度兴趣网络之总体解读

    [论文阅读]阿里DIN深度兴趣网络之总体解读 文章目录 [论文阅读]阿里DIN深度兴趣网络之总体解读 0x00 摘要 0x01 论文概要 1.1 概括 1.2 文章信息 1.3 核心观点 1.4 名词 ...

  2. 深度学习 - 46.DIN 深度兴趣网络

    目录 一.引言 二.摘要 ABSTRACT 三.介绍 INTRODUCTION 1.CTR 在广告系统的作用 2.传统 MLP 存在的问题 3.DIN 的改进 四.近期工作 RELATEDWORK 1 ...

  3. 阿里DIN模型(深度兴趣网络)详解及理解

    这里写目录标题 目标: 模型产生原因: 核心思想: 模型介绍: Base model 改进模型 模型算法设计 论文的算法改进 参考资料 目标: 掌握2017年阿里提出的深度兴趣网络(Deep Inte ...

  4. 【序列建模】DIN深度兴趣网络

    [序列建模]DIN深度兴趣网络 通过用户的历史行为序列刻画用户兴趣的广泛性,是推荐系统比较大的一个难点,用户历史行为序列建模的研究经历了从Pooling.RNN到attention.capsule再到 ...

  5. 100分钟吃掉DIN深度兴趣网络

    阿里巴巴在CTR预估领域有3篇比较有名的文章. 2017年的深度兴趣网络, DIN(DeepInterestNetwork). 2018年的深度兴趣演化网络, DIEN(DeepInterestEvo ...

  6. 推荐系统(十二)阿里深度兴趣网络(二):DIEN模型(Deep Interest Evolution Network)

    推荐系统(十二)阿里深度兴趣网络(二):DIEN模型(Deep Interest Evolution Network) 推荐系统系列博客: 推荐系统(一)推荐系统整体概览 推荐系统(二)GBDT+LR ...

  7. din算法 代码_深度兴趣网络(DIN,Deep Interest Network)

    1. DIN介绍 Deep Interest Network是基于BaseModel演化而来 1.1 流程: 整个流程可以描述为:1.检查用户历史行为数据 2.使用matching module产生候 ...

  8. 【王喆-推荐系统】模型篇-(task8)深度兴趣网络 DIN

    学习总结 DIN基于注意力机制,利用激活单元计算出用户对于不同历史商品的注意力权重,针对当前广告商品,作出更有针对性的预测.该激活单元将历史行为商品的 Embedding和候选广告商品的 Embedd ...

  9. 阿里巴巴线上使用的深度学习兴趣网络 DIN (三) - 论文翻译

    总述:阿里巴巴拥有世界上数一数二的电子商务系统,每天的成交额高达数十亿,那么这样一个大规模的商务网站肯定要做好一件事情,那就是用户搜索的时候给用户最好的搜索结果,用户不搜索的时候结合用户的兴趣给用户最 ...

最新文章

  1. 【AutoML】损失函数也可以进行自动搜索学习吗?
  2. mobile cpu上禁用alpha test的相关总结
  3. pip/pip3更换国内源
  4. 主线程等待一个 无阻塞函数 死循环子线程的安全退出
  5. 车轮轴承行业调研报告 - 市场现状分析与发展前景预测(2021-2027年)
  6. iOS :Object-C 语言merge两个字典对象
  7. 【Tensorflow2.0】关于制作标签遇到的问题小结
  8. mybatis 实现查询商品列表的分页
  9. 高斯函数及高斯滤波器
  10. 我的故事登上了Android开发者的官网
  11. 文档服务器 件排名,服务器十大品牌排名
  12. 这可能是史上最全的常用学术网站
  13. NOIP2017普及组★跳房子
  14. JS基础-事件模型(事件事件流自定义事件事件冒泡/代理)
  15. js实现夜空 干货比较多
  16. python 实现问卷星自动填写多份
  17. sap 修改主机名过程
  18. “SEO是什么意思?”Kyw的通俗回答
  19. 【OpenGL】画线算法
  20. 互联网思维方式(一)

热门文章

  1. 中国关工委健体中心深入实施校园安全食品守护行动
  2. 奔驰GLA改色贴膜珍珠白效果图东莞奔驰改装
  3. Simpack求解器说明
  4. 到底什么是云计算 学了云计算能从事哪些职业
  5. sqlite_orm学习笔记
  6. 获取Zabbix服务器的密码
  7. 个人任务管理工具(TODO工具)
  8. 【单片机】第二章单片机基本原理练习题
  9. cmake中链接系统标准库
  10. 清除计算机病毒更换内存芯片,电脑内存条中病毒了怎么处理?