基于点击率预测的长序列用户行为建模

本文介绍的是《Practice on Long Sequential User Behavior Modeling for Click-Through Rate Prediction》

论文的下载地址:https://arxiv.org/abs/1905.09248

源代码下载地址:https://github.com/UIC-Paper/MIMN

ps: 在运行源代码,搭建环境时,要装载python2.7以及tensorflow1.4。但是对于windows系统而言,没有对应的tensorflow1.4版本,因此在windows上运行不了,但是可以在macos以及linux上运行。

背景

CTR预估作为广告和推荐系统的基础技术,在用户行为较为丰富的场景,一般通过建模用户的历史行为序列来挖掘用户兴趣。可以知道用户的历史行为序列越多,系统对用户的兴趣判断越准确,因此希望能够引进更多的用户行为序列,但是相对的会增加存储和在线服务压力。故,本论文就此提出相对性行为。

在论文中可以知道随着时间的增加,用户的行为序列也会呈现出暴增的形式,并且随着行为序列的增多,模型的AUC值增长了0.01(如下图所示),这在工业上有着很大的提升。

实时点击预测系统 

延时问题

在本次介绍的一开始也提出了,在之前的模型中存在着存储和延时的问题,因此,在本论文中将用户的行为特征模块单独提取出来,分解成两个部分:用户兴趣表示以及UIC模块。(如下图所示)对于UIC是一个离线模块,在这个模块里无需流量请求,一直实时更新,并在这里将与用户的行为序列转变成用户的兴趣向量,然后传输给用户兴趣表示,这样实时预测系统提取的直接就是用户兴趣向量,减少了线上服务时间。简单的理解就是,预测系统所需要的是成品,而在原先的模型中我们在线上首先提取到的是材料,然后还要等待将材料变为成品的时间;但是对于新的模型是我系统直接拿到的就是成品,这样一来就减少了线上等待时间,就缓减了延迟。

 存储问题

论文中解决存储是在UIC中增加了一个MIMN的模型。其结构如下图所示:

 可以看到,在这个MIMN模型中主要就是由NTM(图灵机)和MIU(记忆感应单元)组成。它是借鉴NTM的思路,采用了memory-based model建模,在GRU时序模型的基础上引入external memory向量,显示存储行为信息。

Neural Turing Machine

MIMN主要通过NTM来对行为序列进行处理。NTM包括几个关键部分:controller、读写头和memory。其图如下所示:

 Memory Induction Unit

NTM一般使用来存储原始数据的,但是在这过程中会忽略了对高阶信息的捕捉,因此为了能更好的捕捉用户的兴趣,MIMN中就增加了记忆感应单元(MIU)来捕捉用户的兴趣演化过程。(如下图所示)。只有前K个权重才能进行更新,形成新的M矩阵,然后通过GRU形成新的兴趣矩阵向量。

具体演化计算如公式所示:

 

其中,e是用户t时刻的行为向量。这里将每一个槽当作一个兴趣轨道,在t时刻选择K个槽进行演化。 

Gate Recurrent Unit

在MIU中可以看到,用到了GRU算法。GRU又称为门循环单元,是神经网络中的一种,能够解决长期记忆和反向传播中梯度消失等问题。如下图所示,它与RNN的基础单元是一样的,都是双输入双输出的结构。

                                                                    RNN结构图

 

                                                                 GRU基本单元图 

在之前的学习中我们知道,RNN会存在梯度消失和梯度爆炸等问题,因此不能很好的去处理长序列,因此在论文中就采用了GRU。接下来来看下GRU的内部(如下图所示),内部这个图看起来有点复杂,但是只要抓住重点就不难理解了,最主要的就是这4个公式。

                                                           GRU内部图 

                                                       GRU主要公式 

r为重置门,用于忽略前一时刻的信息对这一时刻影响的程度,他的值越小说明前一时刻的信息影响越小。

Z为更新门,用于控制前一时刻的状态信息被带入到当前状态中的程度,更新门的值越大说明前一时刻的状态信息带入越多。

最重要的就是最后一个公式,正是因为它GRU才有了选择性记忆的一个功能。从公式上可以看到,分为两个部分,前面是将上一时刻有用的保留下来,后一部分是将此时刻所产生有用的保留。

ps:附上关于GRU的一个大致讲解视频,这个用了一个例子解释了GRU,就我来说,是感觉比较易懂,听完之后。【重温经典】GRU循环神经网络 —— LSTM的轻量级版本,大白话讲解_哔哩哔哩_bilibili

注:文章中的图是一些是来自论文,一些是采用了CSDN上其他博主的图。(实在是懒得弄了)

Guess you like

Origin blog.csdn.net/Lxhqt/article/details/121888365