深度学习推荐系统领域的15个问题
1.如果领导让自己同时带一个NLP团队和CV团队,而此时对CV却不熟悉,一般如何快速建立这样的多种类型的知识体系呢?
和我的经历有一点像,我在职业生涯头五年一直是做计算广告的,bidding算法,预算控制,CTR预估之类的,推荐系统是我这三年的重点,虽然计算广告跟推荐系统有很多相通之处,但在系统架构,推荐模型上还是有诸多区别。所以可以分享一下我的经验。
感觉进入一个新领域还是要多看,多想,多整理,自己的消化吸收整理特别重要,但是所有的一切一定是要建立在你之前知识基础上的,找到很多知识之间的共通之处,才能提高吸收的效率。
而且不可否认NLP的很多知识肯定是跟CV相通的,类似于两个领域的机器学习底层是共享的,上层的application有所区别,这时关注的重点应该在CV的主流方法和主流工具框架上,把它嵌入到你的知识底座上面去。
但是一个leader到底需不需要深入到细节中去,我觉得这个跟每个人的领导风格有关系,我个人倒是觉得带两个团队的leader应该从领导方法上多下功夫,建立知识的大框架,作方向性的正确抉择就好,对于细节的知识模块倒是要求不那么高了,当然这是题外话了。
2.王老师看好深度强化学习在推荐领域的前景么?能不能谈一下您的理解。
非常看好,我看好四个子领域在推荐系统的前景,强化学习、边缘计算、知识蒸馏、深度学习工程架构。
强化学习本质上是提高了agent online学习的频率,它更快的适应环境的发展,作出更实时地,更符合当前环境的推荐。这和提高模型表达能力是不同的,它从实时性的、探索的、可适应的角度提高效果,这是之前推荐系统不曾有过的能力和信息。
但强化学习是跟实时推荐系统架构紧密相关的,不能简单认为这是一个模型训练问题,它的要点在于如何跟工程架构,数据流,模型本身紧密的耦合起来,对于整个团队的要求是非常高的。但毫无疑问,这种工程和模型紧密结合的领域,应是未来的方向。
3.老师,我有两个问题。a.遇到样本数很少,但是特征数很多的情况下,该怎么办;b.遇到特征非常稀疏,特征虽然多,但是查得率都很低的时候该怎么办呢
a. 比较难利用深度学习模型进行训练,也许可以考虑tree based model,或者一些传统的分类模型,深度学习模型几乎无法收敛。不知道GAN在推荐系统中能不能应用,感觉不是特别容易work。
b. 如果样本数量很大的话,特征稀疏其实并不是问题,你可以做这样的想象,id类特征的onehot encoding,大部分维度都是0,但是在大样本量下,照样可以学出质量非常高的embedding。如果是样本量太少,特征又稀疏,这个问题太难了,希望大家有好的经验分享。
4.王喆老师,请教您一个问题:推荐系统或广告系统是一个环境变化性极大的场景,在优化模型时,有哪些方法能比较好的保障线下训练结果与线上实际表现之间的一致性? 谢谢!
非常好的问题,书里面有专门的一章“推荐系统的评估”去讨论这个问题。这个问题必须系统的看,好的评估系统一定是一个体系,而不是一种方法。
在离线和在线之间,至少还有离线replay,线上inter leaving测试等快捷的方法。要用体系的思路分级的去解决这个问题,而不是一定要保障一致性,线下结果本身有很强的data bias的问题,永远也不可能做到跟线上一致。
线下测试的作用是快速过滤掉一些确实非常不靠谱的模型和想法,在评估体系的每个层级再去过滤掉不生效的改进,逐渐到线上AB Test。
5. 如何看待知识图谱在推荐系统上的应用?
知识图谱由于Graph Embedding,GCN的发展再次流行起来,跟之前的content based 系统有联系,也有进展。
知识图谱是一定可以跟用户行为类数据联合起来在推荐系统中使用的,它是冷启动的非常好的方法,也是用户行为数据的最有效补充。
6.线下AUC提升了但线上的点反而下降,遇到这种情况要怎么寻求解决方法?
请参考问题4,而且事实上AUC是一个不那么真实的指标,它评价的场景其实跟用户真正看到的场景相去甚远(大家可以从AUC是怎么计算的,以及线上用户是看到什么结果,好好想想这句话),这也就是你经常看到很多paper在评价模型的时候会对AUC进行改进。
要多从问题的本质想问题,不要唯AUC论,它只是一个习以为常的,惯例性的指标,但并不意味着它是一个好的指标。
当然,模型本身的问题肯定也是可能的,数据有偏,模型太复杂导致过拟合,线下线上环境差距太大,模型更新有问题,都是可能是原因,但这里信息不足无法定位。
7. 王喆老师你好,您如何看待推荐的可解释性的重要性?对于推荐的可解释性,能否分享一些通用的方法?
这方面还真不是专家,我只能说根据hulu的经验,给出一定的推荐原因是非常好的提高CTR的方法。但感觉推荐模型的可解释性和推荐结果的可解释性应该是两个问题,欢迎相关的专家提出解决方法。
8.提问:海量级别(上亿)的信息流动态id如何做特征向量化?
这个是个非常好的问题,我因为一直做视频推荐,而且是类似优酷这种长视频推荐,所以动态id的变化速度没有信息流这么快,这里只能提一些建议。
如果是采用embedding的方法对这些id进行特征化,那么就要尽可能的提升embedding的更新速度,但是我们也知道,embedding的训练一般是非常耗时的,几小时训练一次已经是非常快的速度。
那么在这样的情况下,就要准备一些冷启动的方法,比如用一些相似性找到近似的新闻,进行这些已有新闻embedding的平均,或者类似平均的计算。这样的做法airbnb已经有过成功的应用。
另外,我们在模型中不要只实用id类特征,时间、nlp处理的title,内容,作者信息、发布地点、一些可用的分类标签等等都可以作为特征,这些内容和上下文特征显然是可以实时生成的,这些都可以作为冷启动时期的特征向量。
当然还有一种做法,就是在多路召回中采取基于规则或者其他策略的召回方式,这样避免单一模型的片面性。
9. 大佬,如何看待图神经网络在推荐系统上的推进?是否比前面的经典神经网络更有效果?
我们也在进行这方面的尝试,但从Pinterest的尝试来看,在自己的数据结构是图的特征(订阅、点赞关系)非常明显的时候,图神经网络是能够大幅提升推荐效果的。
但是一定要清楚的是不要寄希望于一个技术能在几乎所有场景上都更有效果,更有效果一定是因为这个模型非常适合于应用在你的数据特点上。
图神经网络当然更适合处理图数据,但一定要清楚一点,所有技术改进能够产生效果一定是因为它符合你的数据特点,你的数据能够支撑起模型的优势。图神经网络同理。
10. 我想问下老师,现在有的小公司不用深度做推荐,而一些大公司已经在用深度了,现在做学习准备,深度模型和非深度模型应该各占多少百分比的学习?
这个问题比较个人,根据自己的需求有重点的去学习吧。如果是我的建议的话,还是根据我一直提倡的,从经典模型到深度模型,逐渐建立自己的知识体系是最重要的。
11.推荐系统的模型改进后如何进行评价(即如何量化评估模型的好坏)?
请参考书中的“推荐系统的评估”章节,逐渐建立一套从离线-replay-interleaving-AB test的评估体系。
12.如何平衡工作和个人知识积累或总结(比如写Blog和著书)的时间?
我有一个固定的总结和写东西的时间,就是晚上10点-12点,等我娃睡觉了之后。。如果每天就固定出一块时间做某件固定的事情,可能就不嫌时间少了。至少我做这件事情还挺开心的,不觉得工作之外额外的痛苦。
13.大佬对在校生提升工程能力有啥建议吗,感觉在学校里天天看论文,现在招聘市场上对工程能力要求很高,有点慌
非常好的问题,参加实习,参加实验室项目是必须的,我觉得重要性甚至超过发论文。我见过的大部分算法岗的manager都喜欢在学术能力够用的基础上,招工程能力强的同学。很好理解嘛,大家都喜欢来之能战,能帮自己解决问题的同学,不会喜欢眼高手低加入团队之后还要别人配合的同学。
如果没有实习,也没有项目机会,我建议要自己给自己找项目。我研究生的时候曾经自己做过一个游戏文章推荐系统,我甚至还靠这个项目做SEO,接google ads赚了一些钱。
所以给自己找一个目标吧,用推荐系统这套东西做点实用的工具,比如科技文章抓取加推荐工具,自动分类paper的工具之类的,做得好了还能开源,利人利己,一举多得,最重要是锻炼了自己的工程能力。
14.我们做电商网站的,还没做个推荐相关的技术应用,计划通过推荐提高订单量,增加收入,请问入门用什么样的推荐框架?
如果真的是从0开始的话,我觉得入门就从协同过滤开始吧。业界经典,理论简单实用。在此基础上不断优化。
推荐框架其实都不用有,每个物品一个向量,用户一个向量,一乘之后排序就行了。当然这里面规模大了也有很多工程问题,那就到时候人挡杀人,佛挡杀佛吧。
15.目前比较火的深度推荐系统模型似乎都是工业界发出来的论文。请问王喆老师对这些现象有什么看法?是不是只有进入工业界才能对深度推荐系统的研究产生大的进展呢?是不是可以说现在的深度推荐模型的进展都是各大公司神仙打架,而纯学术研究的价值不高呢?
这是个非常好的问题。其实不仅是现在,推荐系统,计算广告这种业界背景很强的学科,一直以来都是业界巨头驱动的。amazon协同过滤,netflix矩阵分解,到google,阿里,微软深度学习,都是因为业界的成功应用才流行起来。
这里原因其实不难发现,现在越来越强调数据的重要性,数据规模的重要性,线上测试的重要性,这些都是只有在巨头公司才能做的。
而且这个世界终究是要拿事实说话的,真正落地的东西大家才会完全认可。所以如果想切实推动推荐系统的进展,去大公司没有错。
但另一方面,学界的价值永远是不可替代的,一些新的idea,一些新的角度总是学界提出的。就拿google提出的word2vec这种人尽皆知的模型来说,是学界早在20年前就提出过类似的模型。更不要说RNN,LSTM了,虽然他们被业界逐渐应用,越带越火,但你要知道你是站在学界的肩膀上的。
所以如果希望影响力大,真正推动推荐系统发展,去业界巨头,如果想做一些理论上的研究,提出更多创新点,做更多尝试,在学界当然是更好的。