写点什么

打造工业级推荐系统(十):如何构建可解释的推荐系统

  • 2020-02-29
  • 本文字数:11349 字

    阅读完需:约 37 分钟

打造工业级推荐系统(十):如何构建可解释的推荐系统

推荐系统的目标是为用户推荐可能会感兴趣的标的物。通过算法推荐达到节省用户时间、提升用户满意度、为公司创造更多的商业价值的目的。要想达到这个目的就需要让用户信任你的推荐系统,只有信任了,用户才会经常使用推荐系统。那么我们怎样做到让用户信任呢?一种比较好的方法是为用户推荐标的物的同时给用户提供推荐的理由,向用户解释清楚是基于什么原因给他推荐的。那怎样在推荐的同时提供推荐的理由呢?这就是本文的主题。下面作者会给大家提供一套构建可解释推荐系统的策略和方法。


本文会从可解释性推荐系统简介、构建可解释性推荐系统的方法、常用工业级推荐产品的推荐解释、更好的理解和落地推荐解释需要思考的问题、构建可解释性推荐系统面临的挑战与机遇等 5 个部分来讲解。希望读者读完本文后对可解释性推荐系统有一个大致了解,并且知道有哪些方法可以用来构建可解释性推荐系统。

一,可解释性推荐系统简介

1. 什么是推荐解释

所谓推荐解释,就是在为用户提供推荐的同时,给出推荐的理由。人类是一个非常好奇的物种,不满足于只知道结论,一定会对引起结论的原因感兴趣,往往特别想知道个中的理由。小孩从会说话时起就会问各种为什么。对社会和环境的好奇,才会引起人类的探索欲,从而更好的理解和认知这个世界,这可能是生物进化的自然选择吧。


在现实生活中,我们经常会为朋友做推荐或者让别人帮我们推荐,比如推荐旅游地、推荐电影、推荐书籍、推荐餐厅等。现实生活中的推荐,大家都会给出推荐原因的,比如推荐餐厅,我们会说这家环境好、好吃、卫生等等。


对于互联网上的推荐产品,相信大家不陌生。你在亚马逊上买书时,系统会给你推荐书,你在头条上看新闻时,系统会为你推荐其他的新闻。随着移动互联网的发展和成熟,个性化推荐无处不在,变成了任何一个 toC 互联网公司的标配技术。下面图 1 是我们公司一个推荐产品,“看过该电影的人还喜欢”就是一类推荐解释。



图 1:互联网视频行业的推荐解释


其实解释可以拓展到更广泛的互联网业务场景中,比如搜索中的高亮显示,让用户一眼就可以看到展示的搜索内容跟用户输入的关键词的联系,也算是一种解释。

2. 推荐解释的价值

我们在为别人提供推荐时如果给出推荐的理由,会增加别人的认可度和接受度,没有解释和理由的推荐是缺乏足够说服力的。


互联网上的虚拟物品的推荐,如果能够做到像线下推荐那样,不光给出推荐并且能够提供推荐的解释,说明推荐的原因时,就可以提升推荐系统的透明度,还能够提升用户对推荐系统的信任度和接受度,进而提升用户对推荐产品的满意度。


很多特殊行业,是必须要对算法模型具备解释能力的,比如金融、医学、风控等,不然用户是无法接受你的推荐的。这里举个例子说明解释的重要性和必要性:一个用户得了很严重的病,你推荐一个药物给他,你说这个药物疗效很好,但是说不出它为什么有效,用户是不会接受你的推荐的。

3. 互联网推荐产品的推荐解释模型

对于互联网的推荐模块,我们可以在推荐业务流(不熟悉的读者可以参考《推荐系统的工程实现》)的哪些阶段为用户生成推荐解释呢?我们从推荐业务流的次序上可以将推荐解释分为在模型训练过程中生成解释(事先解释)和推荐结果生成后做解释(事后解释),具体参考下面图 2:



图 2:在推荐算法的不同阶段做推荐解释


其中,在模型训练过程中生成推荐解释又分为两种情况:一种是将推荐和解释看成是两个优化目标,通过协同训练来同时优化两个目标,另一种情况是解释过程嵌入到推荐过程中,解释和推荐过程耦合在一起,融为一体,集成为一个模型训练。往往这类解释方法会让整个系统更加复杂,让整个建模过程难度加大,训练消耗的资源更多,训练时间更长,但是可以提升整个模型的可解释性。


在计算推荐结果后生成推荐解释,基于给用户的推荐结果,从中找出用户跟推荐标的物之间的某种内在联系,基于该关系做推荐解释。该方案基本将推荐过程和解释过程解耦,工程实现上更加简单,也更加容易让用户理解和接受。

4. 推荐解释的形式

推荐解释可以是具备强烈的因果关系的,也可能是逻辑性没那么强的“牵强附会”。比如,“因为你喜欢 A,而 A 和 B 很相似,所以给你推荐 B”就是逻辑很严密的一种推荐解释。而“因为今天下雨,所以给你推荐 A”这就是一类比较随意的推荐解释。


推荐解释的展现形式可以是文字、图片、视频、音频等。文字是最常用的方式。不同的产品形态可以采用不同的形式,比如如果是电台,可以采用音频的方式给用户做推荐解释。


推荐系统一般会为用户生成一个标的物列表。在具体做推荐解释时,可以为每个推荐的标的物做不同的解释,当用户聚焦在推荐的标的物时,可以展现出推荐解释的理由,或者对这一系列标的物做统一一致的解释,上面图 1 就是对整个推荐模块做统一的推荐解释。

5. 推荐解释的现状

不论是推荐系统的工程实践还是学术研究,在推荐解释上的研究和投入较少,在真实的推荐产品落地上也不太关注推荐解释。之所以出现这种情况,主要是大家都将精力放到提升推荐系统的精准性上,比较少的站在用户的角度来思考问题。对用户来说,他不光希望给出推荐,还要说明为什么这么给他推荐,只有这样用户才更加认可和信赖推荐系统。


有很多机器学习算法可以用于推荐系统,有些算法模型解释性好,有些模型是很难做解释的。如 logistic 回归,线性模型,是很好做解释的,而深度学习目前基本是一个黑盒,很难做解释。不是所有人都是算法专家,能够理解得了推荐原理的,这就要求在必须要求做解释的业务场景,采用易于解释的方法。比如金融反欺诈领域,一般就是用的 logistic 回归模型,虽然它的效果不一定比深度学习方法好,但是很容易解释最终结果和特征之间的依赖及变化关系。


推荐系统是一个非常复杂的工程体系,包含非常多的功能模块,因此设计一个可解释的推荐系统不是一件简单的事情,需要我们投入足够多的精力和聪明才智。下面我们就来说明怎么对推荐系统做解释。

二,构建可解释性推荐系统的方法

推荐系统涉及到用户、标的物、用户对标的物的操作行为(点击、购买、观看、浏览等)三要素,而标的物是具备一些显式的特征的,用户对标的物的行为代表了用户某种程度对具备该特征的标的物的兴趣。基于上面的分析,推荐系统的解释可以有如下三种具体实现方案。参考下面图 3,可以更好地帮你理解下面的三种解释方案。



图 3:基于推荐系统中标的物与用户的关系的三种可行的推荐解释方案

1. 基于用户关系来做推荐解释

我们可以通过各种方式建立两个用户之间的相互关系,如果我们能够挖掘出这种联系,就可以用这种关系做推荐解释。下面是常见的三种基于用户关系做推荐解释的方法。

a 基于真实社交关系做推荐解释

对于社交类产品,如微信、脉脉等,好友关系是可以很自然地用于推荐解释的。微信“看一看”中的“朋友在看”就是一种基于社交关系的推荐解释(见下面图 4)。因为你的好友看过,所以你至少对该推荐不会反感,也一眼就知道微信为什么给你推荐这个,这种推荐解释非常直接、一目了然,无需多解释,并且朋友的亲密程度越高推荐被用户接受的可能性越大。



图 4:微信“看一看”中基于社交关系的推荐解释,打码的地方就是朋友点过“在看”的

b 基于用户的行为建立两个用户之间的关系,进而做推荐解释

对于非社交类产品,我们可以通过用户在产品上的行为来构建用户关系,比如两个用户喜欢同样的标的物,有同样的行为特征,我们可以认为这两个用户是相似的用户,虽然可能他们根本不认识。我们可以利用“跟你兴趣相似的用户也喜欢 B”或者“喜欢 A 的用户也喜欢 B”等文字描述来做推荐解释。上面的图 1 就是这类推荐解释。

c 基于用户画像做推荐解释

如果我们对用户有比较好的了解,构建了一套完善的用户画像系统,基于用户画像我们就可以找到与该用户相似的用户,这样就可以利用 b 中的方式来做推荐解释。比如,美团在给你推荐餐厅时,会基于你当前所在的位置来做推荐,你当前所在的位置就是一类画像信息。

2. 基于标的物相似关系来做推荐解释

如果用户喜欢某个标的物 A,标的物 A 跟 B 又相似,那么我们就可以利用 A 与 B 的相似性来做推荐解释,这时解释的逻辑就是“因为你喜欢 A,A 和 B 是相似的,所以我们猜你也喜欢 B”。


我们可以有如下两类方法来构建标的物之间的相似关系:

a 基于内容特征构建标的物之间的关系

例如视频的标题,演职员,标签等 metadata 信息。我们可以利用 TF-IDF、主题模型等算法构建标的物之间的相似关系。

b 基于用户的行为构建标的物之间的关系

基于用户对标的物的操作(观看、购买、点击等)行为,利用嵌入模型可以构建标的物之间的相似关系。另外,可以从用户的评论信息中提取出标签、关键词等信息,利用 a 中的方法构建标的物之间的相似关系。

3. 基于标签来解释

从上面图 3 可以看到,标的物是包含一些特征标签的,可以基于用户对标的物的行为为用户打上偏好标签。因此我们可以通过显示的标签来建立用户和标的物之间的联系,进而通过这些标签来做推荐解释,具体的实现方案有如下 4 类。

a 通过标签建立用户与标的物之间的关系,从而做推荐解释

用户喜欢什么标签,他自己肯定是知道的,他在产品上的行为就是他真实兴趣的反馈。比如用户喜欢看科幻、恐怖电影,那么“科幻”、“恐怖”就是用户的兴趣标签。那么我们就可以将这类电影推荐给用户。我们只要以文字的形式,在推荐中展示这些标签,就起到了推荐解释的作用。


下面图 5 是电视猫电影频道首页的主题推荐,基于用户的标签偏好来为用户生成推荐结果,这里只是将标签直接展示出来(见下图的红色椭圆圈)作为推荐解释,其实可以有更好的方式,比如“因为你经常看爱情电影”就是一句较完整的推荐解释话术,比单纯展示标签更有说服力。



图 5:利用标签做推荐解释的主题推荐

b 通过用户自身的标签做推荐解释

用户自身是具备一些标签的,比如年龄,学习,受教育程度等,我们可以利用这类标签来生成推荐解释。比如你是金牛座,“金牛座的人都爱看电影 A”就是这类推荐解释,这类解释可能比较牵强。

c 基于标的物自身的标签做推荐解释

与 b 类似,标的物自身的一些标签也可以作为生成推荐解释的理由。比如,这箱水果很便宜,便宜就是水果的标签,系统在推荐给你时,可以用“这箱水果很便宜,所以推荐给你”做为推荐解释。这类推荐不涉及用户行为,直接基于标的物特性做推荐解释。

d 基于用户浏览标的物后的评论做推荐解释

很多互联网产品都具备评论的功能,如果将每个标的物的评论信息收集起来,通过 NLP 技术处理,从中提取出关键词标签,并根据用户评论的正负反馈及评论次数,可以给提取的关键词赋予权重,那么我们就可以利用这些权重大的关键词来作为标的物的推荐解释。因为这些关键词标签是用户的真实反馈,往往具备非常好的解释效果。


除了这三类在推荐系统中涉及到的“当事方”作为推荐解释外,我们还可以采用各种其他的推荐解释方式。下面列举几类可行的推荐解释策略。

4. 基于环境来解释

这类基于环境的推荐解释,可以结合时间、天气、地域、用户心情、场所、上下文等各类环境来做推荐解释。比如“你在人民广场附近,给你推荐附近的美食店”、“适合深夜看的电影”等这类推荐解释就是基于环境的解释。

5. 基于科学知识、科学实验结果的解释

有科学证据表明晚上“睡前喝点红酒有助于睡眠”,我们可以用这类被验证或者被大多数人认可的科学知识来作为推荐解释。比如你晚上在浏览淘宝,淘宝给你推荐了一瓶红酒,其实可以用“晚上喝一点红酒、有利于睡眠”来作为推荐解释。

6. 基于权威人士、明星效应的解释

权威人士的观点大家更愿意信任,这就是为什么很多牙膏广告不是请明星,而是一个穿白大褂的医生打扮的人做广告,是为了提升大家对该牙膏效果的认可。同样,明星有很大的光环效应,大众更容易追随。因此,我们可以利用权威人士及明星的这种效应来做推荐解释。比如你女朋友在浏览淘宝看到一条裙子,系统可以用“这款裙子赵丽颖穿起来很好看,所以推荐给你”作为推荐解释。

7. 基于大众行为的推荐解释

人都是有从众心理的,大家都喜欢的,你也喜欢的可能性会很大。基于这个原则也可以做推荐解释,我们可以用标的物被用户喜欢(观看视频、购买商品等)的次数来作为推荐解释的理由。比如“这部电影有 2000 万人看过,所以推荐给你”、“该商品有 589 人购买,所以推荐给你”等。作者最近在淘宝上买了一个防蓝光眼睛,下图中的“总销量:298”其实就是一种推荐解释。



图 6:基于用户行为统计的推荐解释


上面我们介绍完了可行的推荐解释方法,那么下面我们结合工业上的推荐产品形态讲解怎么利用上面的推荐解释方法来做推荐解释。

三,常用工业级推荐产品的推荐解释

作者在《推荐系统的工程实现》第五节中讲到推荐系统在工业上的应用一般有五种范式:完全个性化范式、群组个性化范式、非个性化范式、标的物关联标的物范式、笛卡尔积范式。这五种范式基本囊括了绝大多数推荐产品形态。我们下面分别根据不同的推荐范式来说明怎么做推荐解释。

1. 完全个性化范式

完全个性化推荐范式就是为每个用户生成不同的推荐结果。个性化推荐主要有“基于内容的推荐”、“协同过滤”、“基于模型的推荐”三大类推荐算法。这里我们分别说说怎么对他们做推荐解释。

a 基于内容的推荐

该类推荐算法不依赖于其他用户的行为,只根据用户自己的历史行为,为用户推荐与自己曾经“喜欢过”(播放过的视频、购买过的物品等等)的标的物相似的标的物。这时推荐解释可以基于用户对内容的喜好来做解释。


这类推荐解释是在构建推荐模型时就可以生成推荐解释的,因为我们是基于用户喜欢的标的物相似的标的物来为用户做推荐的。形式上可以描述为“用户喜欢过标的物 A,而 A 跟 B 很相似,所以推荐 B 给用户”。


还有一种形式是从文本信息中抽提出标签,基于标签做内容推荐,而不是直接基于标的物之间的相似关系。形式上可以描述为“用户喜欢具备特征 X 的标的物,而 B 刚好具备特征 X,所以推荐 B 给用户”。常用的形式是主题推荐(参考上面的图 5),将用户最喜欢的标签计算出来,为每个标签关联一个标的物列表,最终形成用户的推荐。Netflix 首页上即是采用这种推荐形式,Netflix 首页的 PVR 算法,在每个用户的首页生成约 40 行推荐,每行是一个主题,这个主题即是用户的兴趣“基因”,可以完美地作为该行推荐的推荐解释语(参考后面的文献 11)。


基于内容的推荐解释采用的策略就是第二部分的 2.a 和 3.a 策略。可以采用事先解释的方法,在构建推荐模型时生成解释。

b 协同过滤

协同过滤是最有名的推荐算法了,算法相对简单,效果还不错,目前在工业界也大量使用。主要分为基于用户的协同过滤和基于物品(标的物)的协同过滤。我们用下图来说明这两类协同过滤算法。



图 7:基于用户的协同过滤与基于标的物的协同过滤


基于用户的协同过滤,先找到与该用户最相似的用户,将相似用户喜欢但是该用户未产生行为的标的物推荐给该用户。可以采用“跟你兴趣相似的人都喜欢 A,所以给你推荐 A”这种方式做推荐解释。即是利用第二部分的 1.a 策略来做推荐解释。可以采用事后解释的方法,在生成推荐结果后给出推荐解释


基于物品的协同过滤,先计算标的物之间的相似度,将与用户喜欢的标的物相似的标的物推荐给用户。我们在构建协同过滤模型时,可以知道待推荐的标的物 A 是跟用户曾经喜欢过的 B 是相似的,所以在做推荐解释时,解释语可以描述为“你曾经喜欢过 B,所以给你推荐相似的 A”。即是利用第二部分的 2.b 策略来做推荐解释,可以采用事先解释的方法,在构建推荐模型时生成解释

c 基于模型的推荐

基于模型的推荐算法有很多,比如 logistic 回归、矩阵分解、深度学习等。像深度学习这类偏黑盒的模型解释性会比较困难,我们这里不做介绍,有兴趣的读者可以参考后面的参考文献。矩阵分解算法原理虽然简单,但是分解后的矩阵包含的隐式特征是很难跟现实中的实体概念对应的,也较难做出推荐解释,这里也不介绍。在这里我只对 logistic 回归推荐算法做推荐解释,他们也是常用的推荐算法模型。

1. logistic 回归的推荐解释

利用 logistic 回归构建推荐算法模型,具体模型如下面公式,其中 p 是用户喜欢某个标的物的概率, 是权重,是需要学习的模型参数, 是特征 i 的值。其中包括 3 大类特征(拿视频推荐来举例),用户相关特征(用户年龄、性别、地域、是否是会员等),标的物相关特征(如导演、演职员、标签、年代、是否获奖、豆瓣评分、是否是会员节目等),其他特征(如用户是否看过该视频、用户是否收藏、是否点赞、用户手机型号等)。我们可以通过下述公式计算待推荐标的物的 p 值来决定是否推荐 A,比如如果 p>0.5(当然可以选择 0.6 等其他值),就认为用户喜欢 A。


当我们训练好 logistic 回归推荐模型后,我们可以用如下方式做推荐解释:


如果给用户推荐了标的物 A,而标的物 A 取值非空的特征为,而对应的权重为,我们可以选择权重最大的那个特征作为给用户推荐 A 的解释。比如权重最大的特征是导演姜文,你可以用“因为你喜欢姜文,该片是姜文拍的,所以给你推荐”作为推荐解释的话术。


logistic 算法的推荐解释采用的策略本质上是 3.a 策略。可以采用事先解释的方法,在构建推荐模型时生成解释。

2. 群组个性化范式

群组个性化推荐,首先会将用户按照某种方法或规则聚类(同一类的用户在某些特性上相同或者相似),得到用户组。我们可以将用户组看成一个个体,可以采用跟上面 1 类似的算法及解释方法,这里不再细说。

3. 非个性化范式

非个性化范式就是为所有用户生成一样的推荐,常见的有排行榜等推荐形态。一般推荐的是热门的标的物或者最新上线的标的物。


这类推荐的解释非常简单,可以直接用“热门推荐”或者“最新款推荐”等话术。用户也非常容易理解和认可。

4. 标的物关联标的物范式

该范式就是当用户访问某个标的物的详情页时,推荐一组可能存在相关关系的标的物。这组标的物可能是跟原标的物相似的标的物。


最常见的产品形态就是相似推荐。如下图就是电视猫上“双重约会”的相似推荐。这里给出的标题是“相似影片”,其实这 4 个字也可以看成是推荐解释。这里如果要对列表中的每个节目做推荐解释,需要生成“双重约会”跟下面推荐的所有节目之间的相似关系。


该范式就是利用第二部分 2 的策略来做推荐解释。



图 8:视频节目的相似推荐


作者最近在亚马逊上买了一本《从一到无穷大:科学中的事实和臆测(中译本) 》,下面就是浏览该书购买后的页面亚马逊给出的推荐。这里可以看到亚马逊给出了两类推荐,“经常一起购买的商品”和“浏览此上面的顾客也同时浏览”。


这两类推荐都属于标的物关联标的物范式,“经常一起购买的商品”和“浏览此商品的顾客也同时浏览”这两句话可以认为是推荐解释语,它是基于用户行为的解释。



图 9:两类标的物关联标的物推荐范式的推荐解释

5. 笛卡尔积范式

笛卡尔积范式的推荐产品形态,为每个用户在每个标的物详情页上给出不一样的推荐列表。所以可以结合完全个性化范式和标的物关联标的物范式的推荐解释策略做推荐。这里不再详细介绍。

四,更好地理解及落地推荐解释需要思考的问题

在构建推荐系统解释时,特别是将推荐解释落地到现实业务中时,会遇到很多问题。要想很好的解决这些问题,真正让推荐解释产生业务价值,需要考虑很多工程落地的事情。下面对可能遇到的问题提供一些参考建议。

1. 需要通过 AB 测试来验证推荐解释的有效性

推荐解释是对推荐产品功能的一种增补或者优化,只要是推荐产品功能的优化都需要验证优化效果,这时就需要做 AB 测试了。可以在具备推荐解释和没有推荐解释之间做 AB 测试,在不同推荐解释方案对比上也需要做 AB 测试。总之,通过设定评估指标,利用 AB 测试来验证指标是否有提升,最终验证推荐解释方案的有效性。

2. 推荐解释强依赖于推荐产品形态,不是任何推荐形态都必须要做解释

推荐解释是强依赖于推荐产品形态的,像相似推荐,是很容易做推荐解释的,而对于个性化推荐就会更难一些。


个人觉得推荐解释是个性化推荐产品的高级功能和特性,拙劣的推荐解释是无法真正促进推荐系统价值提升的。对于个性化推荐直接可以用“猜你喜欢”、“兴趣推荐”这样的词汇(这些词汇也算是一种抽象的推荐解释)来描述你是为用户做个性化推荐,让用户对你的推荐产品形成一种品牌效应。如果推荐效果足够好,用户就能够从推荐列表中找到自己喜欢的东西。效果好的话用户也是愿意经常“光顾”的,没有推荐解释,也不会影响用户对你的个性化推荐产品的认可。特别是当你的产品交互不是那么友好时(比如智能电视上的视频推荐就是通过遥控器交互,交互体验较差),很难在个性化产品中嵌入自然交互的方式,让用户感受到推荐解释的存在。

3. 从对模型解释切换到对用户角度来思考推荐解释

推荐解释可以从两个角度来描述,一个角度是解释你的推荐模型是怎么做推荐的,让用户理解你推荐生成的机制,这类推荐解释对于科研人员及推荐算法开发人员来说是有价值的,可以更好的知道算法的运作原理,它可以帮助我们回答诸如为什么给我推荐这些、怎么改进推荐效果、有哪些数据或者特征可以影响推荐的结果之类的问题。但是,如果解释的过程很复杂,不是“不用动脑经”就能想清楚的,你是无法在用户访问推荐服务时给用户解释清楚的,因为用户都是“懒的”,不愿意去思考复杂的问题。这就引出了另外一个思考的维度,我们在真正做工业级推荐系统的推荐解释时,是需要站在用户角度思考的,毕竟我们做的东西是给用户看的,对用户有帮助,用户觉得好才是真的好。对用户来说,对推荐解释直观易懂是最重要的,用户要能够不加思考就能感受到解释与推荐的标的物之间的外在联系。

4. 推荐解释的“价值观”

我们做推荐解释的意图是什么?即推荐解释的“价值观”是什么?算法是人开发的,因此反映的是背后设计推荐解释算法的人的“价值观”。如果你设计算法是 KPI 导向的,为了提升用户对推荐的点击,你可以用一些哗众取宠的方式来做解释,解释与推荐的标的物也可以没有啥逻辑关系,这种设计哲学有可能短期提升你的 KPI,但是长期一定是不利于你的产品的。我个人推崇的推荐解释的价值观是“辅助用户决策”,什么意思呢?就是真的站在用户的立场思考问题,帮助用户决策,将推荐标的物最真实的一面告诉用户,包括好的一面和不好的一面,不要让用户点击后感受到被骗的感觉。现在很多做公众号运营的人,采用标题党,或者暴露的海报图的方式,确实是“骗”用户进去了,用户可能一时有一点点不爽,这个不爽很微小,不至于让用户马上对你的公众号反感,但是如果每次都是这样,我相信日积月累,“微小的不爽”通过时间的沉淀,一定会爆发出来,最终用户会放弃你的产品。

5. 推荐解释的说服力

其实推荐 5 解释的过程就是一次论证的过程,你将标的物推荐给用户,并且给出推荐的理由,如果用户相信你的理由,用户就会接受你的推荐。所以,我们在做推荐解释时,理由一定是可以支撑结论的,可以让用户很容易感受到这种逻辑推理的关系。同时,理由本身也需要科学客观。只有这样,推荐解释才有说服力。

6. 其他维度的辅助用户决策

除了给出推荐解释理由外,还有很多其他的信息可以辅助用户决策。我们可以从标的物的详情页着手,在详情页增加足够多的关键描述信息帮助用户来判断。对于视频推荐来说,海报图、标题、是否是会员、评分、有多少人看过、年代等信息是可辅助用户做决策的。我们不光是要展示正面的信息、对于不好的消息也要有所体现,如果这些信息可以在海报图上全面的展示出来,就可以快速帮助用户做决策,是否有必要点击进去看看。下图中用红色圈标出的信息及海报图都是辅助用户决策的要素。



图 10:辅助用户决策的信息

五,构建可解释性推荐系统面临的挑战与机遇

为推荐系统生成推荐解释是一个非常复杂的过程,也很有挑战,目前也没有非常有效统一的解决方案。下面是构建推荐解释可能会遇到的问题,以及推荐解释未来的机遇。

1. 混合推荐算法

目前很多推荐算法不是采用单一的推荐算法模型,是用很多模型通过级联或者集成的方式为用户提供个性化推荐,同时在特殊情况下(比如无行为的新用户采用默认推荐、接口请求失败时采用备选策略等)会有一些特殊的处理。这些复杂的现实情况大大复杂化了推荐解释的设计和实现。

2. 实时个性化推荐

随着头条、抖音、快手等信息流/视频流产品大行其道,目前很多产品都会采用近实时推荐策略,更加实时的反馈用户兴趣的变化。这类推荐产品对时效性要求很高,要想在实时情况下给用户做推荐的同时生成推荐理由,对整个系统的设计、处理提出了非常高的要求。

3. 老板/数据产品经理会更关注精准度而不太重视解释性

绝大多数公司老板或者数据产品经理更在乎的是短期指标的提升,很少意识到好的推荐体验会对用户的留存有累积的价值,通过长期的好的推荐解释体验,是可以提升用户对推荐系统的信赖的。由于这种提升需要做大量的 AB 测试及额外的算法开发,往往会被拒之门外。

4. 黑盒推荐算法很难做解释

随着深度学习的流行,有越来越多的公司将深度学习算法应用到推荐系统上,并且产生了非常不错的效果。深度学习最大的缺点是一个黑盒模型,对深度学习模型做出的决策,很难从模型内部的数据交互及处理逻辑给出比较直观易懂的解释。因此,这类推荐模型也非常难给出好的推荐解释,当前可解释的机器学习是学术上一个比较热门的研究课题。

5. 普适的推荐解释框架

从上面的介绍可以看到,推荐解释目前还没有一套完善的框架,基本是不同的算法,采用不同的推荐解释策略,推荐解释是强依赖于具体的推荐算法模型和业务场景的。那么我们是否可以构建一类通用的推荐解释框架,可以适用于一大类或者所有的推荐算法模型呢?这确实是一个非常难并且相当有挑战的问题,也是一个很好的研究课题。

6. 知识图谱做解释

前面讲到推荐系统可以基于标的物、用户、特征为媒介来做推荐解释(见上面的图 3),对这三类媒介之间的关联挖掘得还不够。其实利用知识图谱,打通这三类媒介之间的关联,根据具体情况灵活选择其中最合适的媒介对用户进行推荐解释。这样,我们还可以产生形式更丰富的推荐解释。

7. 生成对话式解释

目前的推荐解释往往形式是预先设定、千篇一律的。这样尽管可以根据用户心理给出解释,但是在沟通方式上还过于呆板,跟日常生活中对话交互式的推荐解释还有很大差距。如果能用生成式模型让推荐系统“生成”一句通顺甚至高情商的话,就可以在与用户互动的过程中进行灵活、多变的推荐解释了。特别是随着 NLP 技术的发展及语音交互场景的开拓,未来语音交互一定是最重要的一类交互方式。到那时,利用推荐系统与人类进行交互式推荐和解释,可以大大提升用户的满意度。

写在最后

本文基于作者多年推荐系统实践经验的理解并参考了相关文章,对推荐系统解释做了较全面的梳理。希望可以帮助读者更好的理解推荐系统解释的原理与背后的】价值,读完后能够利用本文提供的方法去实践推荐系统的解释体系。


推荐系统解释目前是一个偏学术的研究课题(附件是一些关于机器学习及推荐系统解释的材料及论文,有兴趣的读者可以自行学习参考),在工业实践上也没有这么重视。虽然作者以前在真实产品中落地过推荐解释系统,但自认为对这一块还只知道一点皮毛,不当之处在所难免,欢迎大家一起交流探讨。

参考文献

  1. 《interpretable-machine-learning》

  2. Interpretable machine learning- definitions, methods, and applications

  3. Explicit Factor Models for Explainable Recommendation based on Phrase-level Sentiment Analysis

  4. A Reinforcement Learning Framework for Explainable Recommendation

  5. Scalable and interpretable product recommendations via overlapping co-clustering

  6. Building an Interpretable Recommender via Loss-Preserving Transformation

  7. Tagsplanations: Explaining Recommendations Using Tags

  8. Jointly Modeling Aspects, Ratings and Sentiments for Movie Recommendation

  9. Explainable Recommendation Through Attentive Multi-View Learning

  10. Explainable Recommendation:A Survey and New Perspectives

  11. The Netflix Recommender System- Algorithms, Business Value, and Innovation

  12. Neural Attentional Rating Regression with Review-level Explanations


2020-02-29 10:204155

评论

发布
暂无评论
发现更多内容

科大讯飞联袂伯俊科技进军3C零售,构建发展新格局

科技热闻

Github上线仅六天,收获Star超55K+,这套笔记能拿下90%以上面试

Java redis spring 程序员 架构

TDengine在浙商银行微服务监控中的实践

TDengine

tdengine 后端 时序数据库

阿里云视频云,用技术普惠打造平民化“虚拟人”

阿里云视频云

人工智能 阿里云 视频云 数字人 虚拟人

GitHub远程免密连接详解,还顺手解决了RPC失败HTTP413

老表

GitHub RPC HTTP 11月日更

接口文档工具yapi的安装

小鲍侃java

11月日更

看完这篇SpringBoot让我在阿里成功涨薪40%,感谢

Java 编程 程序员 程序人生 springboot

linux lsquic 编译

webrtc developer

网课录屏用什么软件好?Camtasia极简操作,课程重点一目了然

淋雨

Camtaisa

顶会VLDB‘22论文解读:CAE-ENSEMBLE算法

华为云开发者联盟

算法 时间序列 华为云数据库 深度神经网络

你需要知道的 19 个 console 实用调试技巧

CRMEB

CSS JavaScript DOM console crmeb

百度智能云与雅量商业智能携手,加速零售行业智能化升级

百度开发者中心

百度智能云 零售行业

《黑客之道》kali Linux之NMAP高级使用技巧和漏洞扫描发现

学神来啦

Linux 渗透 kali nmap

百度Apollo参编首批汽车信息安全国家标准,跻身车联网信息安全第一梯队

百度开发者中心

Apollo

操作系统——计算机硬件简介

思想者杰克

四种 AI 技术方案,教你拥有自己的 Avatar 形象

阿里云视频云

人工智能 阿里云 计算机视觉 视频云 元宇宙

百度鸿鹄芯片落地首款量产车吉利博越X 智能车机体验惊艳成都车展

百度开发者中心

百度 车联网 鸿鹄芯片

Hexo个人博客快速部署到Gitee&Coding详细教程

老表

Hexo gitee CODING 博客配置 11月日更

牛掰!“基础-中级-高级”Java程序员面试集结,看完献出我的膝盖

Java spring 程序员 JVM hashmap

端开发技术——5个高效的Flutter开发工具

思想者杰克

“智慧粮仓”守卫中国饭碗

ThingJS数字孪生引擎

大前端 物联网 可视化

百度智能云人脸采集SDK通过CFCA权威安全测评

百度开发者中心

安全 sdk

行业白皮书发布!百度智慧城市助力城市“双碳”目标达成

百度开发者中心

人工智能 智慧城市

常用的Nmap脚本及使用实例

喀拉峻

网络安全 信息安全 渗透测试 脚本 nmap

科技热点周刊|ClickHouse 融资 2.5 亿美元、个人信息保护法正式实施、Facebook 改名 Meta

青云技术社区

云计算 facebook 云原生

恒源云(GPUSHARE)_CAN: 借助数据分布提升分类性能

恒源云

深度学习

ReplacingMergeTree:实现Clickhouse数据更新

华为云开发者联盟

数据 事务 Clickhouse 数据更新 OLAP数据库

极客时间【架构实战营】第二期 模块七作业

Geek_91606e

架构实战营

【高并发】开篇:线程与多线程

冰河

Java 并发编程 多线程 高并发 异步编程

万字长文解密数据异构最佳实践(含完整代码实现)!!

冰河

MySQL 数据库 canal 数据同步 数据异构

架构实战营-总结

哈希

打造工业级推荐系统(十):如何构建可解释的推荐系统_移动_Databri_AI_InfoQ精选文章