《我眼中推荐系统走向下一阶段最重要的三个问题》

摘要:
在我看来,推荐系统要进入下一阶段,最重要的三个问题是周国瑞,阿里巴巴的高级算法专家推荐系统和搜索引擎,这一直是热门技术,这些深度学习模型通常使用嵌入技术将原始输入的离散高维信号投影到低秩嵌入空间中,而推荐系统似乎是各种应用技术领域中相对可靠的一种。
我眼中推荐系统走向下一阶段最重要的三个问题
 
阿里巴巴 高级算法专家

推荐系统和搜索引擎一直是比较火热的技术,因为离商业化比较近。她们是互联网领域两个衣着光鲜的美人,小腰一扭就是钱的味道。这几年凭借着两个红利:1. 互联网行业的经济红利、2. 硬件技术突破触发的炒热了深度学习冷饭带来的技术红利,推荐系统的效果有了比较明显的提升。

工业界的技术,从传统的人工先验特征设计组合+线性模型(如logistics regression),逐步过渡到了wide&deep、deepFM、DIN、GRU4REC、DIEN等等深度学习模型。这些深度学习模型普遍采用embedding的技术先将原始输入的离散高维信号投影到一个低秩的embedding空间,然后用不同结构的神经网络去拟合输入信号和输出的关系。神经网络的非线性能力可以部分学习不同输入信号之间的非线性关系,把人力从特征设计解放出来,研发一些新的技术。硬件的发展让我们拥有更多的计算资源,可以收集和利用更多的样本。这些条件让高自由度的深度学习模型普遍能取得更好的效果。

为什么之前不说推荐系统有了比较明显进展,而仅仅说效果上有提升呢?因为从技术层面来说,进入深度学习时代后,推荐系统像是各个应用技术领域中比较玩赖的一个。在深度学习时代,我们大部分情况下只是在利用别的领域诞生出的技术,却没有真正从自有领域出发找出特色的问题并在尝试解决的过程中提出新的技术,也没有从这个商业价值转化这么直接的场景研发出可以推广到其他领域的技术。从社会服务模式来说,推荐系统并没有形成新的服务形态,推荐系统还仅仅是掌握在平台手中,使用推荐系统的用户和推荐内容提供方都没能很好的参与到推荐系统的建设当中。推荐系统真的懂用户要什么吗?有想过能为推荐系统的内容提供者做点什么吗?

简单的说就是这个领域拿了很多钱,却没办太多事。

虽然我对自己从事这个领域的评价,嘴比较臭,但是我想的还是美的。我觉得推荐系统会走入下一阶段,成为一个能为社会提供更好的服务,同时还能源源不断的孕育新技术的好孩子。个人愚见,要步入下一阶段,我们需要研究三个重要问题:

1. 和真实应用场景贴近的统一benchmark。我们需要一个工业级、可以迭代真实应用场景技术的数据集。

2. 推荐系统的可解释性。在我看来可解释性重要的不是指导研究人员之后怎么迭代方法,而是增加透明性,让使用推荐系统的用户和为推荐系统提供内容的生产者能看得懂推荐系统,能参与进来。

3. 算法对系统数据的Confounding问题。可以简单理解为反馈循环(Feedback Loop)问题,简单来说就是算法会决定推荐系统展示给用户内容,从而间接的影响了用户的行为。而用户的行为反馈数据又会决定算法的学习。形成一个循环。

数据集

统一可迭代的数据集对一个领域技术发展的推动作用不言而喻。图像领域从mnist、cifar到ImageNet等等,这些开放的数据集为从业者提供了公平迭代的土壤。每个人有自己的想法都可以去尽力尝试,同时自己的想法有统一的标准可以验证,技术自然百花齐放。

反观推荐系统,大家迭代的数据集都不一样,数据集一样处理方式不一样,很难保证我们report出来的是一个可行的方法,而不是让这个方法可行的实验setting。还有一个比较大的问题是现在开放的数据集规模都和真实工业场景使用的规模相去甚远。推荐系统的真实场景很多问题本就是在真实规模的数据上才特有存在的。学术界和工业界在不同的数据上迭代,这就让产出的方法到真实应用间还存在着巨大的天然鸿沟。我还记得我在找实习的时候和面试官讨论问题,他们经常都会说出一句“工业界不是这样的,你的这个想法太天真”。现在我自己在工业界,我能认识到学界和工业界的区别,但是我想我们能尽量部分缩小这个鸿沟。至少让更多的人有机会参与到贴近实际应用场景的迭代中来。提供一个工业级的开放数据集,让更多的力量参与进来,总会碰撞出一些新的想法。同时大家提出的方法可对比,也就能一步一步的把技术推向更高。工业界把自己特有的问题通释化,让外界的人参与进来分担压力,自己也就能投入更多精力去攻克那些暂时还不可通释化的问题。可能会比说一句“工业界不是这样的”好。

当然要开源这样的一个数据集也面临特别的挑战,如何保护用户的隐私?大规模的数据集如何维护?如何让大家有能力使用这样的数据集等等... 虽然困难,但是我最近和一些同事已经在计划推进尝试开放这样的一个数据集。我相信也有很多同行也在规划类似的工作,最后我们总会有一个可以让大家公平有效迭代的土壤。

可解释性

推荐系统目前做的事情是把内容(如商品、新闻、音乐等)和用户联系起来,让用户更高效的接触对自己有意义的内容。我们用 [公式] 来表示某个商品,其中 [公式] 一共有 [公式] 个商品,[公式] 来表示某个用户,其中 [公式] 一共有 [公式] 个用户。同时用 [公式] 表达将[公式]推荐给 [公式] 产生的价值(可以是点击成交等可直接量化的指标,或者是用户的满意度等)。现在推荐系统做的事情是通过预估 [公式]来决定如何在有限的推荐机会中最大化总体的推荐价值 [公式] , 其中 [公式] 代表推荐系统给用户 [公式] 选取的推荐内容集合。我们的目标其实是让推荐产生的价值更大,但是目前我们的推荐系统局限于通过预估 [公式]来决定推荐给用户的[公式] ,仅仅从分配推荐机会的角度来优化推荐价值。

可是这个游戏的参与方不仅仅是推荐系统,还有为系统提供内容的内容生产者,以及用户。如果推荐系统仅仅是分配流量,那么它本身能创造的价值有限,为什么不能让内容生产者和用户参与一起创造新的价值,做大这个蛋糕呢。如果内容生产者能提供更优质的内容,是不是总体的推荐价值会变大。推荐系统目前预估推荐价值 [公式]很大程度上依赖用户的反馈,如果用户能提供更真实,更准确的反馈是不是能更准确的预估推荐价值 [公式]从而提升总体的推荐价值。如果我们在建设推荐系统的技术时仅仅局限于平台自己如何精准的预估[公式],那么总体的推荐价值是有上限的。我们需要的是寻找如何让内容生产者和用户参与到优化推荐系统的桥梁。

最近几年,在如何更精准的预估推荐价值 [公式]上,有不少有效的模型被提出(大部分是深度学习的方法),但是这些模型也越来越黑盒化了。不仅仅是用户和内容提供者不明白推荐系统推荐的逻辑,就连做这些模型的工程师、把控推荐系统平台的人也不了解每一次推荐的逻辑。面对这样一个黑盒的系统,内容提供方和用户不能理解,如何能很好的参与进来呢。

有意思的是即使在这样一个黑盒的推荐系统下,内容提供方和用户其实是有意识或者有欲望想参与建设更好的推荐系统的。不过由于目前系统的黑盒特性,导致大家不知从何入手。举几个例子。从内容生产者来说,我们以电商为例,大家可以看一下淘宝上那些商品的“标题”。

《我眼中推荐系统走向下一阶段最重要的三个问题》第20张
 
随机选自淘宝场景,这些商品的标题,是内容生产者(商家)更多为了写给用户看的呢,还是写给推荐系统看的呢?

这些标题,在简短的标题中,出现了大量的属性词,可读性并不强。很多时候这些标题可能承载了商家通过标题来影响推荐系统从而获取更多的流量的期望。从用户角度来说,我们就以豆瓣为例,大家对内容是有很强的评价意识的。只是很多场景,我们可能只能通过用户的点击之类的信号来建模推荐价值 [公式]。这个时候我们会研(bao)究(yuan)用户的点击信号是带有大量噪声的。但是用户又能怎样呢?是不是很多时候是我们展现给用户的内容具有误导性呢(想象一下商品推荐场景的美女图片)?

为什么可解释性可能是让内容生产者和用户参与到优化推荐系统的桥梁呢?想象一下,如果我们的推荐系统不仅仅是建模了推荐价值 [公式],而是我们真正建模了用户的兴趣,且这个兴趣我们能白盒化的给出一些人能理解的解释。推荐系统可以实时的去预估未来用户的兴趣。那么如果这些兴趣不再是一串无法理解的数字(embedding),如果是人类可以理解的兴趣,比如比较简单的文字标签。这样一些人类可以理解的兴趣是不是可以指导内容生产者去生产更满足用户需要的内容呢。而更丰富更满足用户需要的内容自然会将整个系统的推荐价值推到更高。同时推荐系统推荐某个商品的逻辑,是不是可以显式的透传给用户,让用户给出对这个推荐逻辑的反馈,而不是仅仅给出对推荐结果的反馈。让我们能更接近感知用户真实的兴趣。这样推荐系统的学习也有可能变得更精准。这两个只是我比较局限的思考给出的两个例子。基本的逻辑是,让推荐系统变得白盒化,或者有白盒化的能力,让内容生产者和用户的力量一起加入到推荐系统的优化中来。而不是仅仅推荐系统自说自话,让这个系统变得越来越不可琢磨,不可理解,让用户和内容生产者都无从入手。

算法对数据Confounding

先用一张简图介绍一下反馈循环(Feedback Loop):

《我眼中推荐系统走向下一阶段最重要的三个问题》第23张算法决定了模型,模型决定了推荐的结果,推荐的结果会影响用户的决策和行为,最后用户的行为数据又回到影响算法训练出的模型。算法、平台、用户整个形成了一个反馈的循环。

简单来说,算法对数据的confounding就是算法会改变了整个系统能观测到的数据分布,而feedback loop导致算法永远在一份已经被自己confunded(混淆)过的数据上进行训练和观测,无法跳出这一循环。甚至有很大的可能会在这个循环中让整个系统逐步收敛,所能观测的数据分布越来越局限,从而引发一些列问题。

举个例子。有一小部分用户part A,他们的喜好很特别,但是现有算法无法很有效的将part A和其他大部分用户part B区分开。那么这些用户的数据无法很好的影响算法的训练,导致模型最终决定了推荐系统给part A推荐的结果和part B推荐的结果一样。part A的用户不喜欢这些推荐结果,给出了负向的反馈,然而推荐系统的优化目标是整体的准确率或者收益,这部分用户的反馈就被忽视掉,模型继续往part B所在的那部分优化。慢慢的part A用户和平台的交互可能变得越来越少,最终推荐系统成功的挤走了这部分用户。这个时候,即使有一个算法能给part A用户提供好的推荐结果,它也再没有机会为part A的用户服务了,也没有机会证明自己。而这一切发生得是很隐蔽的,可能系统都没意识到自己丢失了这部分价值。

从道德上讲,这样对少数派的忽略是不公平的。从商业价值上讲,可能短期看上去仅仅失去占比很少的少数派代表的价值,然而如果我们的系统这样循环下去,其实是在源源不断的失去一小部分价值,累积起来是非常大的损失。算法对数据的confounding让系统观测的数据分布逐步收敛,让整个系统的收益边界不断缩小,慢慢陷入无法迭代提升的境地。

可能有同学会觉得这就是一个简单的系统需要explore问题。然而推荐系统涉及到商业价值,explore变得不是这么简单。我们需要:1. 衡量explore带来的收益和成本 2. 高效的explore方法。1和2在学术界都有非常多的研究,但是在一个快速迭代的工业系统中,这两个问题变得相当艰难。这要求我们必须在很短的周期内explore产生收益并可以衡量explore的效果,不然就得拥抱系统的变化,很多时候可能还得拥抱人事组织的变化 : )

总结

如果把优化推荐系统的准确率是一个一阶梯度learning方向,可能它吸引了我们过多的精力。优化推荐系统,可以从更多的视角来推动。统一的benchmark、可解释性(透明化)、算法对数据confounding这几个问题的推动可能更像是一种更上层对推荐系统meta-learning。当然了,推荐系统研究发展的环境和氛围并没有我前面表达的那么悲观,还是有很多人在这个领域提出了很多有趣的想法,在一些很tough的问题上持续的努力。最后和大家一起共勉,希望我们能见到更公平、更高效、更满足用户时刻变化需要的推荐系统。

发布于 2019-08-26

免责声明:文章转载自《《我眼中推荐系统走向下一阶段最重要的三个问题》》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇mybatis generator 生成带中文注释的model类关于鼠标一上内部图片移动的小效果下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

Windows Server 2008 R2 备份与恢复详细实例

Windows ftp服务可以在百度内置,非常简单。)1.首先安装windows server 2008R2的备份功能。查找Windows的“服务器管理器”。下图显示了我的服务器的情况。双击它。备份完成后,我们卸载qq并删除磁盘F的数据。Linux服务器在没有密码的情况下构建Samba登录,并使用yum进行安装。...

基于智能网卡(Smart Nic)的Open vSwitch卸载方案简介

SmartNic技术的初衷是以比普通CPU低得多的成本支持各种虚拟化功能,如sriov、overlay/decap和卸载一些vSwitch处理逻辑。目前,业界还没有完美的SmartNic解决方案来解决传统的vSwitch性能瓶颈,每种解决方案的实施方式也各不相同。没有统一的解决方案。图1.不同SmartNic架构的比较。2.基于SmartNic的OVS卸载方...

input框输入金额处理的解决办法

最近,已经启动的项目在删除输入输入量时突然出现问题。各种在线搜索都没有找到你想要的。今天,我将以react框架为例进行代码贡献。我会写下需求和解决方案,希望对我的朋友有用。如果有更好的方法实现它,请给我一些建议!”在“:”下;n=数学。防抱死制动系统;vars=“”;对于{s+=.replace;}S=S||“整数”;n=数学。地板对于{varp=“”;对于...

微信小程序生成带参数的二维码(小程序码)独家asp.net的服务端c#完整代码

1) 我第一次使用wx。小程序端请求调用API,发现这是一个坑!@-_~Page:'pages/index/index',//在此处填写要跳转到的小程序页面。你不能在它前面添加/oh。发布后必须为1024页//小程序代码的边长,以像素为单位,范围[2801280]},标头:{'content-type':“application/json;charset=U...

IntelliJ idea设置显示错误代码提示

idea默认关闭自动编译,所以一些编译错误只有在编译的时候才会提示,例如修改了引用类。按图中设置打开自动编译:注意:idea默认打开省电模式,自动编译在省电模式下被禁用,所以需要在file˃powersavemode关闭省电模式。...

利用油猴插件实现全网VIP视频免费看

利用油猴插件实现全网VIP视频免费看第一步:首先打开谷歌应用商店搜索tampermonkey安装这个插件第二步:在百度搜索框搜索油猴可以看到以下页面,点击进入。下载谷歌上网助手解压后,将后缀为crx的文件拖入即可。之后注册一个谷歌上网助手账后登录即可进入谷歌应用商店油猴插件...