专栏首页小小挖掘机推荐系统走向下一阶段最重要的三个问题

推荐系统走向下一阶段最重要的三个问题

推荐系统和搜索引擎一直是比较火热的技术,因为离商业化比较近。她们是互联网领域两个衣着光鲜的美人,小腰一扭就是钱的味道。这几年凭借着两个红利:

1. 互联网行业的经济红利

2. 硬件技术突破触发的炒热了深度学习冷饭带来的技术红利,推荐系统的效果有了比较明显的提升。

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

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

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

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

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

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

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

▌数据集

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

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

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

▌可解释性

推荐系统目前做的事情是把内容(如商品、新闻、音乐等)和用户联系起来,让用户更高效的接触对自己有意义的内容。我们

来表示某个商品,其中

一共有 N 个商品,

来表示某个用户,其中

一共有 M 个用户。同时用

表达将

推荐给

产生的价值(可以是点击成交等可直接量化的指标,或者是用户的满意度等)。现在推荐系统做的事情是通过预估

来决定如何在有限的推荐机会中最大化总体的推荐价值

其中

代表推荐系统给用户

选取的推荐内容集合。我们的目标其实是让推荐产生的价值更大,但是目前我们的推荐系统局限于通过预估

来决定推荐给用户的

,仅仅从分配推荐机会的角度来优化推荐价值。

可是这个游戏的参与方不仅仅是推荐系统,还有为系统提供内容的内容生产者,以及用户。如果推荐系统仅仅是分配流量,那么它本身能创造的价值有限,为什么不能让内容生产者和用户参与一起创造新的价值,做大这个蛋糕呢。如果内容生产者能提供更优质的内容,是不是总体的推荐价值会变大。推荐系统目前预估推荐价值

很大程度上依赖用户的反馈,如果用户能提供更真实,更准确的反馈是不是能更准确的预估推荐价值

从而提升总体的推荐价值。如果我们在建设推荐系统的技术时仅仅局限于平台自己如何精准的预估

,那么总体的推荐价值是有上限的。我们需要的是寻找如何让内容生产者和用户参与到优化推荐系统的桥梁。

最近几年,在如何更精准的预估推荐价值

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

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

随机选自淘宝场景,这些商品的标题,是内容生产者(商家)更多为了写给用户看的呢,还是写给推荐系统看的呢?

这些标题,在简短的标题中,出现了大量的属性词,可读性并不强。很多时候这些标题可能承载了商家通过标题来影响推荐系统从而获取更多的流量的期望。从用户角度来说,我们就以豆瓣为例,大家对内容是有很强的评价意识的。只是很多场景,我们可能只能通过用户的点击之类的信号来建模推荐价值

。这个时候我们会研(bao)究(yuan)用户的点击信号是带有大量噪声的。但是用户又能怎样呢?是不是很多时候是我们展现给用户的内容具有误导性呢(想象一下商品推荐场景的美女图片)?

为什么可解释性可能是让内容生产者和用户参与到优化推荐系统的桥梁呢?想象一下,如果我们的推荐系统不仅仅是建模了推荐价值

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

▌算法对数据 Confounding

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

算法决定了模型,模型决定了推荐的结果,推荐的结果会影响用户的决策和行为,最后用户的行为数据又回到影响算法训练出的模型。算法、平台、用户整个形成了一个反馈的循环。

简单来说,算法对数据的 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 的问题上持续的努力。最后和大家一起共勉,希望我们能见到更公平、更高效、更满足用户时刻变化需要的推荐系统。

本文分享自微信公众号 - 小小挖掘机(wAIsjwj)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-08-30

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 推荐系统评价:什么是好的推荐系统

    什么是好的推荐系统?佛陀没有定义过,人类也没有定义过。但一个系统的好坏往往需要全链路的评定,贯穿于用户的整个交互过程。之所以说好的推荐系统更难定义,是因为虽然算...

    石晓文
  • 业内推荐系统架构介绍

    学术界往往更加关注推荐算法的各项评估指标。从基本的协同过滤到点击率预估算法,从深度学习到强化学习,学术界都始终走在最前列。一个推荐算法从出现到在业界得到广泛应用...

    石晓文
  • R&S | 手把手搞推荐[0]:我的推荐入门小结

    去年年末至今,学习推荐系统已经接近半年,在各种事情的忙碌下,依然坚持着完成一些自学,推荐系统的入门流程逐渐到达尾声,自己学的内容也逐步完善,门是基本入了,所以打...

    石晓文
  • 推荐系统和搜索引擎的关系

    作者:陈运文,博士,达观数据CEO;中国知名大数据技术专家,国际计算机学会(ACM)会员,中国计算机学会(CCF)高级会员,复旦大学计算机博士和杰出毕业生;在国...

    机器学习AI算法工程
  • 知人知面需知心——论人工智能技术在推荐系统中的应用

    用户1737318
  • 推荐系统干货总结

    推荐系统是一个相当火热的研究方向,在工业界和学术界都得到了大家的广泛关注。希望通过此文,总结一些关于推荐系统领域相关的会议、知名学者,以及做科研常用的数据集、代...

    张小磊
  • 推荐算法理论与实践(差代码) 原

    之前的方法是基于用户已经看过一些电影,买过一些商品并且进行了评分,因此具备该用户信息,以便推荐

    晓歌
  • 收下这份推荐系统入门指南

    随着当今技术的飞速发展,互联网中所积累的数据量也与之倍增,人们在海量数据前越来越觉得束手无策,这时候我们需要一些技术从海量的内容中找出用户所关心的展示给用户,从...

    博文视点Broadview
  • 消息队列助你成为高薪 Node.js 工程师

    个人理解:我把它分成两个词消息和队列。当一大批客户端同时产生大量的网络请求(消息)时候,服务器的承受能力肯定是有一个限制的。这时候要是有个容器,先让这些消息排队...

    桃翁
  • 消息队列助你成为高薪 Node.js 工程师

    个人理解:我把它分成两个词消息和队列。当一大批客户端同时产生大量的网络请求(消息)时候,服务器的承受能力肯定是有一个限制的。这时候要是有个容器,先让这些消息排队...

    coder_koala

扫码关注云+社区

领取腾讯云代金券