社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  机器学习算法

推荐系统遇上深度学习(一三四)-[阿里]对抗过滤建模用户长期行为序列

小小挖掘机 • 3 年前 • 254 次点击  

今天给大家带来一篇SIGIR2022上阿里中稿的一篇短文,主要研究在建模用户长期兴趣时,如何对用户的长行为序列中噪声进行过滤,选择topK的有用的行为用于CTR预估。论文提出对抗学习的思路来解决这一问题,一起来学习一下。

1、背景

基于用户历史行为序列建模用户的兴趣在CTR预估等领域取得了显著的成果。用户兴趣可以分为短期和长期,短期兴趣一般使用用户近期的行为来建模,长期兴趣则使用用户较长一段时期内的行为进行建模。由于用户在淘宝上的行为非常多,导致在建模用户长期兴趣时,使用的用户历史行为序列长度会非常长。

直接对长序列处理,线上性能难以保证,因此现有对于用户长行为序列的建模方法,大都采用的思想是将长序列转换为短序列,再采取类似DIN的方法进行处理,如MIMN引入Memory Network对行为序列信息进行提取和存储,并引入Memory Utilization Regularization对写入的权重方差进行控制,避免热门的商品主导Memory的更新。在线上预测通过设计单独的UIC模块减少耗时的压力。MIMN的主要缺点在于兴趣的提取无法很好的和候选AD/商品交互(仅通过存储矩阵实现交互),可能会对效果有损。SIM引入General Search Unit对用户行为序列中相关的item进行检索,通过这种检索的方式减少行为序列中item的数量。检索方式分为hard-search和soft-search两种方式,对于hard-search方式来说,通过规则方式进行检索,例如跟target item相同品类的item,这种方式存在的主要缺点是搜索阶段的目标和最终的CTR的目标并非一致,即并非端到端学习。对于soft-search方式来说,基于embedding相似度选取topk的item,这种效果并没有比hard-search提升明显,同时线上耗时增加更加明显。

但上述模型的缺点并非本文重点关注的问题,本文重点关注的是如何对长历史行为序列中的噪声进行处理。这是上述论文都没有涉及到的。

论文提出,用户的长行为序列中可能存在两类的噪声:重复行为和无用行为。对重复行为来说,可能会导致整个序列被少数的几个item所主导,无用的行为如误点击可能并不会反映用户的真实兴趣,对预估造成一定的影响。为了对长行为序列中的噪声进行有效处理,论文提出了ADFM框架(Adversarial Filtering Modeling)。

2、ADFM介绍

4.1 ADFM介绍

ADFM的模型结构如下图所示:

模型输入包括target item信息,user信息,用户多种行为序列(曝光,点击,加购,下单)。从上往下看,ADFM主要包含HAU、BSU、IEU、AIEU等几个模块,接下来分别对其进行介绍:

4.2 Hierarchical Aggregation Unit (HAU):

HAU模块对多个历史行为序列按照一定方式(如item id)进行聚合,同时,为了尽可能保留原始行为序列信息,聚合时增加多个统计信息,如行为出现次数,最近一次发生时间,第一次发生时间等等。

4.3 Behavior Selection Unit (BSU):

BSU引入self-attention对历史行为进行筛选,每个序列中,选择top-k个最有用的行为,具体计算过程为:

上面共三个公式,第一个公式是selt-attention的计算过程,第二个是对序列中的每个行为进行一个打分,第三个公式基于函数Filter(score,embedding,k)是top-k行为筛选,可以看到筛选出的行为对应的embedding是self-attention的输出以及对应的score的乘积。

4.4 Interest Extraction Unit (IEU)

IEU模块同样引入self-attention,基于选择的历史行为和target item,进行兴趣的抽取,并得到CTR预估值:

4.5 Adversarial Interest Extraction Unit(AIEU)

为了保证BSU模块抽取到的top-K的行为时准确的,引入对抗学习的思路,新增AIEU模块。AIEU模块和IEU模块的结构相同,区别在于使用的是topk以外的行为。

4.6 Model Training

IEU和AIEU模块分别计算得到ctr预估值,并计算logloss,模型期望IEU的loss远小于AIEU的loss

直接优化上面的损失同时更新IEU和AIEU两部分网络,topK和非topK行为的变动剧烈导致模型难以收敛,因此模型借鉴对抗学习的思路,进行两阶段的交替训练:

1)一阶段:固定BSU,通过如下的损失优化IEU和AIEU,提升IEU和AIEU的CTR预估准确性:

2)二阶段:固定IEU和AIEU,通过如下的损失优化BSU,提升topK选择的准确性:

3、实验结果

论文将ADFM与众多base模型进行了效果对比,取得了正向的效果:

4、总结

论文提出了一种对长序列行为噪声过滤的方法,并取得了相较于base更优的效果,同时通过对抗学习的思路,减少模型训练的不稳定性,提升行为选取的有效性,另一方面,模型可进行端到端训练。但为了减少线上预测耗时,topK是提前计算好并进行存储的,没有考虑target item,一定程度上对效果有损。

好了,论文就介绍到这里,感兴趣的可以阅读原文~


Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/135366
 
254 次点击