作者: justin
日益红火的深度学习也在不断影响着资讯推荐,在这一节就简要review下最近爆出来的几篇相关文章,大致可以分为两类:1)embedding技术。此时深度学习主要用来学习user/item的embedding也就是通常意义上的user/item的表示形式,每个user/item可以表示为一个向量,向量之间的相似度可以用来改善推荐。这里深度学习的重点是用来学习合理的表示;2)使用深度学习直接对预测目标建模。此时深度学习的重点放在最终要解决的问题上。初看起来似乎第一种形式不如后者来得直接,但第一种形式在实际应用中通常能起到简化架构、快速解决问题的功效,还能作为一个基础特征来改进线上其他环节的效果。下面我们分别选择一两篇有代表性的文章来进行科普。
Yahoo Japan的新闻推荐团队利用denoising autoencode的技术来学习新闻的vector表示。Autoencode大家可能比较熟悉,它通过最小化变换前后信号的误差来求解,而denoising则是对输入随机加入一些噪声,再对其进行变换输出,最终是通过最小化加噪声后的输出和原始(不加噪声)输入之间的差异来求解。应用中不少结果表明,这种方法比传统的autoencode学习到的vector效果更好。具体示意图如下。
但这种方法是经典的无监督学习套路,直观来看和应用场景中要求相似新闻的vector也要尽量相似没有直接的关联(这里单单从优化目标来看,实际上由于语料的天然性质或者人们用语习惯,这个相似性的要求已经间接隐含在优化目标里了)。而新闻有很多人们编辑好或者其他模型产生好的类别信息,假如A、B新闻都是体育类,C是教育类的,通常意义上来讲A和B相似度是比A和C要高的。这是在训练深度学习时已知的先验知识,如果能把它加入到优化目标中,学习到的vector就能更好的表达相似度信息,于是有了下面的方法。
如图所示,通过在原始autoencode的优化目标中加入“同类新闻相似度大于不同类新闻相似度”这一项,我们就可以把先验知识作为约束加到模型中。Yahoo Japan的人实验证明了如此得到的vector确实能更好的表示(相似度信息)。
微软研究院也提出过一种很有趣的得到item表示的方法。作者利用用户的搜索日志,同一个query下,搜索引擎往往返回n篇doc,用户一般会点击相关的doc,不太相关的一般不会点,利用这个反馈信息也可以训练神经网络。具体示意图如下,这里的优化目标就是要求点击的一个doc_i的预测得分p(D_i|Q)要高于不点击的,论文基于这个信息构造除了损失函数,也就得到了最终机器学习可以优化的一个目标。
目前只介绍了如何得到item的vector,实际推荐中要用到的一般是user对一个item的兴趣程度,只有在得到user vector后才能通过算user和item的相似度来度量这个兴趣程度。那么如何得到user的vector呢?了解的同学可能能想到,既然我们已经得到了新闻的item的表示,想办法把他们传到user侧不就行了么?
确实如此,一种简单的做法是把用户近期点过的所有新闻的vector取个平均或者加权平均就可以得到user的vector了。但这种模式还有优化的空间:1)用户点击是一个序列,每次点击不是独立的,如果把序列考虑进去就有可能得到更好的表示;2)点击行为和曝光是有联系的,点击率更能体现用户对某个或某类新闻的感兴趣程度。鉴于这两点,我们很容易想到通过深度学习里经典的解决序列学习的RNN方法,Yahoo japan的人使用的就是一个经典的RNN特例:LSTM。训练时将用户的曝光和点击行为作为一个序列,每次有点或不点这样的反馈,就很容易套用LSTM训练得到user的vector,具体做法如下图所示。
作为国内当红的个性化推荐产品,今日头条技术经历了三个阶段:
1) 早期以非个性化推荐为主,重点解决热文推荐和新文推荐,这个阶段对于用户和新闻的刻画粒度也比较粗,并没有大规模运用推荐算法。
2) 中期以个性化推荐算法为主,主要基于协同过滤和内容推荐两种方式。协同过滤技术和前面介绍的大同小异,不再赘述。基于内容推荐的方式,则借助传统的NLP、word2vec和LDA对新闻有了更多的刻画,然后利用用户的正反馈(如点击,阅读时长、分享、收藏、评论等)和负反馈(如不感兴趣等)建立用户和新闻标签之间的联系,从而来进行统计建模。
3) 当前以大规模实时机器学习算法为主,用到的特征达千亿级别,能做到分钟级更新模型。 架构分为两层(图来自头条架构师的分享):1)检索层,有多个检索分支,拉出用户感兴趣的新闻候选;2)打分层,基于用户特征、新闻特征、环境特征三大类特征使用实时学习进行建模打分。值得一提的是,实际排序时候并不完全按照模型打分排序,会有一些特定的业务逻辑综合在一起进行最终排序并吐给用户。
任何一种算法都有其局限性,业务要结合自己产品的特点,选择合适的算法解决特定的小问题,融合各种算法解决一个大问题。另外要设计合理的实验和放量机制,以在有限的影响内,最大程度地利用真实的用户行为来修正算法判定的结果。比如,可以先放5%的流量来试探用户对新闻的兴趣,并用模型进行建模;再用15%的流量来修正模型的效果,进行优胜劣汰;最后将真正置信的推荐结果推送到全量用户。
个资讯消费是人的基本需求,个性化资讯推荐让我们能更好地消费资讯,享受生活的快乐。个性化资讯推荐还有很长的路要走,目前面世的产品仅仅迈出了第一步,看起来有模有样,实际上问题多多。例如被吐槽最多的一个问题:用户一天看了很多,但睡前闭目一想,记住的很少,对自己有用的更是凤毛麟角。这只是一个表象,背后其实暴露了很多现有推荐的问题。
要做好一个资讯推荐产品,不单单精准推荐技术需要演进,呈现形式、交互方式、产品形态、内容生态等等都需要去探索,最最重要的要想清楚以下几个本质问题:
1) 人为什么需要阅读?
2) 人为什么会消费资讯?
3) 用户为什么需要到你这阅读资讯?
4) 好的阅读体验到底是什么,如何量化?
5) 产品推荐的基因是什么?
加油吧,个性化资讯推荐!
参考文献:
如何看待头条的成功?
网上很多人都从各种角度有过分析,但大都是通过现象来解释现象,抓住本质的不多。个人比较喜欢用“市场、产品和技术”动态匹配理论来看这个问题1:对于一个特定的企业来说,它在特定时点上所找到的、要去满足的市场是特定的;特定的市场要求企业用特定的产品去满足,而特定产品则是特定技术的某种物化。企业只有掌握相应的特定技术或者有能力在一定的时间内把这种特定技术开发出来并把它物化成特定产品,企业选择的特定市场才有可能得到满足。
用动态匹配理论来看头条,可以看到它的成功是如此之合理。随着资讯市场的成熟和发展,人们需要一个在碎片时间消费有趣资讯的产品,来解决用户的需求。这里的有趣因人而异,就需要用个性化的推荐技术去满足。如此看来,头条在合适的时机,用合适的技术做了合适的产品,造就了自己的成功。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。