本文将介绍Alibaba发表在KDD’19 的论文《Practice on Long Sequential User Behavior Modeling for Click-Through Rate Prediction》。文章针对长序列用户行为建模的问题从线上系统和算法两方面进行改进,已经成功部署在阿里巴巴的广告系统。

使用深度学习对用户兴趣建模在离线评估阶段带来了显著提升,但是在线部署时面对大量的流量请求难以实时推理,尤其是在对长序列用户行为数据,系统的延时和存储代价几乎是随着行为长度线性增长。为了解决长序列建模的挑战,作者从两个方面进行考虑:

1.从线上角度考虑,引入UIC(user interest center),从整个模型中分离出最消耗资源的。UIC依赖于用户的行为触发

2.从算法角度考虑,引入记忆架构,MIMN(Multi-channel user Interest Memory Network),捕捉长序列行为

Theoretically, the co-design solution of UIC and MIMN enables us to handle the user interest modeling with unlimited length of sequential behavior data.

无限长?带着怀疑又好奇态度拜读下这篇大作。

  • UIC

首先为什么需要建模用户的长序列行为?下图是使用基础模型(DIN)在不同长度行为序列上实验的结果,可以看出当长度到达1000时AUC相比长度100时增加了0.6%。

图(A)是一个典型的CTR实时预估系统架构,主要由特征管理组件、模型管理组件和预测服务器组成。为了保证系统低延时和高吞吐量,用户的行为特征通常被存储在额外的存储系统,阿里使用的是自研TAIR。当新的流量请求到达时,特征更新到预测服务器参与实时推理计算,阿里使用DIEN实验发现,当行为序列长度达到150时,系统延时和吞吐量已经到达边缘了,更不用说1000的长度。

对用户长期行为建模有两个主要的限制:

1)存储限制

阿里拥有6亿用户,如果每个用户最大行为长度为150,至少需要1T的存储空间;长度到1000时,需要6T存储空间。更大的内存消耗,将会导致计算复杂度增加

2)延时限制

CTR预估模块根据输入的候选商品集合,输出对应的概率,这个过程通常需要在10ms内完成。DIEN在行为长度达到1000时,在500QPS延时达到了200ms,难以满足在线广告系统500QPS30ms的限制。

为了解决上述提到的长序列行为建模的问题,作者设计了UIC(user interest center)模块。图(B)是UIC模块的示意,(A)(B)的区别在于用户兴趣表示计算,在(B)中,UIC会为每个用户维持一个最新的兴趣表示,UIC的更新仅取决于用户的行为,不再是流量触发,可以做到无延时。实际应用证明,UIC+DIEN将1000长度的200ms减少到19ms在500QPS下。

  • MIMN

从算法模型来看,建模长序列相当困难,RNN无法胜任,attention机制虽然可以更加有效的处理长序列,但是需要存储所有原始的用户行为序列,存储和计算代价太大。MIMN借鉴神经图灵机的思想,对长序列进行建模。下图是MIMN的架构

UIC存储MIMN的外部记忆,当用户产生新行为时进行更新。通过这种方式,UIC可以递增的从行为序列中捕获用户的兴趣,但是当存储资源有限时,固定维度的向量表达能力有限。作者提出了记忆利用正则化增加UIC单元的表示能力,同时提出了记忆归纳单元捕获高阶信息。

神经图灵机

神经图灵机使用一个记忆网络存储信息,通过读写控制器进行记忆读写。

记忆利用正则化

标准NTM存在记忆利用不平衡问题,导致记忆利用不充分。作者根据不同的记忆块,正则化写权重。

记忆归纳单元

记忆归纳单元将每个记忆块作为一个用户兴趣通道。在时间步t选择一个k个通道,对选中的通道更新
\[
S_t(i)=GRU(S_{t+1}(i),M_t(i),e_t)
\]
可以实现下面的结果

enen……,回家了有点懒,剩下的部分下次更新……

references:
[1] Alibaba. Practice on Long Sequential User Behavior Modeling for Click-Through Rate Prediction. KDD'19

阿里CTR预估:用户行为长序列建模的更多相关文章

  1. 0-3为变长序列建模modeling variable length sequences

    在本节中,我们会讨论序列的长度是变化的,也是一个变量 we would like the length of sequence,n,to alse be a random variable 一个简单的 ...

  2. 主流CTR预估模型的演化及对比

    https://zhuanlan.zhihu.com/p/35465875 学习和预测用户的反馈对于个性化推荐.信息检索和在线广告等领域都有着极其重要的作用.在这些领域,用户的反馈行为包括点击.收藏. ...

  3. 【项目】百度搜索广告CTR预估

    -------倒叙查看本文. 6,用auc对测试的结果进行评估: auc代码如下: #!/usr/bin/env python import sys def auc(labels,predicted_ ...

  4. 【项目】搜索广告CTR预估(二)

    项目介绍 给定查询和用户信息后预测广告点击率 搜索广告是近年来互联网的主流营收来源之一.在搜索广告背后,一个关键技术就是点击率预测-----pCTR(predict the click-through ...

  5. 闲聊DNN CTR预估模型

    原文:http://www.52cs.org/?p=1046 闲聊DNN CTR预估模型 Written by b manongb 作者:Kintocai, 北京大学硕士, 现就职于腾讯. 伦敦大学张 ...

  6. 计算广告CTR预估系列(七)--Facebook经典模型LR+GBDT理论与实践

    计算广告CTR预估系列(七)--Facebook经典模型LR+GBDT理论与实践 2018年06月13日 16:38:11 轻春 阅读数 6004更多 分类专栏: 机器学习 机器学习荐货情报局   版 ...

  7. 为什么要用深度学习来做个性化推荐 CTR 预估

    欢迎大家前往腾讯云技术社区,获取更多腾讯海量技术实践干货哦~ 作者:苏博览 深度学习应该这一两年计算机圈子里最热的一个词了.基于深度学习,工程师们在图像,语音,NLP等领域都取得了令人振奋的进展.而深 ...

  8. CTR预估算法之FM, FFM, DeepFM及实践

    https://blog.csdn.net/john_xyz/article/details/78933253 目录目录CTR预估综述Factorization Machines(FM)算法原理代码实 ...

  9. 深度学习在CTR预估中的应用

    欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由鹅厂优文发表于云+社区专栏 一.前言 二.深度学习模型 1. Factorization-machine(FM) FM = LR+ e ...

随机推荐

  1. hdu 1255 覆盖的面积 (Bruceforce)

    Problem - 1255 暴力统计覆盖超过一次的区域.1y. 代码如下: #include <cstdio> #include <cstring> #include < ...

  2. npm镜像及配置方法

    npm全称Node Package Manager,是node.js的模块依赖管理工具.由于npm的源在国外,所以国内用户使用起来各种不方便.下面整理出了一部分国内优秀的npm镜像资源,国内用户可以选 ...

  3. zoj 2954 Hanoi Tower

    Hanoi Tower Time Limit: 2 Seconds Memory Limit: 65536 KB You all must know the puzzle named "Th ...

  4. laravel中将session由文件保存改为数据库保存

    1.laravel中默认是使用文件保存session的,保存在/storage/framework/sessions下 2.修改配置文件 config/session.php中 'driver' =& ...

  5. [转]C# 语言历史版本特性(C# 1.0到C# 8.0汇总)

    历史版本 C#作为微软2000年以后.NET平台开发的当家语言,发展至今具有17年的历史,语言本身具有丰富的特性,微软对其更新支持也十分支持.微软将C#提交给标准组织ECMA,C# 5.0目前是ECM ...

  6. Navicat for MySQL 使用SSH方式链接远程数据库(二)

    这里我们使用SSH连接远程mysql数据库 2 SSH这种方式,可以使我们连接到远程服务器,但是现在并不能访问数据库,因为我们还没有连接到数据库 3 既然已经连接到服务器了,我们就该连接服务器上的数据 ...

  7. UVa1601 - The Morning after Halloween [单向bfs]

    解题思路: 1.注意到2*2方格中必有一个#,那么最多只有192条通道,可以将所有非‘#’的位置提取出来用邻接表的方式建图,通过bfs搜索目标位置. 2.将三个ghost的位置(a,b,c)作为状态量 ...

  8. IDEA + Spring boot 单元测试

    1. 创建测试类 打开IDEA,在任意类名,任意接口名上,按ctrl+shift+t选择Create New Test image 然后根据提示操作(默认即可),点击确认,就在项目的/test/jav ...

  9. C# Thread.Join();Thread.Abort();

    Join() 等待当前线程运行完成后,才继续执行主线程后续代码: Abort() 结束当前线程,继续执行主线程后续代码: Thread.Join(); static void Main(string[ ...

  10. layui框架实现多图片手动上传和随表单提交方法

    首先在官方文档并没有手动上传的说明文档,这里手动实现上传原理是:在表单中有三个按钮,分别是上传图片按钮.隐藏上传按钮.表单提交按钮,点击上传图片按钮之后,图片添加在前端但是并没有真正的上传,而是在点击 ...