Exact-k:阿里工程师找到了组合推荐的秘密!

简介: 小叽导读:传统的推荐模型,大都是基于Top-K推荐的,也就是说,我们首先会对每个物品的CTR等进行预估,然后进行排序,将排序结果的前K个推荐给用户,这么做相对简单,但是忽略了推荐物品之间的内在联系。本工作的目的是解决一个新颖但是广泛存在的推荐问题,Exact-K 推荐。与传统的 Top-K 推荐不同,Exact-K 推荐更多地关注(带约束)的组合优化问题,在这个问题中,它能够综合考虑生成一个包含k个item的最优化集合。

2.png


关注“阿里机器智能”官方公众号,并在对话框内回复“K”,即可查看原版论文。

3.jpg

1.背景

在许多推荐场景中,我们都需要一次性推荐一屏的物品给用户,如下图所示两个例子(Taobao和YouTube):

4.png

在论文中我们将这种场景称之为exact-K recommendation问题,这个问题的目标是优化提高这一屏物品被点击或者满足目标用户需求的概率。于此同时,为了保障推荐的体验,同一屏中的物品往往要满足一定的限制,比如推荐物品之间需要具有一定的多样性。Exact-K推荐问题可以看做是带约束的组合优化问题,Top-K的方法则看做是一种启发式的贪心解法。下面我们介绍论文中如果对该问题进行端到端的求解,并重点介绍论文中提出来的“Graph Attention Networks (GAttN)”模型和“Reinforcementfrom Demonstrations (RLfD)”训练方法。

2.问题定义

**2.1Exact-K Recommendation问题
**

对于给定的包含N个物品的候选集合,我们的目标是从中选择K个物品的集合,并将这K个物品作为一屏推荐给用户,使得用户对这一屏的点击率最高。在这里,我们把A会被用户u点击或者满足用户u需求的概率定义为,同时,A中的物品两两之间有时需要满足一定的条件限制,定义为:

7.png

可以理解为两个物品之间的某种限制,如果满足限制,则,如果不满足限制,则。当然,物品之间有时也不需要条件限制,此时。根据上面的定义,我们可以把Exact-K Recommendation问题形式化表示为下面的组合优化问题:

12.png

论文中从图论的角度,可以重新理解我们刚才定义的问题。首先,把S中包含的N个物品作为图中的N个节点,其中节点代表物品。如果物品之间的限制条件为空也就是时,那么图中两两节点之间的都有边相连,如果C不为时,只有满足了条件的物品之间在图中相应节点才有边相连。既然要求推荐的K个物品两两之间都要满足条件,因此问题变为了图论中一个非常经典的问题,即在图中找到一个K个节点的完全子图,也就是K团。同时问题是最优化问题,相应的我们需要求解“最大”的K团,这里“最大”是一个泛化的概念。举个例子如下:

18.png

2.2节点权重估计方法

论文中首先介绍了一种基础的方法,过程如下:

19.png

  1. 对于给定的用户u和候选集合S,首先构造一张无向图;
  2. 计算图中每个节点的点击率CTR;
  3. 基于贪心算法,从当前的候选集合中选择点击率最高的一个节点,加入到推荐结果集A中,并把至少与A中一个物品不相连的物品从当前的候选集中去掉;
  4. 重复第3步直到得到包含K个物品的推荐结果集合A。

这个方法非常类似Top-K推荐的思路,计算每个物品的点击率,然后从大到小进行展示,但这个方法的缺点也非常明显:

  1. 点击率预估是单独针对一个物品来计算的,而且K个物品之间的组合关系也没有很好的考虑;
  2. 该方法启发式地将“最大”K团问题转化成了预估每个节点的权重然后求“最大权重和”的K团,并没有直接地对目标进行优化,可能得不到最优解。

3.方法

3.1Graph Attention Networks

文章提出的方法称为Graph Attention Networks,简称为GAttN,整体的框架采用Encoder-Decoder的方法,如下图所示:

20.png

  • 3.1.1 Input

对于给定的图,图中每个节点对应的物品的特征记作,用户u的特征记作。因此Encoder的每个阶段的输入计算如下:

25.png

  • 3.1.2 Encoder

传统的Encoder一般选择循环神经网络如LSTM或GRU,但在这个问题里顺序是没有意义的,因为输入的各个物品之间是无序的。尽管各个物品之间无序,但它们之间的相互影响还是需要考虑的。所以,这里的Encoder选择的是Transformer里面Multi-head Self-Attention机制。其中,Encoder具体包含三个sub-layers,如下所示:

26.png

  • 3.1.3 Decoder

对于Decoder来说,要输出K个物品集合A,代表图中的一个包含K个节点的完全子图。这里使用的是循环神经网络,输出的集合是A的概率计算方式如下:

27.png

其中,这里代表的是encoder的输出(图中每个节点的embedding),代表的是decoder的参数。得到输出是集合A的概率可以表示为得到A中所有物品的联合概率分布。这里使用循环神经网络来建模联合概率分布,在得到时,输入包含两部分,一个是上一个阶段的隐藏层状态,另一个是上一阶段的输出,因此可以得到下面的式子:

33.png

其中,

34.png

这样可以得到Decoder每个阶段的隐藏层状态,那么如何得到当前选择的物品呢?参考下面的网络结构图:

37.png

这里采用pointer-network的做法,首先使用一个attention机制,先让decoder回顾(glimpse)一遍所有的encoder输出,作为当前输出的上下文:

39.png

接下来,我们要计算选择每个物品的概率分布,首先这里需要注意的一点是,Decoder每个阶段的输出组合起来,应该是图中的一个团,因此,要确保当前选择的物品能够与之前选择的物品在同一个完全子图中,如果不能满足这个条件,需要通过添加mask的方式,确保其不会被选择到:

40.png

41.png

3.2 Reinforcement Learning from Demonstrations

回顾我们的优化目标是整个一屏的推荐结果集合A的点击概率最高,按照监督学习的思路,Decoder阶段使用的是RNN的结构,我们只能计算每个阶段的交叉熵损失,因此网络的优化目标和实际想要的目标是存在一定的gap的。因此,可以考虑通过强化学习中policy-gradient的思路直接优化目标。但是直接使用policy-gradient的方法,其训练是比较低效的,前面的探索效率可能无法得到有效的保证。因此,可以认为监督学习方法是“有效率的(efficient)”,而强化学习的方法是“有效充分的(sufficient)”。

综上所述,我们采取的思路是,结合了监督学习和强化学习,通过监督学习的方式对网络参数进行一定的预训练,再通过策略梯度的方式进一步修正网络参数。我们将使用监督学习的方法称作Learning from Demonstrations,使用强化学习的方法称作Learningfrom Rewards。

  • 3.2.1 Learning from Demonstrations

我们将从历史日志中收集的一批真实的训练数据称作,通过定义通过交叉熵损失训练模型:

43.png

上面的公式存在的一个问题就是,训练阶段时,Decoder输入的是真实的物品,而在预测时,Decoder输入的是上一阶段输出的物品,这就容易导致错误积累的问题,这个问题在很多NLP的生成任务上都有讨论。因此我们设置在训练阶段时,Decoder输入也直接使用上一阶段输出的物品,则损失函数变为:

44.png

  • 3.2.2 Learning from Rewards

这里复用强化学习的基本概念,把作为状态state的话,decoder阶段输出的组合A可以看作动作action,而policy则是联合概率分布。强化学习可以通过定义reward来直接优化问题的目标,因此我们定义了一个simulator来计算state和action对应的reward,直接使用历史数据作为reward的话显然是不够的,因为大量的(state, action)组合没有出现过。因此我们借鉴了逆强化学习(InverseReinforcement Learning)的思路,来训练一个奖励估计器(Reward Estimator)。这个估计器也比较简单,即基于历史数据来训练一个给定物品集合A和用户u的二分类模型,然后定义损失函数是logloss:

48.png
49.png

有了这个奖励估计器,就可以通过策略梯度的方法训练网络:

50.png
51.png

其中,奖励函数归一化到-1到1之间。

由于通过REINFORCE方法训练policy时奖励函数是delayed,并且“正反馈”也很稀疏(一般来说用户点的少看得多),这样也会导致训练时很难收到正向的reward,使得训练变得很不稳定,并且收敛很慢。因此,我们借鉴了“爬山法”的思想,每次保存5个结果,并从这5个结果中选择能获得最大奖励的一个结果进行模型训练。

  • 3.2.3 Combination

结合上文说的两种训练方式,模型的最终loss为:

52.png

这里有一个非常重要的参数来调节监督学习训练和强化学习训练的相对比重,而且可以根据训练过程做相应的调整(如初期设置较大的监督学习比重,随后慢慢变小,逐渐向强化学习方式偏移)。整个Reinforcement learning from Demonstrations方法可以总结为下面算法流程:

54.png

4.实验

4.1 实验评估方法

首先我们不能使用传统的排序方法的评价指标,如NDCG或MAP等,这些方法依赖对每个物品进行打分或者假设一个“好”的物品应该排在靠前的位置,因此并不适用于Exact-K推荐的问题。这里我们定义了两种离线实验的评估指标,分别定义为Precision@K和Hit Ratio@K:

55.png
56.png

其中,Hit Ratio是一个基于覆盖率的指标,解释为生成的物品集合A里面有多少是覆盖到用户真实偏好的物品集合的;Precision是一个基于准确度的指标,解释为生成的物品集合A中是否包含了用户点击的物品。

4.2 Baseline比较方法

在文章中我们比较了三种典型的排序学习方法:Pointwise、Pairwise和Listwise的方法。其中,Listwise方法最符合我们的问题,因为同样考虑了排序物品之间的上下文信息。其中代表性的工作是发表在SIGIR 2018的DLCM方法,该方法使用了GRU的循环神经网络对排序物品进行建模,同样地我们任务将GRU替换成Transformer效果会有进一步的提升。但是上述方法只是使用了监督学习的方法对问题进行求解。

4.3 实验数据集

首先,我们使用了公开的MovieLens数据构造了我们问题的数据集,其中分别构造了MovieLens(K=4, N=20) 和MovieLens(K=10, N=50) 两种数据集设置。于此同时,我们也使用了淘宝线上真实的数据集Taobao(K=4, N=50),这个数据集的使用场景可以参考我们另一篇论文(已被CIKM2019接受):https://arxiv.org/pdf/1907.01639

4.4 实验结论

整体的实验结果如下表所示:

59.png

可以看到我们的方法在所有数据集上都达到了最优的表现,于此同时可以看出Listwise的效果要远好于Pairwise和Pointwise方法,证明了论文中所说的上下文建模的重要性,同时基于Transformer的Listwise方法要优于基于GRU的方法,也验证了引入Multi-head Self-Attention对上下文建模的优势。

在论文中,我们也做了多组的ablation tests,优于篇幅的原因这里就不一一介绍。这里只强调一下一个相对来说最重要的超参数,用于调节训练时监督学习loss和强化学习loss的比重。如下图所示:

60.png

在图中可以看出,在时效果最好。进一步看,当只使用监督学习loss(也就是)时,我们可以初步得到一个较好的“次优解”,后面当逐渐加入强化学习方法时(减小),效果会进一步提升达到更优的解。这也验证了我们在论文中提出的“Reinforcement Learning from Demonstrations”的训练方法,可以达到兼顾sufficiency-and-efficiency的效果。

关于我们

在猜你喜欢团队工作,你将要解决的问题域涉及对上亿用户在几十亿商品池中的推荐问题,不仅仅要考虑CTR、成交金额等业务指标,还需要系统化的解决上千万卖家流量博弈的机制设计,以及推荐系统与用户的交互体验。团队内的算法工程师和科学家将与你一起解决世界上规模最大电商平台上最困难的业务技术难题。在过去的几年间,猜你喜欢团队所负责的场景核心用户指标一直保持非常高的增长速度,目前组内成员多来自国内外知名院校和研究所,近年在SIGKDD、AAAI、CIKM、WWW等学术会议上发表多篇论文。欢迎加入我们!邮箱:gongyu.gy@alibaba-inc.com

论文已被接收在SIGKDD 2019 research track oral。

目录
相关文章
目标如何设定:7 分钟重新认识 SMART 原则。
你有过很多目标,但都没达成。于是你找到了一种解决方案——SMART 目标管理原则。它是五个单词首字母的缩写——Specific、Measurable、Achievable、Relevant 和 Time-bound——你的目标必须是具体的、可衡量的、可达到的、和其他目标相关的、有时间限制的。
510 0
|
6月前
|
安全
HASH哈希竞猜游戏系统开发指南详细/规则设计/成熟案例/源码程序
HASH哈希竞猜游戏是一种基于密码学的游戏,参与者需要根据给定的哈希值来猜测对应的原始数值。
|
人工智能 自然语言处理 数据可视化
ACL 2022 | 提升支付宝搜索体验,蚂蚁、北大提出基于层次化对比学习的文本生成框架
ACL 2022 | 提升支付宝搜索体验,蚂蚁、北大提出基于层次化对比学习的文本生成框架
239 0
|
存储 安全 算法
从“Back to Basic”到伙伴优先,阿里云的组合拳总算整明白了
阿里巴巴最近又活跃了起来——不是在天猫,也不是在支付宝,而是在技术端。 5月26日,阿里云发布了2022财年财报,营收首次超过千亿达到1001.8亿元,同时首次实现年度盈利(11.46亿元); 6月13日,阿里云智能总裁张建锋在2022年阿里云峰会上发布年度策略“Back to Basic”,发布了云数据中心专用处理器CIPU,提出要在技术长征路上不懈努力赢取新的突破;
343 0
|
机器学习/深度学习 存储 人工智能
如何让用户找到想要的内容?阿里文娱搜索算法实践
视频搜索是涉及信息检索,自然语言处理(NLP),机器学习、计算机视觉(CV)等多领域的综合应用场景,随着深度学习在这些领域的长足进展以及用户对视频生产和消费的广泛需求,视频搜索技术的发展在学术和工业界都取得了飞速的发展。
如何让用户找到想要的内容?阿里文娱搜索算法实践
|
人工智能 自然语言处理 BI
阿里的问答模型新思路:利用外部知识增加QA答案自然程度
自然语言处理曾被认为是人工智能皇冠上的璀璨明珠,现如今再随着图像识别等技术的长足进步,这颗明珠似乎也显得有些暗淡无光了。但是,一篇来自阿里巴巴研究团队提交到EMNLP 2019的关于自然语言生成文章,似乎为自然语言处理领域重现昔日荣光找到方向
|
机器学习/深度学习 算法 人工智能
IJCAI论文 |打破传统搜索排序,阿里首次提出商品间相互影响的全局排序法
针对传统搜索排序方法的缺陷,本文首次提出了考虑商品间相互影响的全局排序方法。本篇内容已被国际人工智能联合会议(IJCAI)收录,下面,我们一起来共同探讨。
1802 0
如何建立一个内部搜索营销团队
在这个由两部分组成的系列文章的第1部分中,概述了各种内部组织结构,并解释了各自如何帮助建立,发展和维护内部搜索营销团队。 建立,发展和维护内部搜索营销团队对任何组织来说都是一项挑战。 在这个由两部分组成的系列文章的第一部分,“如何建立一个内部搜索营销团队”中,我将解决所有这些问题,并概述不同的组织结构,为内部团队提供最佳机会成功。
1284 0
|
C++ 编译器 C#
绕开“陷阱“,阿里专家带你深入理解C++对象模型的特殊之处
本文介绍了C++对象模型的特殊之处,包括与C兼容的朴素模型,以及能支持多态的虚表模型,同时还带大家了解了构造函数与析构函数相关的一些特性与陷阱。这些内容能够帮助大家更好地学习和使用C++。
3232 0
下一篇
无影云桌面