写点什么

阿里 Deep Interest Evolution Network 解读

2019 年 12 月 02 日

阿里Deep Interest Evolution Network解读

Abstract

对 CTR 预测模型来讲,通过用户行为数据来发掘潜在的用户兴趣特征是很有必要的。并且由于受外部环境和内部认知的影响,用户的兴趣是随着时间而不断进化和变化的。而当前大都数 CTR 模型都直接将用户的行为特征表示为用户的兴趣,缺乏对用户兴趣的建模过程和兴趣的演变过程。本文介绍了 Deep Interest Evolution Network (DIEN)模型,包含 interest extractor layer(兴趣抽取层),目的是从历史行为序列中获取 temporal 的兴趣;interest evolving layer(兴趣演化层),目的是获取与目标 item 相关的兴趣演化过程。DIEN 模型在淘宝的广告 CTR 预估上获得了 20.7%的提升。


Introduction

在推荐场景,捕捉到用户的兴趣并考虑兴趣的动态变化将是提升模型效果的关键。以 Wide&Deep 为代表的深度模型更多的是考虑不同 field 特征之间的相互作用,未关注用户的兴趣。Deep Interest Network (DIN)考虑了用户兴趣,提出用户兴趣是多样的,并使用注意力机制来捕捉和 target item 的相对兴趣,将这种自适应的兴趣表示用于模型预估。但是大多该类模型将用户的行为直接看做兴趣,而用户的潜在兴趣往往很难通过行为来完全表示。因此本文提出了 Deep Interest Evolution Network(DIEN)模型,可挖掘行为背后用户的真实兴趣,并考虑用户兴趣的动态变化。


Model


  • input 层:user 行为序列、Target Ad、Context 和 User Profile

  • interest extractor layer:使用 GRU 对用户行为之间的依赖进行建模,输入是用户按时间排序的行为序列,也就是行为对应的商品。

  • 但是只使用 GRU 只能学习到用户行为之间的依赖,并不能反映用户的兴趣。所以在提取 GRU 隐藏 ht 状态时提出了一个辅助 loss,使用下一个时间刻的行为 bt+1 来指导 ht 的学习,其中正样本就是真实的下一个 item,负样本就是从 item set 中随机抽取的一个 item。


假设有 N 对行为 embedding 序列[公式],其中[公式]表示点击行为的序列,[公式]表示负样本序列。辅助 loss 的表达式为:



最终损失函数为[公式],其中[公式]是平衡最终预测和兴趣表示的超参数。


辅助 loss 的好处:1、可帮助 GRU 的隐状态 ht 更好地表示用户兴趣。2、RNN 在长序列建模场景下梯度传播可能并不能很好的影响到序列开始部分,如果在序列的每个部分都引入一个辅助的监督信号,可一定程度降低优化难度。3、辅助 loss 可给 embedding 层的学习带来更多语义信息,学习到 item 对应的更好的 embedding。


  • interest evolving layer:对与 target item 相关的兴趣演化轨迹进行建模。这部分结合注意力机制中的局部激活能力和 GRU 的序列学习能力来实现建模用户的兴趣演化。该层 GRU 的输入就是 interest extractor layer 中 GRU 的输出,[公式],输出是[公式],最后一个状态[公式]是最终的输出,和其他各类特征 concat 一起送给全连接。

  • 其中,attention 的计算方式如下:


其中[公式]表示一个候选 ad 中不同 field 特征的 embedding 向量的 concat。而 attention 和 GRU 结合的方式有三种:


GRU with attentional input (AIGRU):这种方式将 attention 直接作用于输入,无需修改 GRU 的结构:



Attention based GRU(AGRU):这种方式需要修改 GRU 的结构,将 attention 系数来替换 GRU 的 update gate,此时 hidden state 的输出变为:



GRU with attentional update gate (AUGRU):这种方式需要修改 GRU 的结构,此时 hidden state 的输出变为:



Experiments



参考文献:


https://arxiv.org/pdf/1809.03672.pdf


https://zhuanlan.zhihu.com/p/50758485


https://www.jianshu.com/p/6742d10b8


本文转载自 Alex-zhai 知乎账号。


原文链接:https://zhuanlan.zhihu.com/p/71224014


2019 年 12 月 02 日 16:22351

评论

发布
暂无评论
发现更多内容

ARTS 打卡 WEEK3

编程之心

ARTS 打卡计划

SpringBoot基本特性以及自动化配置-SPI机制

攀鱼飞岩

Java 微服务 Spring Boot SpringCloud

LeetCode 769. Max Chunks To Make Sorted

liu_liu

LeetCode

HBase 常用 Shell 命令手册

Rayjun

Java HBase

食堂就餐卡系统设计

飞雪

第一周UML作业

吴建中

程序员的晚餐 | 6 月 7 日 豆腐年糕

清远

美食

面试了 6 轮 Google中国 之后,还是挂了

石头

面试 谷歌Google Java 面试 经验分享 面经

软件建模与设计文档

大雄

UML

史上最诡异问题,iOS 单例初始化两次,你遇到过吗?

liu_liu

ios 初始化 单例 两次

架构师训练营第一周作业

小树林

SpringBatch系列之并发并行能力

稻草鸟人

Spring Boot SpringBatch 批量

食堂就餐卡管理系统

孙志平

ARTS(2020-06-01/2020-06-07)

天行者

ARTS 打卡计划

图解Java垃圾回收算法及详细过程!

攀鱼飞岩

Java JVM 虚拟机 垃圾回收机制

程序员陪娃系列——数学启蒙趣事

孙苏勇

程序员人生 陪伴

架构师训练营第一周学习总结

刘志刚

愚蠢写作术(3):如何把读者带入迷宫深处

史方远

学习 读书笔记 个人成长 写作

SpringBoot整合Quartz实现任务定时

北漂码农有话说

SpringBoot 2

食堂就餐卡系统设计

大雄

架构师如何做架构总结

Karl

ARTS-WEEK2

一周思进

ARTS 打卡计划

架构方法学习总结

飞雪

食堂就餐卡系统架构设计

Karl

极客时间 - 架构师训练营 - week1 - 作业2

jjn0703

极客大学架构师训练营

ARTS打卡Week 03

teoking

ios LeetCode

架构师训练营第一周作业

芒夏

极客大学架构师训练营

dnsmasq-域名访问及解析缓存

一周思进

食堂就餐卡系统设计

刘志刚

ARTS打卡 week 2

猫吃小怪兽

ARTS 打卡计划

使用 Docker Desktop 中的 Kubernetes

FeiLong

Docker Kubernetes

Hummer 轻量级跨端技术框架详解及实战

Hummer 轻量级跨端技术框架详解及实战

阿里Deep Interest Evolution Network解读-InfoQ