30

当我们谈论“推荐系统”时在谈论什么?

 4 years ago
source link: http://mp.weixin.qq.com/s?__biz=MjM5ODkzMzMwMQ%3D%3D&%3Bmid=2650412067&%3Bidx=1&%3Bsn=e45e6e58c857533ed9562ac99340e87c
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

推荐系统如今已经是一门显学,“精准”、“个性化”、“算法”等等字眼已经飞入寻常百姓家,成为公共话题。谈论的人越来越多,那么到底我们在谈论什么?

1. 谈论算法

推荐算法是我们谈论推荐系统时最常谈到的,大概因为算法是最神秘的部分,因为神秘,所以吸引人。实际上推荐系统的算法发展也经历了不同的阶段,一个是从深度上看,一个是从广度上看。

从深度上看,算法模型越来越复杂,大致有三个阶段:

  1. 非学习型算法;

  2. 传统机器学习算法;

  3. 深度学习算法。

第一个阶段以协同过滤为代表,核心算法是如何计算相似度,用户相似度和物品相似度。这个阶段时间跨度很长,90年代到10年代都是以此类算法为主,涌现出item-based,user-based,content-based等,算法类型以记忆为主,用户以分群为主。这个阶段的算法还缺少常见的学习算法模式,更多的是启发式算法:把经验和直觉量化后计算出来。

第二个阶段就是和机器学习结合紧密,以Netflix Prize为标志性事件,这项比赛中诞生了以SVD为代表的学习型协同过滤算法——矩阵分解。所谓学习型算法,具有这样的特点:首先定义损失函数,然后用最优化算法寻找满足损失函数最小值的参数,最后采用参数给用户计算新的推荐。这个阶段也也涌现了一大批至今活跃在产业界一线的推荐算法:svd++,FM。甚至很多第三阶段的算法也与这些算法结合紧密。

第三阶段,就是在深度神经网络风暴袭来之后,把深度学习引入到推荐算法中自然成为大家的关注点。深度学习本身具有的两个目的:学习深度表达和预测非线性关系,这两个目的也渗入到推荐算法中:一个是学习用户和物品的深度表达,也就是把用户兴趣和物品语义信息编码成低维向量表达,比如NCF;一个是学习用户和物品之间各种特征的非线性关系从而预测用户和物品之间可能产生的连接,以各种深度CTR预估算法为代表,比如Wide&Deep,DeepFM,DIN,PIN等,无不如此。

另外,再从广度上看,推荐系统所需要的算法,涵盖范围从原先仅仅关注用户行为的纯粹协同过滤,到现在,还紧紧地耦合着NLP、CV等其他AI算法,还有各种去重算法、采样算法、内容质量评估算法、风控算法、攻防算法等。这是因为如今的推荐系统已经变成一个产业,而不再是一个简单的产品模块。

2. 谈论工程

从前推荐算法的应用更像是一个一个的数据挖掘任务,特点就是:关注离线建模(training),而不关注在线部署(inference)。比较普遍的形式是离线计算出推荐结果,所谓部署,普遍的做法其实是查询用户对应的推荐结果。

也因此,对推荐系统中工程技术的关注向来不足。但随着基础设施的发展,比如3G和4G的普及,智能手机的普及,离线计算出推荐结果在线查询这种简单模式已经落伍了。推荐系统对互联哇工程技术的要求越来越高,依赖越来越重

除了高可用、水平扩展、低延迟等系统架构通用要求外,还有数据密集型系统的要求。推荐系统是一个数据密集型系统,海量且快速更新的用户行为数据、要快速反映到推荐系统计算中,以lambda架构为代表的典型架构模式逐渐形成,这个阶段,最为常见的推荐系统架构模仿对象就是Netflix公开的个性化首页推荐架构:提出了在线、近线、离线范式。

除了为算法推理计算而存在的架构,还有周边配套工程也被大家重视起来:埋点技术、日志流、分层AB实验、数据分析、算法测试等。这些技术都是推荐系统的重要组成部分,而相关资料却不如算法资料多。

3. 谈论方法

头条、抖音、快手等以算法推荐为亮点的产品成为国民应用后,带动了推荐系统在全行业的落地。下图是Google 趋势上对相关主题的趋势反映。

MZVvYfz.png!web

在今天,算法原理、算法实现、所用框架全都公开免费可获取的情形下,除了运气因素之外,在落地推荐系统这件事上制约各家公司的更多的是什么呢?是方法,包括思维方法、优先级排序等。

3.1 思维方法

首先,思维方法是最大的壁垒。在推荐系统圈子中,有一个魔咒是“大佬亲自抓必死”,表现就是,一旦老板开始亲自关注推荐效果时,团队上线就开始把大把时间花在给老板解释两件事:“为什么推A”以及“为什么不给我推B”。这背后是因为一个思维方法在作祟:确定性思维。用功能产品去思考效果产品的通病,功能产品有严格的响应定义,点击按钮之后响应是在严格定义的逻辑链条下完成的,可复现,可测试,可解释。但推荐系统这类效果产品,背后往往不再是链式逻辑,而是复杂网络。与其要求苦逼的产品技术同学每天忙于解释老板的灵魂提问,不如花时间关注芸芸普通用户的行为模式。

另一个思维模式是量化目标思维。功能型产品,大家习以为常的合作模式是:产品提需求,研发实现。但往往产品的需求不是需求,而是“手段”,这个模式在推荐系统中就是灾难了。取而代之的思维模式是:制定共同的量化指标,分析发现影响指标的关键漏斗。至于追求目标的需求,人人都是产品经理——都可以根据自己的主动分析提出来。

3.2 优先级排序方法

第二个方法是优先级排序。由于算法在也推荐系统领域更夺人眼球,因此很多公司在实践推荐系统时容易聚焦在算法上,这也会造成很多时间的浪费。并非说算法不重要,而是需要审视自己公司和产品所在阶段再下结论。影响推荐系统效果的元素,有两种划分体系。一个是数据的pipeline元素,另一个构成推荐系统的关键元素。

第一个是,物料 > 召回 > 排序。物料的丰富程度是推荐系统效果的上限,在物料不够丰富的前提下,召回和排序算法会非常捉襟见肘。而在物料不拖后腿的情况下,对物料的召回就是排序效果的上限,召回的效果取决于对物料和用户的分析细致程度,也是前文所说的“物品的语义表达”和“用户的兴趣表达”。最后才是排序的效果,物料的丰富程度和召回的多样程度,是在团队精力有限的情况下花大力气做的。

另一个是,产品运营 > 数据 > 算法。对推荐效果的影响程度,产品运营远大于数据算法带来的,产品包括UI(用户交互)&UE(用户体验),脑残的产品UI&UE绝对能劝退一大波用户,让推荐系统胎死腹中。除此之外,就是数据,包含物料数据,用户行为数据,也包含数据的质量和粒度,数据质量越高,数量越大,对推荐系统效果促进越明显,哪怕是简单的算法,也能取得很好的效果。

4. 谈论行业

推荐系统从以前的配角变成今天的主角,商业价值也不可同日而语。于是也因此在谈论推荐系统有关的行业时,已经不是纯粹的产品技术问题,而是还有以下问题。

  1. 商业变现问题

  2. 流量安全问题

  3. 人才供需问题

4.1 商业变现问题

推荐系统本身关注的用户体验,追求的是流量增长,但是商业世界本身最终要逐利,流量最终不变现就没有意义,因此,商业变现往往是随之而来的问题。

商业变现在各个公司做法不尽相同,有的是割裂地做,推荐系统换来流量后,无法再参与到如何售卖中,以至于往往商业变现会反过来伤害到用户体验。

也有一些做得比较好的,方法也有很多,但是往往是把变现和用户体验结合在一起考虑的。比如两个典型做法,一个是原生形式广告,做到了广告即信息,高质量的内容加上精准的定向,不但变现,而且不对用户体验有伤害;另一个是把广告和推荐的架构合并,为推荐系统每次推荐计算价值,让推荐系统代表平台方参与到每次竞价中,曾经的Facebook这样做过。

总之,商业变现是一把双刃剑,既可能为推荐系统带来进一步价值,又可能会毁了推荐系统提升的用户体验。

4.2 流量安全问题

是的,当推荐系统成为香饽饽的时候,就会有风险控制的要求了,也就是我们用推荐系统带来的流量是否都是安全的。这里的安全,有两个层面:一个是来源,一个是使用。

关于来源。今天没有任何一家公司不花钱就可以获得流量,区别只是获取流量的ROI有高有低。既然流量要花钱,那就存在是否花了冤枉钱,买来了低质量甚至是假的流量。真实流量如果多花了钱,尚且情有可原,毕竟没有给推荐系统“捣乱”,如果引入了虚假流量,后续所有的工作都基于虚假流量进行,那造成的损失和机会成本,非常恐怖。

关于使用。推荐系统也会被攻击,并且比通常的网络攻击更加隐蔽。当推荐系统体量较大时,关注推荐系统的安全就是一项必须的工作。“蹭热度”是常见的推荐系统攻击形式,如果不造成损失,这并不构成安全事件,如果造成损失再去补漏就为时已晚,这些损失有:轻则商业损失,重则品牌形象受损,或者触犯法律法规。

4.3 人才供需问题

坦白讲,前几年的AI热在今年已经冷却下来,从各家大厂的校招数据可以看得到这个趋势。那么长远来看,这个领域的什么人才才是泡沫散去后不会裸奔的呢?这关系到用人方该招什么样的人,以及我们作为从业者该关注和积累自己哪方面的能力。

正如本文前面部分所指出的,作为推荐系统从业者,绝不是仅仅学会算法就可以高枕无忧了,也绝不是没学会算法就瑟瑟发抖了。

  1. 如果是算法工程师,在关注前沿算法知识之余,你还需要加强工程能力和数据分析能力,具备产品思维和内容鉴赏能力就更加完美了。

  2. 如果是开发工程师,学习最最经典的一两个算法,搞清楚算法到底在如何运转将有利于设计出算法友好型和数据密集型架构来,同时,也不要死守着自己最熟悉的技术栈,要乐于去了解当今最受算法工程师欢迎的机器学习框架背后的技术栈,比如C++和python,线性代数库、GPU及TPU。

  3. 如果是产品运营同学,学会数据分析,找出效果优化的洼地,如果能比算法同学先找到更有效的特征提升效果,将赢得他们的无上尊敬,从此几方之间不再是互相“虽然看不懂,但是看不起”这样奇葩的关系。

同样的上面三个建议也为企业用人和招聘提出了一点“不成熟的小建议”:工程能力强的算法,了解算法的工程,懂数据的产品。

5. 谈论推荐系统的书

到了今天,推荐系统关注的不再仅仅是机器学习算法,必须破除不同岗位之间的信息壁垒,既要关注算法和技术来提升生产力,也要关注岗位合作效率以优化生产关系。

正是由于这些年在和人谈论推荐系统时,谈论的不只是算法,所以我在大约五年前就希望能有一本推荐系统的书,能帮助大家扩充视野,让人知道更多“不知道”,因为在算法领域,通过关注行业顶会以及大厂的技术博客,就能将“不知道的不知道”转化成“知道不知道”。

本着破除岗位壁垒和公司壁垒的初心,我把这样一本推荐系统书写了出来。这本书也许不是讲算法最深入最全面的,因为业内有太多优秀的书籍对推荐算法有很好的描述,但我敢保证目前是知识覆盖最全面的,毕竟这本书最初是为了解答我自己的问题。

我还为这本书选了一个吉祥物作为封面,号称物理学4大神兽的“麦克斯韦妖”,麦克斯韦妖是一头能让封闭系统熵减的神兽,这是对推荐系统终极期许,同时也是对我们每个人的美好期许,希望我们每个人在成长的路上都能对抗熵增。

NfEFZr7.jpg!web

关于图书详细介绍,请查看各大电商平台的商品详情:

最后,欢迎大家留言,谈谈你对推荐系统的看法,我们会从留言中选出5名同学送书(注意,不以点赞数量排名为依据),欢迎大家参与,截止2019年12月24日20点。

关于AINLP

AINLP 是一个有趣有AI的自然语言处理社区,专注于 AI、NLP、机器学习、深度学习、推荐算法等相关技术的分享,主题包括文本摘要、智能问答、聊天机器人、机器翻译、自动生成、知识图谱、预训练模型、推荐系统、计算广告、招聘信息、求职经验分享等,欢迎关注!加技术交流群请添加AINLP君微信(id:AINLP2),备注工作/研究方向+加群目的。

qIR3Abr.jpg!web


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK