作者:木羊同学
来源:华章计算机(ID:hzbook_jsj)
推荐系统是为用户推荐所需物品的软件工具和技术。提供的推荐旨在通过各种决策过程来支持用户,例如,买什么物品、听什么歌曲或读什么新闻。推荐系统的价值在于帮助用户解决信息过载和做出更好的选择,也是现在互联网领域最强大和最流行的信息发现工具之一。
今天就和大家聊聊:推荐算法为啥这么“灵”,又为啥会“失灵”?
要回答这个问题,首先得讲清楚推荐算法的原理是什么。
我们知道,互联网最大的特点就是有海量的信息。不过,光是数量庞大是没有任何意义的,需要信息真正发挥作用才能产生价值。所以,如何让信息发挥价值,始终是互联网发展的一条主轴。为此,我们想了很多办法。
“算法推荐系统”出现前,我们的做法是发现信息,这就是搜索引擎。搜索引擎很有用,但限制也很明显,遗留了很多问题。回想一下:我们要用搜索引擎找信息,不是直接就得到想要的结果,而是得首先掏出一个“关键词”输入进去,然后才能看到命中的结果。
这个过程叫信息检索,也就是你得首先知道自己对什么信息感兴趣,得有线索,然后才能通过搜索引擎检索信息。但这就有个问题,互联网实在太大了,而人的认知圈子实在太小了,这就导致了大量本该有价值的信息,因为没被人看到,而只能静静躺在角落被白白浪费了。
这个问题初看不可能有解,毕竟从常识推断,我们得首先知道那条信息,才可能判断对它是否感兴趣,这个过程应该没法颠倒过来,去发现我们不知道但感兴趣的信息。但推荐算法做到了,它改变了搜索引擎的做法,不再是发现信息,而是发现兴趣。
推荐算法是怎样发现兴趣的呢?听起来好像很玄乎,不过原理远没有想象中的那么复杂,我用一句话概括——就是依靠人和物的关联关系,最少只要经过三次关联,就能完成兴趣发现,进行一次推荐。
这么说不太形象,我举一个例子。
想到这里,店长觉得:既然我们都爱喝快乐水,那没准你们也都喜欢吃薯片呢?于是,店长就向我推荐了薯片。这就是基于兴趣的推荐算法,大数据分析常举的例子——啤酒尿布,就是上面的这个原理。
我最近看到很多文章,说推荐算法比女朋友更懂你,外人一看都觉得挺神奇的,其实明白了推荐算法的原理,就应该知道这是理所当然的,术业有专攻,除非你的女朋友正好是店长。
当然了,推荐算法原理不复杂,但实际要发挥好作用,还需要根据应用场景作很多调整。推荐算法的重心在于发现人与人之间的共同点,但怎么划分共同点,是有很多不同的方法的。
就拿我们常见的推荐来说,既有“看过这个视频的观众还看过”这类基于视频节目的推荐,也有“同城的观众都在看”这类基于地理位置的推荐。
早期做推荐很简单,是基于点击量来推荐,但大家很快发现:基于点击量的推荐没法发现差异化的兴趣。所以,要想实现一套好用的推荐算法,通常要综合方方面面去考虑,而不只是单独的一两个点。
推荐算法平时没什么问题,但一旦出现极端情况,譬如说爆发大规模疫情,就会出现前面我们看到的推荐算法“失灵”的问题,大量推荐的都是疫情相同的信息,把其他信息都湮没了。
不过说实话,推荐算法有这样的结果,其实是“合理”的。你想一下:疫情期间你的朋友、家人、同学或者同事,包括你自己,最关心的是什么?就是疫情。
推荐算法这边呢,我们一再强调推荐算法要做的是发现兴趣,而恰恰是正确地发现了你对疫情的“兴趣”,所以推荐算法才给你大量推荐了疫情相关的信息。非要说这是问题的话,恐怕首先也得是社会学的问题。
但是,深入地想一想就会发现,这个问题没这么简单。互联网经济在过去很长一段的时间里是推崇一种理论的,叫长尾理论,大概意思是:人类社会中存在着大量的小众需求,你贩卖的东西再离经叛道,也总会能得到真爱的捧场,互联网就是沟通小众需求的桥梁。
推荐算法在很大程度上也受了这种理论的影响,所以有一种说法是:推荐算法的最终目标就是能发现这一个一个的小众圈子,把小众的信息推荐给圈子里的人。
但现实却是另外一回事。近几年大家讨论更多的是另一种互联网现象,如果你经营过公众号或者当过UP主,应该会对这种现象印象深刻,这就是头部效应。
大部分甚至绝大部分的互联网流量,实际上是被少数几个“头部”信息生产者吸走了,剩下绝大多数的信息生产者,则仍然是静静地呆在角落里面被人遗忘。
本该打破这一现象的推荐算法,反而加剧了这种现象。因为占据头部,所以容易被推荐,因为容易被推荐,所以继续占据头部,推荐算法导致的这种上升螺旋,让头部效应更加明显。如果把本次疫情看作是一个新的头部,也许能更好地理解推荐算法为什么会在疫情中出现失灵。
那么,这个问题应该怎么解决呢?这个问题,容易回答,也不容易回答。从技术的角度看,这个问题想要解决,思路是很清晰的,就四个字:去极端化。
理论研究和真实环境往往有差别。理论研究都爱对环境条件进行简化假设,智能算法也不例外,通常假设各种情况出现的概率是服从均匀分布的,大家应该是旗鼓相当的公平竞争,谁也压不住谁,然后再在这个假设条件下构建算法的各种逻辑。
但实际上,一枝独秀也许才是真实环境中最为常见的情况。其它的所谓竞争者,要么是萌新,躲在角落瑟瑟发抖,要么是菜鸡,互啄上不了台面。在算法看来,这种现实情况和假设情况相差实在太远,太极端,所以,会出现奇奇怪怪的结果自然也就不值得奇怪了。
要让算法恢复正常怎么办呢?只要把极端情况变得不那么极端就可以了,很多依靠评委打分的比赛为了避免受极端情况影响,通常会选择采取去掉一个最高分和一个最低分的做法,就是类似的思路。
不过,技术本身是中立的,是正是邪,要看使用的人,就好比菜刀,究竟是用来切菜还是砍人,不是由菜刀自己说了算。现在讨论的很多问题看起来是技术的问题,其实还是人的问题。譬如人工智能,说到自动驾驶,我们就很爱讨论一个话题,说算法应该怎么处理电车难题。
但实际上,算法自己是不会产生价值观的,算法的价值观,说到底还是人的价值观。推荐算法究竟要怎么改,说到底还是要看推荐算法的使用者怎么定义价值。
我想,推荐算法最后一定能够满足“推荐有价值信息”这一要求的,但是,这里的“有价值”究竟是对谁而言的有价值,那就是另一个问题了。
关于作者:莫凡,娱乐向机器学习解说选手,《机器学习算法的数学解析与Python实现》作者,前沿技术发展观潮者,擅长高冷技术的“白菜化”解说,微信公众号“睡前机器学习”,个人知乎号“木羊”。
延伸阅读《机器学习算法的数学解析与Python实现》
推荐语:如果你之前不太了解机器学习,现在想要了解机器学习的主流算法和原理,并希望快速、清晰地建立对机器学习的“大局观”,但是担心一上来就被各种艰涩的数学公式“揍”得眼冒金星,那这本书就是你想要的。