阿里又出排序新模型,还被国际顶会认可了 | AAAI-20 oral

简介: DMR提供了一个Matching和Ranking联合训练的框架,U2I相关性表征的模块可以很容易嵌到现有的CTR模型中,相当于在你原来的模型上加了一些有效的特征。我们后续的CTR模型迭代会基于DMR的框架不断加入新的改进。

背景

以电商场景优化用户点击为例,推荐系统的任务是从海量的候选商品中选出用户最感兴趣且最可能点击的商品。为了提升检索的效率,通常分为两阶段来检索。召回/候选生成(Matching/Candidate Generation)阶段根据U2I相关性从整个候选集中筛选出少量的候选商品(比如1000个),常用协同过滤方法。排序(Ranking)阶段根据排序模型预估这小部分候选商品的CTR,排序后展示给用户。

推荐系统中CTR预估的重要性不言而喻,其中个性化是提升CTR模型效果的关键。本文介绍一种全新的排序模型,主要的思想是融合Match中的协同过滤思想,在Rank模型中表征U2I的相关性,从而提升模型的个性化能力,并取得不俗的效果。

搜索场景中用户通过输入搜索词显式地表达用户的意图,而推荐场景中没有这种显式获取用户意图的方式。用户的意图往往隐藏在用户行为序列中,可以说用户行为序列就是推荐中的query。因此,对用户行为序列进行建模来抽取其中的用户意图就非常重要。DIN[1]以及DIEN[2]等后续工作关注用户兴趣的表征以提升模型效果,而我们的工作在此基础上又往前走了一步,关注U2I相关性的表征。U2I相关性可以直接衡量用户对目标商品的偏好强度。可以理解成从用户特征(用户兴趣表征)到U2I交叉特征(U2I相关性表征)的升级。

表征U2I相关性很容易想到召回中的协同过滤(CF)。I2I CF是工业界最常见的方法,预计算I2I的相似度,然后根据用户的行为和I2I相似度间接得到U2I相关性。因子分解(factorization)的方法更加直接,通过用户表征和商品表征的内积直接得到U2I相关性,这里暂且称这种方法为U2I CF。最近有一些深度学习的方法进入到相关领域:比如I2I CF中有NAIS[7],用attention机制区分用户行为的重要性,和DIN[1]的做法相似;U2I CF中有DNN4YouTube[3],把召回建模成大规模多分类问题,也就是常说的DeepMatch。DeepMatch可以看做factorization技术的非线性泛化。我们根据协同过滤中的U2I CF和I2I CF分别构建了两个子网络来表征U2I相关性。

模型介绍

DMR(Deep Match to Rank)模型的网络结构如图所示。仅仅依靠MLP隐式的特征交叉很难捕捉到U2I的相关性。对于输入到MLP中的U2I交叉特征,除了手工构建的U2I交叉特征,我们通过User-to-Item子网络和Item-to-Item子网络来表征U2I相关性,进一步提升模型的表达能力。

image.png

User-to-Item网络

受factorization方法的启发,我们用user representation和item representation的内积来表征U2I相关性,这可以看做是一种显式的特征交叉。user representation根据用户行为特征得到,一种简单的方法是做average pooling,即把每个行为特征看得同等重要。我们考虑到行为时间等context特征对行为重要性的区分度,采用attention机制,以位置编码(positional encoding,参考Transformer[4])等context特征作为query去适应性地学习每个行为的权重。其中位置编码行为序列按时间顺序排列后的编号,表达行为时间的远近。公式如下:

image.png

其中image.png是第t个position embedding,image.png是第t个用户行为的特征向量,image.pngimage.png是学习参数,image.png是第t个用户行为的归一化权重。通过weighted sum pooling,得到定长的特征向量,然后通过全连接层进行非线性变化得到user representation,以匹配item representation的维度image.png。最终的user representationimage.png可以定义为:

image.png

其中函数image.png代表非线性变换,输入维度image.png,输出维度image.png, 是第t个用户行为的带权的特征向量。

目标item representation直接通过embedding lookup得到,这个embedding矩阵image.png是单独的一个矩阵,用于输出端,和输入端的item使用的embedding矩阵V不同(类似于word2vec[6]中一个单词有输入和输出两种表征)。有了user representation和item representation,我们用内积来表征U2I相关性:

image.png

我们希望r越大代表相关性越强,从而对CTR预测有正向的效果。然后从反向传播的角度考虑,仅仅通过点击label的监督很难学出这样的效果。另外,embedding矩阵image.png的学习完全依赖于唯一的相关性单元r。基于以上两点,我们提出了DeepMatch网络(即图中最后侧的Auxiliary Match Network),引入用户行为作为label监督User-to-Item网络的学习。

DeepMatch网络的任务是根据前T−1个行为预测第T个行为,是一个大规模多分类任务,有多少候选商品就有多个分类。根据上述用户表征的形式,我们可以获得前T−1个用户行为对应的user representation,记作image.png。用户在发生这T−1个行为后,下一个点击商品j的概率可以用softmax函数来定义:

image.png

其中第j个商品的(输出)表征image.png。目标商品的输出表征实际上就是softmax层的参数。以交叉熵为损失函数,我们有以下损失:

image.png

其中image.png代表第I个样本的第j个商品的label,image.png是相应的预测结果,K是不同的分类数,也就是商品数。image.png当且仅当商品j是用户行为序列中的第T个行为。考虑到softmax的计算量太大,正比于商品总数K,采用negative sampling的方法来简化计算,损失变为如下形式:

image.png

其中image.png是sigmoid 函数,image.png是正样本,image.png是负样本,k是采用的负样本数,远小于总体商品总数K。DeepMatch的loss会加到MLP最终的分类loss上。DeepMatch网络会促使更大的内积r代表更强的相关性,从而帮助模型的训练。实际上,User-to-Item Network是Ranking模型和Matching模型以统一的方式进行联合训练。这和简单地将召回阶段的match_type、match_score等特征加入到排序模型中不同。召回阶段通常是多路召回,不同召回方式的分数不在同一个metric下,无法直接比较(比如swing和DeepMatch的分数不能直接比较)。DMR通过User-to-Item网络能够针对任意给定的目标商品表征U2I相关性,且可以相互比较。

Item-to-Item网络

User-to-Item网络通过内积直接表征U2I相关性,而Item-to-Item网络通过计算I2I相似度间接表征U2I相关性。回忆一下DIN[1]等模型中的target attention,即以目标商品为query对用户行为序列做attention,区分出行为的重要程度。我们可以把它理解成一个I2I的相似度计算,和目标商品更相似的用户行为商品获得更高的权重,从而主导pooling后的特征向量。基于这样的理解,我们将所有的权重(softmax归一化之前)求和就得到了另一种U2I相关性表达。公式如下:

image.png

Item-to-Item网络使用additive attention[5]形式计算,区别于User-to-Item的内积形式,可以让增强表征能力。

除了U2I相关性表征,Item-to-Item网络也将target attention后的用户表征输入到MLP中。DMR如果没有U2I相关性表征以及positional encoding,则和DIN[1]模型基本相同。

实验

我们在阿里妈妈的公开数据集,以及1688为你推荐的生产数据集上做了一系列实验,验证模型整体的效果并且探索某个模块对模型的影响。

离线实验

image.png


image.png

线上实验

我们在1688为你推荐上线DMR模型,对比模型是DIN[1](我们上一个版本的CTR模型),CTR相对提升5.5%,DPV相对提升12.8%,目前已经全量。

总结&展望

我们的论文Deep Match to Rank Model for Personalized Click-Through Rate Prediction被AAAI-20以oral的形式录用,paper原文地址:https://github.com/lvze92/DMR

DMR提供了一个Matching和Ranking联合训练的框架,U2I相关性表征的模块可以很容易嵌到现有的CTR模型中,相当于在你原来的模型上加了一些有效的特征。我们后续的CTR模型迭代会基于DMR的框架不断加入新的改进。

我们是阿里巴巴CBU技术部算法团队,招推荐算法工程师,欢迎投递简历至lvze.lz@alibaba-inc.com

主要参考文献:
[1] Deep Interest Network for Click-Through Rate Prediction - KDD18

[2] Deep Interest Evolution Network for Click-Through Rate Prediction - AAAI19

[3] Deep Neural Networks for YouTube Recommendations - ResSys16

[4] Attention Is All You Need - NIPS17

[5] Neural Machine Translation by Jointly Learning to Align and Translate - ICLR15

[6] Distributed Representations of Words and Phrases and their Compositionality - NIPS13

[7] NAIS - Neural Attentive Item Similarity Model for Recommendation - TKDE18

相关文章
|
JavaScript
cnpm : 无法将“cnpm”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确,然后再试一次。所在位置 行:1 字符: 1
cnpm : 无法将“cnpm”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确,然后再试一次。所在位置 行:1 字符: 1
1368 0
|
开发框架 缓存 .NET
并发请求太多,服务器崩溃了?试试使用 ASP.NET Core Web API 操作筛选器对请求进行限流
并发请求太多,服务器崩溃了?试试使用 ASP.NET Core Web API 操作筛选器对请求进行限流
548 0
|
9月前
|
机器学习/深度学习 数据采集 存储
大模型微调知识与实践分享
本文详细介绍了大型语言模型(LLM)的结构、参数量、显存占用、存储需求以及微调过程中的关键技术点,包括Prompt工程、数据构造、LoRA微调方法等。
2212 72
大模型微调知识与实践分享
|
SQL 机器学习/深度学习 分布式计算
|
机器学习/深度学习 编解码 算法
超分辨率相关的开源项目
该文档介绍了多种超分辨率模型及其GitHub项目地址,包括Real-ESRGAN(优化真实图片质量)、RCAN(基于残差结构与通道注意力机制)、SwinIR(基于Swin Transformer的图像恢复)、FSRCNN(轻量级快速超分辨率)、EDSR(增强型深度残差网络)、SRGAN(利用GAN的超分辨率模型)及LapSRN(多级Laplacian金字塔超分辨率)。
|
NoSQL Redis
蓝易云 - redis报错WRONGTYPE Operation against a key holding the wrong kind of value
解决这个问题的方法是检查你的代码,确保你对每个键使用的命令与该键的类型匹配。你可以使用 `TYPE`命令来确定一个键的类型。例如,`TYPE mykey`将返回 `mykey`的类型。
779 3
|
人工智能 算法
从RLHF到DPO再到TDPO,大模型对齐算法已经是token-level
【7月更文挑战第1天】在AI领域的语言模型对齐研究中,新提出的TDPO算法实现了Token-level的直接优化。不同于以往在答案级别评估的方法,TDPO利用前向KL散度和Bradley-Terry模型,直接在生成过程的Token层面上调整对齐,提高微调精度和多样性。实验显示,TDPO优于DPO和RLHF,在某些任务上表现出色,但也面临计算资源需求高、处理复杂任务时局限性等问题,需要进一步验证和改进。[论文链接](https://arxiv.org/abs/2404.11999)
583 8
|
SQL 缓存 分布式计算
手把手教你解决 Hive 的数据倾斜
数据倾斜是 Hive 中影响任务执行效率的现象,表现为某些任务处理的数据量或耗时远超其他任务。根本原因是 Shuffle 后 Key 分布不均,导致部分 Reduce 负载过高。常见场景包括空值聚合、不可拆分大文件、数值膨胀、不同数据类型 Join、Count(distinct) 计算以及表 Join 操作。解决方法包括过滤空值、转换数据类型、调整聚合策略、使用 MapJoin 等。通过合理优化,如设置 `hive.groupby.skewindata` 和 `hive.map.aggr` 参数,可以有效缓解数据倾斜问题。
2514 2
|
机器学习/深度学习 资源调度 算法
推荐系统[四]:精排-详解排序算法LTR (Learning to Rank)_ poitwise, pairwise, listwise相关评价指标,超详细知识指南。
推荐系统[四]:精排-详解排序算法LTR (Learning to Rank)_ poitwise, pairwise, listwise相关评价指标,超详细知识指南。
推荐系统[四]:精排-详解排序算法LTR (Learning to Rank)_ poitwise, pairwise, listwise相关评价指标,超详细知识指南。
|
存储 jenkins 持续交付
devOps-jenkins流水线使用(docker in docker)
1. 容器安装jenkins (docker in docker) 2. jenkins 流水线使用 3. jenkins Generic Webhook Trigger 使用 4. jenkins 集成 allure 5. jenkins docker in dcoker 镜像构建
devOps-jenkins流水线使用(docker in docker)