推荐系统中比模型结构更重要的是什么?[附阿里盖坤,朱小强留言]

推荐系统中比模型结构更重要的是什么?[附阿里盖坤,朱小强留言]

这里是「王喆的机器学习笔记」的第二十篇文章,之前的专栏文章更多从技术的角度讲解了推荐系统模型的主要结构,以及Embedding等深度学习推荐系统的主要技术点。今天这篇文章我们希望讨论的是,“除了推荐系统模型结构等技术要点,有没有其他更重要的影响推荐系统效果的要素?

有解决推荐问题的“银弹”吗?

在很多同行发给我的咨询问题中,经常会被问及哪种推荐系统模型的效果会更好。诚然,推荐系统模型结构对于最终的效果来说是重要的,但真的存在一种模型结构是解决推荐问题的“银弹”吗?

要回答这个问题,我们可以先分析一个模型的例子——阿里最新的推荐模型DIEN(Deep Interest Evolution Network 深度兴趣进化网络),图1 是阿里DIEN的模型架构图。

图1 阿里的CTR预估模型 DIEN

如果去掉架构图中彩色的部分,模型其实是一个加入Attention机制的经典深度学习网络。而彩色的部分就是所谓的兴趣进化的过程。首先基于行为层(Behavior Layer)的用户行为序列,在兴趣抽取层(Interest Extractor Layer)抽取出抽象的用户兴趣,再在兴趣进化层(Interest Evolving Layer)利用AUGRU序列模型模拟兴趣演化的过程。

模型提出以来,有不少同学向我提出过类似问题说

王老师,我们应用了阿里的DIEN模型,但效果不好,你觉得会是什么原因?是不是Embedding层的维度不够,是不是应该再增加兴趣演化层的状态数量?

所有问类似问题的同学都默认了一个前提假设,就是在阿里的推荐场景下work的DIEN模型理应在你的应用场景下同样work。然而,这个假设真的合理吗?DIEN模型是推荐系统领域的“银弹”吗?

答案必然是否定的。做一个简单的分析,既然DIEN的要点是模拟并表达用户兴趣进化的过程,那模型应用的前提必然是你的应用场景存在“兴趣的进化”。阿里的场景非常好理解,用户的购买兴趣的确在不同时间点有变化。比如用户在购买电脑后一定概率会购买电脑周边产品,用户在购买某类型的服装时会一定概率选择搭配的其他服装,这些都是兴趣进化的直观例子。

DIEN在阿里场景能够work的另一个原因是用户的兴趣进化路径能够被阿里的数据近乎完整的保留。因为作为中国最大的电商集团,阿里巴巴各产品线组成的产品矩阵能够几乎完整的抓住用户购买兴趣迁移的过程。当然,用户是有可能去京东、拼多多购物从而打断阿里的兴趣进化过程,但统计意义上,大量用户的兴趣进化过程还是可以被阿里的数据体系捕获。

所以DIEN有效的前提应是你的应用场景满足两个条件:

  1. 应用场景存在“兴趣的进化”;
  2. 用户兴趣的进化过程能够被你的数据完整捕获到。

如果二者中有一个条件是你不具备的。那么DIEN大概率在这样的场景下不会带来较大的收益。

举个例子来说,笔者是做流媒体平台推荐系统的,用户既可以选择我们自己的内容,也可以选择看Netflix、YouTube或者其他流媒体的内容(图2是流媒体平台不同的频道列表)。而一旦用户进入Netflix或者其他第三方应用,我们是无法得到应用中的具体数据的。在这样的场景下,我们仅能够获取到用户一部分的观看、点击数据,抽取出用户的兴趣点都是不容易的,谈何构建用户的整个兴趣链条呢?即使勉强构建出兴趣链条,也是错误的兴趣链条。

图2 流媒体平台的不同频道

在这样的应用场景下,DIEN适合成为我们推荐系统模型的主要架构吗?答案是否定的。我们通过实验也证明了DIEN在此场景下容易产生过拟合。如果在此场景下仍把模型效果不佳的主要原因归咎于参数没调好、数据量不够大,无疑有舍本逐末的嫌疑。相比这些技术原因,首先理解你的用户场景,熟悉你的数据特点才是最重要的。

什么才是比推荐系统模型结构更重要的东西?

到这里,我们也基本可以给出开头问题的答案了——在构建推荐系统模型的过程中,从应用场景出发,基于用户行为和数据的特点,提出合理的改进模型的动机才是最重要的。

换句话说,推荐系统模型的结构不是构建一个好的推荐系统的“银弹”,真正的“银弹”是你对用户行为和应用场景的观察,基于这些观察,改进出最能够表达这些观察的模型结构。

我们用三个例子解释一些这句话。

一、Netflix对用户行为的观察

去年我参加Netflix的RPS workshop,Netflix在做一项推荐系统的改进,就能够很好的体现Netflix对用户行为的观察。

众所周知,Netflix是美国最大的流媒体公司,其推荐系统会根据用户的喜好生成影片的推荐列表。除了影片的排序外,最能够影响点击率的元素其实是影片的海报预览图。举例来说,一位喜欢马特达蒙的用户,当看到影片的海报上有马特达蒙的头像时,他点击该影片的概率会大幅增加。Netflix的数据科学家在通过AB Test验证这一点后,着手开始对影片预览图的生成进行优化(如图3),以提高推荐结果整体的点击率。

图3 Netflix不同预览图的模版

在具体的优化过程中,模型会根据不同用户的喜好,使用不同的影片预览图模版,填充以不同的背景、字体。通过使用简单的线性contextual bandits探索与利用模型来验证那种组合才是最适合某类用户的个性化海报。

在这个问题中,Netflix并没有使用复杂的模型,但CTR提升的效果是10%量级的。远远超过改进推荐系统模型结构带来的收益。这才是从用户和场景出发解决问题。

二、观察用户行为,在模型中加入有价值用户信息

再举一个例子,图4是某Smart TV的主页,每一行是一个类型的影片。但对于一个新用户来说,是非常缺少点击和播放这类正样本的。我们能否找到一些其他的有价值的信息来解决数据稀疏问题呢?

图4 捕捉包含关键信息的用户行为

这就要求我们回到产品中,把自己置身于用户的角度去理解这个问题。这时你不难发现一个非常有价值的信号。针对这个用户界面来说,如果你对某个类型片感兴趣,必然会向右滑动鼠标或者遥控器(如图4中红色箭头所指),去找这个类型下面更多的影片,这个滑动的动作很好的反应了用户对于某类型影片的兴趣。

引入这个动作,无疑对构建用户兴趣向量,解决数据稀疏问题,进而提高推荐系统的效果有正向的作用。而引入更多有价值信息带来的收益也远远高于改进模型结构。

三、阿里DIN模型的改进动机也源于用户行为的观察

最后一个例子我们回到阿里的推荐系统模型,大家知道DIEN的前身是DIN(深度兴趣网络)。DIN的基本思想是将attention机制跟深度神经网络结合起来(如图5所示)。

图5 阿里的DIN模型

简单直观的来说,DIN在经典的深度CTR模型的基础上,在构建特征向量的过程中,对每一类特征加入了一个激活单元(Activation Unit),这个激活单元的作用类似一个开关,控制了这类特征是否放入特征向量以及放入时权重的大小。那这个开关由谁控制呢?它是由被预测item跟这类特征的关系决定的。也就是说,在预测用户u是否喜欢商品i这件事上,DIN只把跟商品i有关的特征考虑进来,其他特征的门会被关上,完全不考虑或者权重很小。

举例来解释DIN的工作原理,比如模型希望预测一个用户喜不喜欢看“复仇者联盟”,在构建用户的特征向量的时候,我们希望参考一下用户有没有看过“美国队长”的历史记录,但我们完全不关心用户看过没有“动物世界”,因为加入“动物世界”这类跟“复仇者联盟”不相关的特征,可能会让用户的特征向量丧失特殊性。

那么阿里妈妈的工程师能够提出将attention机制应用于深度神经网路的想法是单纯的技术考虑吗?

在跟论文作者交流之后,我发现他们的出发点仍然是用户的行为特点,因为天猫、淘宝作为综合性的电商网站,只有跟候选商品相关的用户历史行为记录才是有价值的。基于这个出发点,引入相关商品的开关和权重结构,最终发现attention机制恰巧是能够解释这个动机的最合适的技术结构。

在我之前专栏文章的讨论中,DIN两位原作者、阿里妈妈的lead 盖坤, @朱小强 也肯定了这样的出发点。这里附上二位的留言,以供大家参考。

如果算法工程师们真的把自己当作一个“调参师”,“炼金术士”,仅仅专注于是否加dropout,要不要更改activation function,需不需要增加正则化项,修改网络深度和宽度。是不可能做出真正符合应用场景的针对性改进的。

结语

很多业内的朋友都说做CTR模型、做推荐系统就是“揣摩人心”,这句话我不能说完全赞同,但却也一定程度上反应了这篇文章的主题——从用户的角度思考问题,构建模型

当你已经有了几年工作经验,对机器学习的相关技术已经驾轻就熟了的时候,反而应该从技术中跳出来,站在用户的角度,去深度体验他们的想法,去发现他们想法中的偏好和习惯,再用你的机器学习工具去验证它, 模拟它,我想你会得到意想不到的效果。


按惯例跟大家讨论一个问题,希望大家能分享自己的观点,讨论出真知:

  • 在实践中,你认为改进模型结构和理解用户行为哪个更重要,他们的关系是什么?你有没有过前沿的、复杂的模型不起作用,反而使用简单模型,甚至是非机器学习的方法解决优化问题的例子?欢迎分享你的经验。

最后欢迎大家关注我的微信公众号:王喆的机器学习笔记wangzhenotes),跟踪计算广告、推荐系统等机器学习领域前沿。

想进一步交流的同学也可以通过公众号加我的微信一同探讨技术问题,谢谢。


本文亦收录在我的新书「深度学习推荐系统」中,这本书系统性地整理、介绍了专栏中所有的重点内容,如果您曾在「王喆的机器学习笔记」中受益,欢迎订阅,谢谢知友们的支持!

编辑于 03-24

文章被以下专栏收录