阿里DIN模型(深度兴趣网络)详解及理解
这里写目录标题
- 目标:
- 模型产生原因:
- 核心思想:
- 模型介绍:
- Base model
- 改进模型
- 模型算法设计
- 论文的算法改进
- 参考资料
目标:
掌握2017年阿里提出的深度兴趣网络(Deep Interest Network for Click-Through Rate Prediction)以及后续的DIEN。
本篇介绍DIN
原文:
Deep Interest Network for Click-Through Rate Prediction
21 Jun 2017
Deep Interest Evolution Network for Click-Through Rate Prediction
11 Sep 2018
模型产生原因:
为什么会产生DIN,个人觉得和阿里的广告业务息息相关。
前面几篇文章,主要介绍的推荐算法,主要用于提高点击率,或者说增加用户黏度,就是对所有物品一视同仁,然后推荐给用户最关心的N个商品。
但是有些平台,比如淘宝、京东、百度等,这些平台靠广告费用支持公司收入,对于某个物品,支付的广告费用越多,理应让他以更高的权重暴露给用户,这里就不仅是推荐用户最关心的物品,而是判断付了广告费的商品,是否需要推荐给指定用户?
因此,我们的先决条件变成了:
1、 待推荐的物品(candidate Ad 付了广告费的物品)
2、 用户信息
3、 用户的购买历史物品序列
4、 场景信息(当前用户所处的页面、状态、时间等信息)
核心思想:
DIN核心思想可以归纳为:
1、 基于物品的推荐,也就是判断购物购买过的物品,进而判断是否和本广告物品相关
2、 用户购买过的物品,权重不一样。比如,推荐物品为奶粉,用户购买过笔记本电脑,购买过尿不湿,显然,尿不湿的奶粉的相关性高。因此需要提高尿不湿的权重。
**顺着DIN模型的思想,我们也可以进一步提出我们的优化方案:
1、加e−te^{-t}e−t的时间衰减系数
- 购买过的物品是时间序列,因此可以在加上和上次购买时间间隔的衰减因子。比如1年前购买过笔记本电脑,1个月前购买过尿不湿,现在要推荐鼠标,你觉得1年前购买过笔记本电脑的权重还很高吗?显然不是,可以加个e−te^{-t}e−t的时间衰减系数,ttt为上次购买时间和今天的时间间隔,时间间隔越大,权重越小。
模型介绍:
CTR预估是在线广告以及电商的非常重要的业务,除了传统的方法之外,目前以embedding+MLP为主的深度学习方法也广为应用。
在这些方法中,用户特征用固定长度的向量来表示,而已有的方法往往忽视获取用户历史行为中的兴趣多样性,即:
在电商网站的广告展示中,用户可能会同时对不同的广告有兴趣。
一种暴力的对用户兴趣多样性建模的方法是让特征向量足够的大,把所有购买过的物品embeding拼接成一个长向量。当然这会带来计算和存储上的困难,并且在线系统也不会允许这种方法。
除此之外,当为某个广告进行预测时,并不是历史行为中的所有用于兴趣都是有用的,用户买书的时候是不会考虑已经买过的衣服的。很自然的,attention可以很好的解决以上问题,论文作者提出的Deep Interest Network从历史行为中学习user interest,其核心思想就是attention。除了DIN网络之外,作者还提出了mini-batch的正则化以及PReLU的更泛化的方法:Dice。下面首先介绍Base model。
Base model
刚才说了,把所有购买过的物品embeding拼接成一个长向量不可取,那结合现有的pooling技术,比如CNN卷积神经网络中的pooling(maxpooling,avgpooling),我们也能想到pooling,就是sum pooling,就是把候选物品embeding一股脑全部加起来,得到一个向量,该向量表示了用户的兴趣方向。
于是得到了如下图的模型:
存在问题:以阿里巴巴的广告推荐系统为例,假设某个用户之前的历史记录中浏览了背包,杯子等商品。假设上图中的candidate ad是一个关于手提包的广告,如果照这种方式构建模型的话,背包,杯子所在特征对应的embedding特征就会被pooling成一个固定长度的特征,带来的效果就是我们认为背包,杯子这两类商品的特征对于手提包这个商品是否被推荐是同等重要的。但是很显然买过背包这个特征对于手提包这个商品是否被推荐具有更重要的价值,所以这就启发作者为给定的candidate ad和不同的(浏览历史中的)商品特征之间设置不同的权重,即论文的核心组件local activation unit,这个其实就是attention的思想。
改进模型
- 既然要设置不同的权重,自然想到物品和待推荐物品的相关性,相关性计算自然就想到了两个物品embeding向量的内积,这在经典协同过滤算法中太常用了。不只是内积,向量外积、向量减法等,都可以衡量两个向量间的夹角。比如两个物品向量相减之后,得到的结果很小,也能说明两个物品相似。
- 原作者用得是外积,得到一个向量,然后和原来的物品向量、广告向量。三个向量拼接在一起,送进MLP,最终得到一个预测权重。结构如下:
因此,每个历史购买物品都经过这样的激活单元处理,就能得到历史物品的权重。
所以,最终就诞生了DIN模型。
正如前文说所,既然DIN可以得到一个物品相关性权重,也可以人为加入一个时间相关性权重,就是在最后,再乘以一层时间间隔的衰减系数。
所以理解模型产生原因和优化本质很关键。
进一步的,除了加入时间衰减系数,还能有其他优化点吗?
这就可以进一步挖掘时间序列的处理方法。时间差分,也就是相同时间段,用户的行为变化趋势,window操作。比如这个月比上个月,用户的购买行为增多,表示用户的活跃度提升,因此这个用户的权重又可以增大,说明用户喜欢在平台购物。
反之,用户购买行为在减小,说明用户因为某些原因,兴趣在流失,推荐给他的物品,转化率可能也不会太高。
模型算法设计
- 输入xxx : 模型的输入是个KKK 维高维稀疏二值型向量,通常是多个group的特征进行拼接而成(group可以理解为一个方面的特征)。假设有 MMM 个group,每个group的特征tit_iti 向量的维度为 KiK_iKi , 特征向量tit_iti每个元素取值为0或1,取值为1的个数大于1(废话,全0怎么训练?)。
输入类别示意图:
这样就搞清楚了模型的结构。
Loss损失函数,还是采用常规的二分类交叉熵损失函数。
DIN的模型结构图,与base model的主要区别就在于在用户行为特征上引入了局部激活单元(Activation Unit):
e1e_1e1, e2e_2e2, …, eHe_HeH是用户UUU的行为物品对应的embedding向量列表,HHH是行为物品个数。 vAv_AvA 是广告A的embedding。a(∗)a(*)a(∗)是一个前向神经网络,它的输出作为激活权重a(ej,vA)a(e_j,v_A)a(ej,vA),最后作用在eje_jej上。除了两个输入嵌入向量外,a(∗)a(*)a(∗)还增加了两个映射后的向量的外积输入到子网络中,就是激活单元的结构。
模型也可以这样表示:
论文的算法改进
- 论文的算法改进主要朝着
- 降低模型复杂度
- 降低计算或者存储
- 通过变形、改写公式,找到相近似的表达式。进而找到模型的简化版本。
这个其实做工程已经不是特别关心了。
这里贴出别人解释的照片即可。
- 通过变形、改写公式,找到相近似的表达式。进而找到模型的简化版本。
参考资料
https://blog.csdn.net/cqlboat/article/details/103940661
https://zhuanlan.zhihu.com/p/420211688
https://zhuanlan.zhihu.com/p/49263704
阿里DIN模型(深度兴趣网络)详解及理解相关推荐
- 深度学习 --- 深度残差网络详解ResNet
本来打算本节开始循环神经网络RNN,LSTM等,但是觉得还是应该把商用比较火的网络介绍一下,同时详细介绍一下深度残差网络,因为他是基于卷积的.而后面的循环神经网络更多偏向于序列问题,偏向语音识别,自然 ...
- DBN深度信念网络详解
1. 自联想神经网络与深度网络 自联想神经网络是很古老的神经网络模型,简单的说,它就是三层BP网络,只不过它的输出等于输入.很多时候我们并不要求输出精确的等于输入,而是允许一定的误差存在.所以,我们 ...
- 阿里妈妈牟娜:定向广告新一代点击率预估主模型——深度兴趣演化网络
分享嘉宾:牟娜 阿里巴巴 高级算法工程师 编辑整理:孙锴 内容来源:DataFun AI Talk<定向广告新一代点击率预估主模型--深度兴趣演化网络> 出品社区:DataFun 导读: ...
- [论文阅读]阿里DIN深度兴趣网络之总体解读
[论文阅读]阿里DIN深度兴趣网络之总体解读 文章目录 [论文阅读]阿里DIN深度兴趣网络之总体解读 0x00 摘要 0x01 论文概要 1.1 概括 1.2 文章信息 1.3 核心观点 1.4 名词 ...
- 推荐系统(十二)阿里深度兴趣网络(二):DIEN模型(Deep Interest Evolution Network)
推荐系统(十二)阿里深度兴趣网络(二):DIEN模型(Deep Interest Evolution Network) 推荐系统系列博客: 推荐系统(一)推荐系统整体概览 推荐系统(二)GBDT+LR ...
- 深度学习之图像分类(二十六)-- ConvMixer 网络详解
深度学习之图像分类(二十六)ConvMixer 网络详解 目录 深度学习之图像分类(二十六)ConvMixer 网络详解 1. 前言 2. A Simple Model: ConvMixer 2.1 ...
- 深度学习 - 46.DIN 深度兴趣网络
目录 一.引言 二.摘要 ABSTRACT 三.介绍 INTRODUCTION 1.CTR 在广告系统的作用 2.传统 MLP 存在的问题 3.DIN 的改进 四.近期工作 RELATEDWORK 1 ...
- 100分钟吃掉DIN深度兴趣网络
阿里巴巴在CTR预估领域有3篇比较有名的文章. 2017年的深度兴趣网络, DIN(DeepInterestNetwork). 2018年的深度兴趣演化网络, DIEN(DeepInterestEvo ...
- 【序列建模】DIN深度兴趣网络
[序列建模]DIN深度兴趣网络 通过用户的历史行为序列刻画用户兴趣的广泛性,是推荐系统比较大的一个难点,用户历史行为序列建模的研究经历了从Pooling.RNN到attention.capsule再到 ...
最新文章
- html资源文件记载进度条,用进度条显示文件读取进度《 HTML5:文件 API 》
- AngularJS 使用ngOption实现下拉列表
- vue项目开发实战案例_Vue、Spring Boot开发小而完整的Web前后端分离项目实战02
- Tomcat服务器性能优化
- 解决:Whitelabel Error Page This application has no explicit mapping for /error...UnknownHostException
- x264编码参数大测试:08 subme与指定码率(1000Kbps)
- java 中的 Math.round(-1.5) 等于多少?
- hana 查看表字段_hana 查看表数据库
- 小米再添猛将!雷军官宣常程担任小米集团副总裁
- 转:GCC,LLVM,Clang编译器对比
- java小白必看:如何用java创建一个窗口
- 小米随身wifi的linux驱动,小米随身wifi驱动
- 中兴b860刷机运行Linux,全国各地中兴B860A刷机越狱全贴(2016年2月26日更新)
- HTML+CSS项目实践五:使用纯CSS实现点击文字切换图片效果(不使用JS)
- Android物联网(一)—— 蓝牙通讯
- 即时通讯 视频会议开源技术选择
- 安装java环境----血泪版
- SpringMVC MultipartFile 异步批量上传文件
- 著名的菲尔人格测试,看看你适合做什么类型的工作
- 服务器同步电脑文件夹在哪,把文件同步到服务器上
热门文章
- 使用Banner实现轮播展示
- C语言算小数加减,C语言带小数加减乘除.doc
- 网格布局每个网格都能放置一个组件_Android综合试题
- spark任务shell运行_《Spark快速大数据分析》- 根据简单例子理解RDD
- 2018年python薪资_2018年国内就业薪资高的7大编程语言排行
- python爬取股票大单历史记录_利用bs4爬取股票的历史交易数据
- python中turtle画树_python中turtle可以画树吗?怎么画?
- Android开发之Git提交Template模板配置
- mysql存储过程的返回值在哪里设置_MySQL存储过程的返回值
- php 显示代码行数据,几行php代码把数据格式化成树形结构