推荐系统中的那些“思维”

Posted 张春宇的日记

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了推荐系统中的那些“思维”相关的知识,希望对你有一定的参考价值。

上一篇中根据学习笔记画了一张脑图分享给了大家,阅读量大增,希望给大家带来了一些实质上的帮助。这一篇中我把在学习过程中感悟比较深的几个“思维”跟大家分享一下。他们分别是:“不确定性思维”,“向量化思维”,“MAB问题”,“合理的排行榜”,“数学思维”。“不确定性思维”是在使用机器学习系统过程中,必须具备的一种思维。“向量化思维”是做机器学习算法必须具备的一种思维模式。“MAB问题”就是选择问题,在不确定的情况下,怎么选是最合理的。“合理的排行榜”就是怎么在实践中克服马太效应。“数学思维”是怎么合理的把数学知识应用到工作实践中。下面就对这些“思维”按我的理解给大家分享一下,不仅仅是在推荐系统中应用,也是借着这些“思维”对职场做一些反思。


先说“不确定性思维”,在推荐系统中,或者说所有想实际应用机器学习或深度学习这种学习类的系统中,首先就要有“不确定性思维”。因为这类系统先天的基因就决定了不可能产生百分之百正确的结果。我想最直接的原因有两点,一是模型,二是数据。对于模型来讲,再强大的模型也不可能完美的描述出数据中的所有情况,即使可以,在实际做模型的过程中,也要控制这种情况的出现,因为如果出现这种情况,模型的泛化能力就没有了。对于数据来讲,能够给模型学习的数据,总是有限的,不可能把领域内的所有数据一网打尽。所以想应用学习类的系统,必须具备“不确定性思维”。
上面说的是原因,接下来说说应用,我目前能想到的应用主要有一小一大两点。先说小的,在实际工作中的应用,如果从事这类算法类相关的工作,在看问题的时候,要从概率的角度出发,除了“红线”问题,都要在一定量的基础上用概率来描述。如果纠结在个别问题上,而问题的实际影响面又很小就会得不偿失。再说个大的,就是在选择工作的问题上,因为目前算法相关的岗位比较火,那么选择岗位的时候,也要依据上述的“不确定性思维”。好的工作岗位应该是“好赛道、好公司、好老板”,那么选择赛道的时候,就要关注一下什么赛道能够接受这个“不确定思维”。对于不能容忍这种“不确定性思维”的赛道,必然也就不能跟着这个风飞起。这也是我个人比较痛的领悟,拿出来分享给大家,欢迎来喷。

“向量化思维”,就是数据都应该转成向量表示,然后交给机器去处理。随着神经网络的普及,几乎所有的数据都可以"to vector"一下。更重要的是,让机器去学习,就要从机器的角度去看数据,而不是从人的角度。由于做数据的过程中,很多时候要照顾人的可看性,所以就保留着人能读懂的样子。但这对机器是非常不友好的,将数据转换成机器能理解的向量格式,是非常重要的一种思维。


“MAB问题”,全称是multi-armed bandit problem。来源于赌博业,赌博机有不止一个推臂,每个推臂的收益满足一定的统计分布,当赌徒推动其中一个推臂时,便能获得一定的报酬。明显,这个报酬是从推臂的相关分布派生的一个随机变量,而赌徒在最初无法得知推臂的报酬的分布情况。赌徒的目的是获得最大的收益。由于每次试验只能选择其中一个推臂,若赌徒选择其中某个推臂的次数达到一定值,那么就可以得出该推臂报酬对应的统计分布情况。同时,如果赌徒只使用其中某一个或者某几个推臂,那么他就减少了使用新的推臂的机会,而这些推臂以一定的概率可能具有更高的报酬。那么赌徒面临的问题是:选择已知报酬均值最高的推臂,来获得较高的报酬,或选择其他未知分布的推臂,以谋求获得可能存在的更高的报酬。这是选择已知推臂或未知推臂的两难问题。该问题由Robbins最早提出,它将多臂赌博机看做一个Agent的统计决策模型,将探索与利用的两难问题变为Agent在最优化决策的同时提升知识。

这个问题本质上就是一个选择问题,选择从经济学角度来看是有成本和收益的。成本就是机会成本,收益就要看问题的目标了。在推荐系统中,解决这个问题的方法是bandit算法,用来解决探索与利用问题,通过多次实验,使得收益确定好的选项多选,确定不好的选项少选,不确定的就是按一定几率去尝试,使预期的收益最大。比如用户的兴趣标签很多,无法全部使用,怎样解决从库中合理的选择标签,使得用户的点击变多。

在职场中的时间越长,就越会发现选择的重要性。整个职场生涯,就是一个MAB问题,怎么在这个问题中获得尽量多的回报。在职场中,可重复实验的选项比较少,但如果能在做选择时评估一下预期收益并作出较好的选择,我想将会对职场这个MAB问题的收益有很大的帮助。这里想到了一个量化方式叫凯利公式。

其中,f*是应该注入的资本比值或者应该投入的精力比例,p是获胜的概率,q是失败的概率,b是赔率。赔率=期望盈利/可能亏损。根据这个公式,胜算越大,赚的越多,投入就越大,更重要的是它提供了一个量化思路。这个公式在赌场和股市的量化交易中广泛应用,赌博真的是不喜欢也逃不开的问题。


“合理的排行榜”,排行榜是一个马太效应非常强的场景,记得以前工作时,相当长的一段时间内top1的搜索就是《武动乾坤》这本小说,其他的请求怎么也突破不了。在前不久和小伙伴们参加一次比赛的时候,还在讨论这个问题--强者恒强,如何才能让其他优秀的候选项能够动态的展现出来。时间重力因子和牛顿冷却定律,就提供了非常好的动态更替方案。同样的,这也提了一个醒,“时间”是在工作实践中最容易忽略的一个重要因素。对于基于好评率的排行榜中,一个通常的问题就是评分人数太少时,这个好评率不具有参考价值,因为一个好评或差评都会给好评率带来巨大的波动。威尔逊区间和贝叶斯平均公式中就考虑了评分数量的因素,让好评率趋于客观、公正。


“数学思维”,数学其实无处不在,数学家们就是在用数学解释这个世界。在这次学习中有两处感触比较深的数学知识应用。一个是指数分布在加权采样中的应用,一个hoeffding不等式在相似度计算剪枝中的应用。

先说指数分布,在教科书上,对指数分布的描述是“假设到银行办理业务的时间是不确定的,那么每个人办理业务时间的概率分布就是指数分布,就是两个事件发生的时间间隔,服从指数分布”。把指数分布的这个意义应用到推荐系统的标签中,权重越大的标签,用户消费的越频繁,也就是间隔的时间越短。所以在采样时,为每个标签构造一个指数分布的随机数,参数就是标签的权重,然后用这个指数分布产生一个随机数,非常的完美。

然后是hoeffding不等式的应用。在实时推荐系统中,会根据用户行为的发生而更新物品之间的相似度,而对于热门物品的更新就会产生巨大的计算量而难以接受。此时就可以考虑进行剪枝,一种剪枝的方法是,某些物品之间的相似度已经接近期望时,就没有必要继续进行更新了。怎么判断已经接近期望了呢,这时就可以用hoeffding不等式。

hoeffding不等式的具体形式如下图:


从hoeffding不等式可以看出,当N逐渐变大时,不等式的上边界越来越接近0,所以样本期望越来越接近总体期望。也就是当更新次数N大于某一值时,样本期望和总体期望之间的差异小于某一指定值epsilon的概率小于等于不等式的右侧。反过来,指定好概率和epsilon,就可以求得这个N值,是不是也非常完美。

由于个人在学习中比较板,所以对于上面这两种把知识活学活用的场景非常羡慕。


以上就是想和大家分享的我在学习过程中感受比较深的几种“思维”。希望对大家有一点点帮助,这是我最大的幸福。
最后,感叹一下思维迁移能力的强大,比如各种数学理论的灵活应用,信息论原理引入计算机领域,忍不住感叹各位大牛们是真的博学多才,自己要多多学习。“大处着眼,小处着手”,与君共勉。这句话的出处请关注我的公众号,并往前翻。

以上是关于推荐系统中的那些“思维”的主要内容,如果未能解决你的问题,请参考以下文章

广告行业中那些趣事系列10:推荐系统中不得不说的DSSM双塔模型

推荐系统的那些事

推荐系统的这些坑,我全帮你踩了一遍!

推荐系统里的那些坑儿

推荐系统简介

推荐系统简介