【超长序列建模】千级别:MINM《Practice on Long Sequential User Behavior Modeling for Click-Through Rate Predictio

超长序列建模

当序列行为超长时,意味着一个节点有数十万条边,这个时候一阶关系都过于稠密,更不用说利用高阶关系了。

百级别:回顾YouTubeDNN、DIN、DIEN、DISN

YouTubeDNN:pooling

【超长序列建模】千级别:MINM《Practice on Long Sequential User Behavior Modeling for Click-Through Rate Predictio_第1张图片

DIN:Attention

【超长序列建模】千级别:MINM《Practice on Long Sequential User Behavior Modeling for Click-Through Rate Predictio_第2张图片

DIEN:GRU+Attention

【超长序列建模】千级别:MINM《Practice on Long Sequential User Behavior Modeling for Click-Through Rate Predictio_第3张图片

千级别:《Practice on Long Sequential User Behavior Modeling for Click-Through Rate Prediction》 KDD‘19

通常用户的历史行为特征是十分重要的一类特征,引入更长时间的历史行为特征之后往往会带来准确度的提升,但是线上系统的性能压力会越来越大,由于在部署线上系统时需要存储更长时间的用户行为数据,这给线上的内存占用以及计算耗时都得来了巨大的压力。并且引入长的历史行为特征的性能收益也有边际,需要更先进的模型与之匹配。

【超长序列建模】千级别:MINM《Practice on Long Sequential User Behavior Modeling for Click-Through Rate Predictio_第4张图片

序列建模的复杂度是 O ( L ∗ B ∗ d ) O(L * B * d) O(LBd)L=user sequence length, B=batch_size, d=embedding dimension,因此即使升级了更先进的模型结构,还会有两大问题需要克服
【超长序列建模】千级别:MINM《Practice on Long Sequential User Behavior Modeling for Click-Through Rate Predictio_第5张图片

  1. 存储限制:在淘宝的场景中有6亿用户,在线上精排推断阶段,如果每个用户保留长度为150的用户行为序列,会消耗1TB的存储空间;当用户行为序列的长度增长到1000的时候,存储空间的消耗将会达到6TB,而且消耗的空间会随着用户行为序列长度而线性增长。如果为了保证低延时和高吞吐量采用内存方式进行存储的话,消耗的空间过于巨大。(一个序列特征就要6TB内存开销)
  2. 延迟限制:上述DIEN模型在阿里的线上系统中,QPS为500(服务器性能)的时候系统的延迟为14ms,当用户序列增加到1000时,QPS为500的时候系统延迟达到了200ms。而实际系统要求QPS为500的时候系统延迟要小于30ms,所以也要用高效的方法用序列特征。

为了解决上述的两个主要问题,本文构建了一个单独的模块UIC来完成用户行为序列的建模计算工作,将用户长期兴趣模块和模型解耦。UIC server负责存储每个用户最近的行为兴趣,而且UIC server的核心在于其更新策略,即用户行为序列的更新只依赖于具体的触发事件,而不依赖于请求(Memory bank),因此UIC可以被用于低时延CTR预估系统中,采用UIC这种线上架构有效的降低了系统的延时,当用户行为序列长度为1000时,QPS为500时,线上系统延迟仅为19ms。

MIMN

【超长序列建模】千级别:MINM《Practice on Long Sequential User Behavior Modeling for Click-Through Rate Predictio_第6张图片

右侧是传统的embedding+MLP的经典结构。左侧是负责用户兴趣的建模,有两部分:1、神经图灵机NTM,包含基本的memory read和memory write操作;2、为了提取高阶信息而采用多通道GRU的memory induction unit。

首先大体框架是左侧是一UIC服务器(User Interest Center Server),右侧是RTP server,左侧是当有一个用户行为事件发生的时候,UIC会重新计算用户兴趣的表征,而不是来了predict请求才更新。当有predict请求时,左侧只返回一个兴趣表征。

有点复杂

神经图灵机NTM
94f0dad37c7fe85b62082b80ce5bc220.png

Google 于 14 年提出的记忆网络结构,该结构由 Controller、Memory 两部分构成,Memory 存储了一个记忆矩阵 。这里,作者把矩阵的每一行想象成一种兴趣类型。Controller 可以想象成 MLP/LSTM 等结构。

NTM利用一个额外的记忆网络来存储长序列信息,在时间t,记忆网络可以表示为矩阵 M t M_t Mt,其包含m个memory slot,NTM通过一个controller模块进行读写操作。

【超长序列建模】千级别:MINM《Practice on Long Sequential User Behavior Modeling for Click-Through Rate Predictio_第7张图片

Memory read

当输入第t个用户行为embedding向量,controller会生成一个用于寻址的read key k t k_t kt,首先遍历全部的memory slot,生成一个权重向量 w t r w_t^r wtr:
w t r ( i ) = exp ⁡ ( K ( k t , M t ( i ) ) ) ∑ j m exp ⁡ ( K ( k t , M t ( j ) ) ) ,  for  i = 1 , 2 , … m \mathbf{w}_{t}^{r}(i)=\frac{\exp \left(K\left(\mathbf{k}_{t}, \mathbf{M}_{t}(i)\right)\right)}{\sum_{j}^{m} \exp \left(K\left(\mathbf{k}_{t}, \mathbf{M}_{t}(j)\right)\right)}, \text { for } i=1,2, \ldots m wtr(i)=jmexp(K(kt,Mt(j)))exp(K(kt,Mt(i))), for i=1,2,m
其中K是余弦相似度:
K ( k t , M t ( i ) ) = k t T M t

你可能感兴趣的:(论文解读,CTR,推荐系统,服务器,人工智能,算法)