看看阿里如何在淘宝做推荐,实现“一人千物千面”的用户多样化兴趣推荐,首先总结下DIN、DIEN、DSIN:

  1. 传统深度学习在推荐就是稀疏到embedding编码,变成稠密向量,喂给NN
  2. DIN引入attention机制,捕获候选商品和用户浏览过的商品之间的关系(兴趣)
  3. DIEN在DIN基础上引入序列概念,将用户历史行为序列纳入到网络内
  4. DSIN将行为序列划分为session,更符合RNN概念

大多推荐场景下数据下都包含如下信息,用户内在属性信息、用户行为信息、商品信息、上下文信息,一个明显不同的不同用户的行为信息差异很大。

深度学习在推荐系统一般做法:

稀疏向量 -- embedding -- fixed-length稠密向量 --- MLP

这样做有什么问题?

  1. 一个明显的问题是不同用户的行为序列长度是不同的,fixed-length信息表达不全面

  2. 用户最终的行为只和历史行为中的部分有关,因此对历史序列中商品相关度应有区分

  • DIN

根据上述问题,有两个解决思路:

  1. 对不同用户尝试不同维度的向量,导致训练困难
  2. 如何在有限的维度表示用户的差异化兴趣?

DIN从第二个问题出发,引入局部激活单元,对特定的ad自适应学习用户兴趣表示向量。即同一用户在获选ad不同时,embedding向量不同。

key idea

使用attention机制捕获ad和用户行为序列商品之间的关系

看结果

  1. 和ad相似度搞得物品拥有更高的权重
  2. 不相关物品的相似度低

下面是两个小tricks,对结果提升有帮助:

  1. Mini-batch Aware Regularization

  2. Dice Activation Function

tricks的细节可以参考原论文。


  • DIEN
    DIEN使用了GRU来建模用户行为序列,在DIN基础上考虑序列信息
  1. 使用GRU建模序列信息,即用GRU最后时刻的隐状态表示序列
  2. 修改GRU为AUGRU

看下AUGRU部分:
\[
a_{t}=\frac{\exp \left(\mathbf{h}_{t} W \mathbf{e}_{a}\right)}{\sum_{j=1}^{T} \exp \left(\mathbf{h}_{j} W \mathbf{e}_{a}\right)}
\]

\[
\begin{aligned}&\tilde{\mathbf{u}}_{t}^{\prime}=a_{t} * \mathbf{u}_{t}^{\prime}\\&\mathbf{h}_{t}^{\prime}=\left(1-\tilde{\mathbf{u}}_{t}^{\prime}\right) \circ \mathbf{h}_{t-1}^{\prime}+\tilde{\mathbf{u}}_{t}^{\prime} \circ \tilde{\mathbf{h}}_{t}^{\prime}\end{aligned}
\]

根据attention score控制更新门。

看模型,直观的思考貌似很合理,但是有两个问题:

  1. 序列信息包含多长?即短期兴趣还是长期兴趣的问题
  2. 序列连续否?不同时期的兴趣不一样,序列间隔过大相关性可能很低
  3. 用户是否一定服从严格的序列?先点那个和后点那个的区别大吗

1.DIEN使用过去14天信息行为序列,从RNN角度来说可能短期内行为信息更重要,但长期信息是否引入了噪音?

2.过去14天内用户需求会变。比如第一天买了衣服、可能十天后买的是书

3.用户点击顺序不一定重要,自己想一想好像是

关于使用RNN是否合适,RNN只关心t-1(上一步)和t(当前步),而没有涉及t-1和t之间的时间间隔。没涉及不代表不重要,反而是因为其使用前提就是假定各步骤之间是等间距的,见维基百科。

A time series is a series of data points indexed (or listed or graphed) in time order. Most commonly, a time series is a sequence taken at successive equally spaced points in time"

以上部分内容摘自[3].


  • DSIN

DSIN进一步做出优化,在每个会话中的行为是相近的,而在不同会话之间差别是很大的,如下图的例子:

模型架构

  1. 会话分割层

将用户的点击行为按照时间排序,判断每两个行为之间的时间间隔,前后的时间间隔大于30min,就进行切分。

  1. 兴趣提取层

用Tansformer编码用户行为序列,简单来说就是输入一个序列,输出一个对应的embedding序列。

引入了偏置编码(Bias encoding),实质上是对序列中位置信息的编码

原始做法:
\[
\begin{aligned}&P E_{(\text {pos}, 2 i)}=\sin \left(\text {pos} / 10000^{2 i / d_{\text {model}}}\right)\\&P E_{(p o s, 2 i+1)}=\cos \left(p o s / 10000^{2 i / d_{m o d e l}}\right)\end{aligned}
\]
bias encoding:
\[
\mathbf{B E}_{(k, t, c)}=\mathbf{w}_{k}^{K}+\mathbf{w}_{t}^{T}+\mathbf{w}_{c}^{C}
\]
第一项表示处于第几个session,第二项表示session的第几个行为,第三项表示整体位置的embedding。关于这三项其实不是很明确,知道的同学麻烦帮忙解答下,贴上原图

  1. 兴趣交互层

捕获序列的顺序关系,文中使用Bi-LSTM

  1. 兴趣激活层

和DIN中一样,使用attention捕捉商品相关性

模型思想大概就这么多,细节部分可以参考原论文。

具体应用

  1. 充分了解领域数据特点,根据场景定制适合具体问题的网络结构

  2. 需要有丰富的特征

references:

[1]Deep Interest Network for Click-Through Rate Prediction,https://arxiv.org/pdf/1706.06978.pdf ,KDD2018

[2]Deep Interest Evolution Network for Click-Through Rate Prediction, https://arxiv.org/pdf/1809.03672.pdf. AAAI 2019

[3]也评Deep Interest Evolution Network . https://zhuanlan.zhihu.com/p/54838663.

[4]Deep Session Interest Network for Click-Through Rate Prediction. https://arxiv.org/pdf/1905.06482.pdf . IJCAI 2019

深度兴趣网络DIN-SIEN-DSIN的更多相关文章

  1. 推荐系统---深度兴趣网络DIN&DIEN

    深度学习在推荐系统.CTR预估领域已经有了广泛应用,如wide&deep.deepFM模型等,今天介绍一下由阿里算法团队提出的深度兴趣网络DIN和DIEN两种模型 paper DIN:http ...

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

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

  3. [阿里DIN] 深度兴趣网络源码分析 之 如何建模用户序列

    [阿里DIN] 深度兴趣网络源码分析 之 如何建模用户序列 目录 [阿里DIN] 深度兴趣网络源码分析 之 如何建模用户序列 0x00 摘要 0x01 DIN 需要什么数据 0x02 如何产生数据 2 ...

  4. [阿里DIN] 深度兴趣网络源码分析 之 整体代码结构

    [阿里DIN] 深度兴趣网络源码分析 之 整体代码结构 目录 [阿里DIN] 深度兴趣网络源码分析 之 整体代码结构 0x00 摘要 0x01 文件简介 0x02 总体架构 0x03 总体代码 0x0 ...

  5. 推荐系统中的注意力机制——阿里深度兴趣网络(DIN)

    参考: https://zhuanlan.zhihu.com/p/51623339 https://arxiv.org/abs/1706.06978 注意力机制顾名思义,就是模型在预测的时候,对用户不 ...

  6. 阿里深度兴趣网络模型paper学习

    论文地址:Deep Interest Network for Click-Through Rate ... 这篇论文来自阿里妈妈的精准定向检索及基础算法团队.文章提出的Deep Interest Ne ...

  7. [论文阅读]阿里DIEN深度兴趣进化网络之总体解读

    [论文阅读]阿里DIEN深度兴趣进化网络之总体解读 目录 [论文阅读]阿里DIEN深度兴趣进化网络之总体解读 0x00 摘要 0x01论文概要 1.1 文章信息 1.2 基本观点 1.2.1 DIN的 ...

  8. [阿里DIEN] 深度兴趣进化网络源码分析 之 Keras版本

    [阿里DIEN] 深度兴趣进化网络源码分析 之 Keras版本 目录 [阿里DIEN] 深度兴趣进化网络源码分析 之 Keras版本 0x00 摘要 0x01 背景 1.1 代码进化 1.2 Deep ...

  9. Spark MLlib Deep Learning Deep Belief Network (深度学习-深度信念网络)2.3

    Spark MLlib Deep Learning Deep Belief Network (深度学习-深度信念网络)2.3 http://blog.csdn.net/sunbow0 第二章Deep ...

随机推荐

  1. Header和Cookie相关内容

    相信很多同学都对HTTP的header和cookie,和session都有疑问,因为我们开发的时候一般都需要请求网络获取数据,有时候还需要带cookie或者带特殊的字段发起请求. 现在我们就来简单的了 ...

  2. [***]HZOJ 优美序列

    又是一道神仙题.考试的时候居然打了一个回滚莫队,不知道我咋想的…… 先说一个某OJT80,洛谷T5分的思路(差距有点大): 可以把位置和编号映射一下,区间内最大值和最小值对应的位置,每次更新,直到找到 ...

  3. Tyvj-1338 QQ农场

    P1338 QQ农场 时间: 1000ms / 空间: 131072KiB / Java类名: Main 背景 Sandytea前段时间沉迷于QQ农场中……一天夜里,他梦见来到好友X的农场上…… 描述 ...

  4. TortoiseSVN各种状态

    黄色感叹号(有冲突): --这是有冲突了,冲突就是说你对某个文件进行了修改,别人也对这个文件进行了修改,别人抢在你提交之前先提交了,这时你再提交就会被提示发生冲突,而不允许你提交,防止你的提交覆盖了别 ...

  5. JavaScript 字符串转为数字

    js中字符串转为数字主要4种,分别为转换函数,强制转换,js变量弱类型转换,正则表达式. 1.转换函数 JS中提供了两个转换函数parseInt()和parseFloat(),parseInt()将值 ...

  6. NLP --- 条件随机场CRF详解 重点 特征函数 转移矩阵

    上一节我们介绍了CRF的背景,本节开始进入CRF的正式的定义,简单来说条件随机场就是定义在隐马尔科夫过程的无向图模型,外加可观测符号X,这个X是整个可观测向量.而我们前面学习的HMM算法,默认可观测符 ...

  7. pytorch之expand,gather,squeeze,sum,contiguous,softmax,max,argmax

    目录 gather squeeze expand sum contiguous softmax max argmax gather torch.gather(input,dim,index,out=N ...

  8. iptables典型NAT上网

    一般做为NAT的计算机同时也是局域网的网关,假定该机有两块网卡eth0.eth1,eth0连接外网,IP为202.96.134.134:eth1连接局域网,IP为192.168.62.10 1. 先在 ...

  9. mybatis 基础理解resultType和resultMap

    resultType和resultMap: 1.resultType: 一.返回一般数据类型比如要根据 id 属性获得数据库中的某个字段值. mapper (dao)接口: // 根据 id 获得数据 ...

  10. Roslyn 静态分析

    本文告诉大家如何使用 Roslyn 分析代码 首先创建一个项目,项目使用.net Framework 4.6.2 ,控制台项目.然后需要安装一些需要的库 Nuget 安装 打开 Nuget 安装下面两 ...