推荐系统用户长序列建模

目录

一、背景

二、技术方案

2.1 DIN

简介

论文细节

优缺点

2.2 DINE

简介

论文细节

2.3 MIMN

简介

论文细节

2.4 SIM

简介

论文细节

优缺点

2.5 DSIN

简介

论文细节


一、背景

阿里巴巴的精排模型从传统lr,到深度学习,再到对用户长历史序列进行建模的演变。传统的深度模型(如GwEN),一般采用Embedding&MLP的形式,它会将用户的所有兴趣信息转化为一个定长的向量。但用户的兴趣是多样的,定长的向量可能不足以表达。而且评估用户对于不同资源的兴趣时,应该使用不同的行为(判断用户是否喜欢衣服,应该关注用户对衣服的历史行为与兴趣程度;判断用户是否喜欢包包,则关注用户对包包的历史行为)。

因此盖坤团队提出DIN,从用户行为中提取与目标商品相关的多峰兴趣;DIN模型更多是从挖掘多峰兴趣角度出发,没有考虑行为的序列信息,兴趣的变化也能给模型提供信息,因此有了DIEN;这两个模型后,用户兴趣建模划分出了2个研究分支,一个是用户长期兴趣建模(MIMN、SIM),该分支依然是盖坤团队主导的;另一个分支则是从session的角度,对行为做进一步划分(DSIN)

二、技术方案

2.1 DIN

简介

如上左图是传统的Embedding&MLP模型,处理行为数据采用sum-pooling得到定长的embedding。

这里行为的定义可以是广告点击、商品购买、加购物车等,每个行为节点由3个embedding拼接组成(商品ID、商品类别ID、商铺ID)

右图是DIN的模型结构,作者将每个行为节点与候选节点做交叉得到权重(即途中的activation unit),再通过weighted-sum-pooling的模型得到行为的embedding,这样,对于每个候选商品,提取的用户行为embedding是不同的。

作者在实验部分可视化了activation unit的结果,和候选商品相关的行为节点会贡献较大的权重,符合认知

论文细节

这种行为兴趣的建模方式,在实际应用时会遇到一些问题

1、行为数据的参数量巨大(商品ID可能就百/千万),模型容易过拟合;引入L2正则,参数量大训练缓慢

2、针对不同的候选节点,用户的兴趣embedding不同,波动大会影响MLP部分的模型收敛

解决方案

1、提出Mini-batch Aware Regularization。L2正则缓慢的原因是每个mini-batch会对模型的所有参数做正则,但其实每个minibatch只使用了部分的商品ID。因此更好的做法是,每个mini-batch只对使用到的商品ID计算L2正则。实验证明,通过这种方式,能有效缓解过拟合现象,同时确保训练效率

2、作者针对MLP部分的激活函数(PReLU)做优化,提出更具泛化性的Dice,这种激活函数可以根据输入数据的均值和方差,动态调整函数形态。在后续的论文中,模型也延用了这种激活函数

优缺点

1、该模型能动态获取用户的多种兴趣。但没有考虑行为的先后关系(序列)、兴趣的变化过程等

2、候选商品与每个行为节点计算权重,仅适用较短的行为序列(论文中采用14天的曝光日志,每个用户平均35个行为)

3、对比传统的Embedding&MLP的模型,计算复杂度提升。上线时也做了一些GPU-CPU的计算优化

2.2 DINE

简介

针对DIN没有考虑行为先后关系、兴趣变化过程的问题,盖坤团队继续优化模型结构,引入GRU提取行为序列中的信息,并结合DIN中目标AD与行为节点计算权重的模式(Attention),提出AUGRU进一步挖掘兴趣变化中的信息

论文细节

Interest Extractor Layer

Interest Extractor Layer ,也就是兴趣提取层。用户行为是用户兴趣的载体,兴趣也会随着用户采取某个行动之后改变。因此要对兴趣建模,首先要对行为之间的依赖关系进行建模。考虑到效率与性能,文中使用 GRU 对行为之间的依赖关系进行建模。GRU 的公式如下:

由于 GRU 的特性,候选广告商品是否被点击的这个 label 在反向梯度传播的过程中仅仅能够对 GRU 的最终状态形成有效的监督作用,而对于中间的行为序列隐含状态缺少有效的监督信息。因此,为了使得中间的隐含能够有效的学习兴趣信息,使用下一个时刻的行为来监督当前隐含状态的学习。为此,选择真实的下一个商品作为正样本,选择其他商品作为负样本,进而计算一个二分类的辅助损失函数:

其中 ht表示第 t 个隐含状态,eb表示有真实点击行为的正样本,eb^表示没有点击行为的负样本。

引入损失函数的好处有:

  1. 有助于 GRU 每个隐含状态学习到兴趣表示。

  2. 有助于降低长序列建模中梯度反向传播的难度。

  3. 辅助损失函数还有助于嵌入层学习更多的语义信息,得到更好的嵌入矩阵。

Interest Evolving Layer

Interest Evolving Layer,如上图中红色区域所示,结合了注意力机制的局部激活能力以及GRU的序列学习能力来实现对与候选广告商品相关的兴趣演化过程建模。

具体而言,需要对用户兴趣与候选商品计算 attention:

GRU with attention update gate(AUGRU),作者提出了增加了attentional update gate的GRU结构实现attention机制和GRU的无缝结合:

2.3 MIMN

简介

DIN、DIEN处理的序列长度都有限(最大为150),而离线实验验证,采用的行为序列越长,模型收益越大。因此意愿上是期望使用更长(1000)的行为序列(long-life),但长的行为序列会带来两个问题

1、存储限制:天猫广告业务上,6亿用户,14天行为序列(最大长度150),消耗1TB的存储,如果序列长度放开到1000,预计消耗6TB(估计也用不到,毕竟大序列的可能都属于长尾)

2、时延限制:精排一般是10ms,DIEN上线已经达到14ms,如果继续拉大序列长度,预计时延会达到30ms

针对上述两个问题,作者开始了优化MIMN的优化之路

论文细节

计算分离

维护一个离线的用户兴趣中心,存储当前时刻的兴趣embedding结果(存储序列消耗资源大,存不下),每次有新的用户行为进来时更新embedding。广告请求来时,给UIC发请求,获取兴趣embedding供线上计算。

长序列兴趣提取

UIC的解决方案会引入一个新问题,如果保存当前时刻的embedding,并且这个结果是能增量更新的?作者借助记忆网络NTM来处理这个问题。整体模型结构如下,左下角部分为行为序列处理结构,Controller、Read Head、Witer Head、M均为NTM的原始模型结构,Memory Induction Unit为作者创新的部分

离线计算时,左下角的结构能得到当前时刻每个用户的行为序列特征S,兴趣矩阵M,并存储在TAIR存储系统中。线上请求到来时,查询TAIR里对应用户的特征序列和兴趣矩阵,并将候选AD的embedding,输入模型的Controller部分,继而提取相关的兴趣和序列结果,作为MLP模型输入的一部分

论文重点介绍了NTM、Memory Induction Unit两部分

1、NTM

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

整个模型包括两种操作

(1)

  • 将外部输入经过Controller得到读操作头

  • 计算存储矩阵中每一行结果(论文里作者当作用户某种类型的兴趣)与读操作的相关性,作为特征的权重,即

(2)写操作:离线计算,初始训练/用户新增行为时用

2、创新点

(1)存储利用的归一化(Memory Utilization Regularization)

这是针对写操作的一种优化。行为序列中的Item也存在马太效应,大量热门item的进入,导致写操作存在大量相同的输入(写操作头相同),此时存储矩阵中的某些行被频繁更新,某些行却被忽略。作者提出优化写操作头的构造方法

具体的,假设原来的写操作权重为,作者引入累积更新权重、对写操作头做了新一层的封装,如下:

(2)Memory Induction Unit(MIU)

优缺点

1、时延:提出计算分离的模式,使得模型处理长序列(序列长度为1000)都不存在时延的压力,如下图

2、存储:提出NTM的结构,存储系统只需要为每个用户维护存储矩阵Mt和序列矩阵S,不需要单独保存行为序列,存储量从6T转为2.7T

3、效果:计算分离后,兴趣的提取无法很好的和候选AD/商品交互(仅通过存储矩阵实现交互),可能会对效果有损

4、同步:时序模块的结果和ctr模型是异步更新的,行为序列频繁更新可能导致模型效果波动,需要有一定的回滚机制

5、适用性:当用户行为丰富且行为更新频率没有远高于请求时,可以使用该模型。这是因为该模型时针对长序列行为建模的,行为数据不丰富当然不必使用。而如果用户行为更新频繁,ctr模型都来不及更新,可能会使预测结果产生波动

6、其他:作者提到双11时虽然行为数据丰富,但用户行为特殊,提取出来做特征效果反而下降

2.4 SIM

简介

MIMN虽然通过计算分离的方式确保了时延方面无压力,但也带来了更新频率不一致,行为序列无法与候选AD更好的交互等问题。线上使用时,作者发现当序列长度超过1k时,MIMN效果会变差(也是因为无法与候选AD交互)。

基于这些问题,作者干脆直接模仿推荐系统多阶段过滤的方法,第一阶段通过相对粗略的搜索模式,提取行为序列中与候选AD较相关的节点,第二阶段通过精准搜索的模式,得到序列与候选AD的关系,并形成embedding供MLP使用。这个模型能吃下的最大序列长度为54000,能满足工业界提取长期用户兴趣的需求。

论文细节

泛搜索结构(第一阶段)

如上图左侧所示,作者的重点是提取长期行为中(短期的默认全取,论文的工业数据集中短期指14天内的行为),与候选商品相关的行为节点。作者提出两种匹配方法

1、Hard Search:核心思想是只提取和候选商品相同类目的行为信息。具体的,在线维护一个“用户ID-商品类目ID-行为商品ID”的双层索引数据。请求到来时,直接检索对应类目的行为商品序列

实际业务中,发现两种搜索模式的效果并没有太大差异,而性能上,明显Hard Search更有优势,因此线上采用Hard Search(存储消耗22TB。。。)

精准搜索结构(第二阶段)

该阶段,模型的输入分为4部分,用户画像,候选商品,短期行为序列和筛选出的长期行为序列,短期行为序列的信息提取采用DIEN的结构。而筛选的长期行为序列 ,因为行为发生时间与当前有一定距离,作者单独使用的attention结构去提取特征

优缺点

1、从实验看,SIM基本能满足工业界对用户长期兴趣提取的要求,对比DIEN,模型在对长期兴趣的提取效果是显著的。如下左图,横坐标表示的是用户当前时刻点击了某类别商品与上一次点击该类别商品的时间差,曲线表示样本分布情况,可以看到点击样本的 基本在14天以内。直方图表示对比DIEN,SIM的AUC提升情况,可以看到对于命中长期兴趣的点击样本,SIM的效果远优于DIEN

2、时延方面,SIM因为要处理1w+的序列信息,性能比MIMN要弱一些,但18ms的时延也基本满足实时性的要求

3、SIM号称能够处理的序列长度是54000,对于阿里广告业务而言,相当于180天的广告行为,已基本覆盖用户长期兴趣建模所需的时间长度

2.5 DSIN

简介

这篇论文没有从提取长期行为的角度出发,而是在时间间隔上做文章。DIEN直接将14天的行为无差别的拼接,没有考虑session的概念,但是用户的行为,在不同的Session中有明显差异。如下图,作者将行为间隔不超过30min的部分归纳为一个session,发现,同一个session内,用户点击的商品具有明显的指向性,而不同session间,用户的点击行为有明显差异

论文细节

针对这一现象,作者将行为划分为多个session,并提出兴趣抽取、兴趣交互(序列)、兴趣激活层3部分

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
仓库管理系统的UML软件建模可以从需求分析、系统设计、编码和测试等多个方面进行建模。以下是一个简要的UML软件建模过程的描述: 需求分析阶段: 在需求分析阶段,需要明确系统的功能需求和非功能需求。可以使用用例图来描述系统的功能需求,其中包括主要的用户角色和用例,以及它们之间的关系。此外,还可以使用活动图来描述各个用例的执行过程。 系统设计阶段: 在系统设计阶段,需要确定系统的结构和行为。可以使用类图来描述系统的静态结构,包括系统中的类、类之间的关系以及它们的属性和方法。此外,还可以使用顺序图和状态图来描述系统的动态行为,其中顺序图用于描述对象之间的消息交互,状态图用于描述对象的状态变化。 编码阶段: 在编码阶段,根据系统设计阶段的结果,将类图、顺序图和状态图等转化为具体的代码实现。可以使用类图来帮助程序员理解系统的结构和类之间的关系,进而进行代码编写。同时,顺序图和状态图等也可以用于指导代码的编写,确保系统在运行时具有正确的行为。 测试阶段: 在测试阶段,需要对编码结果进行验证,以确保系统满足设计和需求的要求。可以使用活动图来描述系统的测试用例,并使用序列图来描述测试过程中对象之间的交互。通过测试,可以发现系统中的错误和问题,并及时修复,以提高系统的质量。 总结而言,仓库管理系统的UML软件建模涉及到需求分析、系统设计、编码和测试等多个阶段。通过使用不同的UML图形和模型,可以帮助开发团队更好地理解和描述系统的需求和设计,从而有效地实现仓库管理系统的开发和测试工作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值