推荐系统三十六式
刑无刀
“贝壳找房”资深算法专家,8年推荐系统工程师
立即订阅
11436 人已学习
课程目录
已完结 39 讲
0/4登录后,你可以任选4讲全文学习。
开篇词 (1讲)
开篇词 | 用知识去对抗技术不平等
免费
第1章 概念篇 (3讲)
【概念篇】你真的需要个性化推荐系统吗?
【概念篇】个性化推荐系统那些绕不开的经典问题
【概念篇】这些你必须应该具备的思维模式
第2章 原理篇 (20讲)
【内容推荐】画鬼容易画人难:用户画像的“能”和“不能”
【内容推荐】从文本到用户画像有多远
【内容推荐】超越标签的内容推荐系统
【近邻推荐】人以群分,你是什么人就看到什么世界
【近邻推荐】解密“看了又看”和“买了又买”
【近邻推荐】协同过滤中的相似度计算方法有哪些
【矩阵分解】那些在Netflix Prize中大放异彩的推荐算法
【矩阵分解】Facebook是怎么为十亿人互相推荐好友的
【矩阵分解】如果关注排序效果,那么这个模型可以帮到你
【模型融合】经典模型融合办法:线性模型和树模型的组合拳
【模型融合】一网打尽协同过滤、矩阵分解和线性模型
【模型融合】深度和宽度兼具的融合模型 Wide and Deep
【MAB问题】简单却有效的Bandit算法
【MAB问题】结合上下文信息的Bandit算法
【MAB问题】如何将Bandit算法与协同过滤结合使用
【深度学习】深度学习在推荐系统中的应用有哪些?
【深度学习】用RNN构建个性化音乐播单
【其他应用算法】构建一个科学的排行榜体系
【其他应用算法】实用的加权采样算法
【其他应用算法】推荐候选池的去重策略
第3章 工程篇 (10讲)
【常见架构】典型的信息流架构是什么样的
【常见架构】Netflix个性化推荐架构
【常见架构】总览推荐架构和搜索、广告的关系
【关键模块】巧妇难为无米之炊:数据采集关键要素
【关键模块】让你的推荐系统反应更快:实时推荐
【关键模块】让数据驱动落地,你需要一个实验平台
【关键模块】 推荐系统服务化、存储选型及API设计
【效果保证】推荐系统的测试方法及常用指标介绍
【效果保证】道高一尺魔高一丈:推荐系统的攻防
【开源工具】和推荐系统有关的开源工具及框架介绍
第4章 产品篇 (3讲)
【产品篇】推荐系统在互联网产品商业链条中的地位
【产品篇】说说信息流的前世今生
【团队篇】组建推荐团队及工程师的学习路径
尾声与参考阅读 (2讲)
推荐系统的参考阅读
【尾声】遇“荐”之后,江湖再见
推荐系统三十六式
登录|注册

【深度学习】深度学习在推荐系统中的应用有哪些?

刑无刀 2018-04-16
时至今日,深度学习已经不是一个新名词了,由于它的出现,计算机视觉、自然语言理解等领域的从业者都过上了好日子,错误率大幅度降低。
尤其是那些不断号称端到端的建模方式,让还在埋头于特征工程的推荐系统从业者们跃跃欲试,想赶紧引入深度学习大显身手。
经过这些年学界和业界的不断尝试,深度学习在推荐系统中已经有了很多成功的应用。
所以我在这个专栏里面理应本着实用落地的原则给你介绍一下,到底深度学习在推荐系统中有些什么应用,以及到底是怎么回事?

深度学习与推荐系统

深度学习也就是深度神经网络,并不是一个全新的概念,而是枯木逢春;所以它才能在计算力成本下降、效率提升、数据量陡增的今天得以焕发光彩,原来的浅层模型可以逐渐深入,挖掘出事物背后的更多规律和特征。
因此,深度学习的原理在这里并不做过多涉及,如果需要了解,你可以去专攻一下深度学习。
我在这里仅仅用简单的语言力图消除一些概念上的陌生感,在有了一些直观的认识后,直接进入到应用阶段,看看它可以帮助你做什么事。
你还记得矩阵分解吗?矩阵分解是把原来用户和物品之间的大矩阵,分解成了两个小矩阵相乘。这两个小矩阵小在哪?
原始的矩阵中,表示每个用户的向量是物品,表示每个物品的向量是用户,两者向量的维度都特别高不说,还特别稀疏,分解后用户向量和物品向量不但维度变得特别小,而且变稠密了。
业界还把这个稠密的向量叫做隐因子,意图直观说明它的物理意义:用户背后的偏好因子,物品背后的主题因子。
实际上,你完全可以把矩阵分解看成是一种浅层神经网络,只有一层,它的示意图如下。
这个示意图表示了一个用户 Ui,评分过的物品有 I2 和 I4,分解后的矩阵隐因子数量是 2,用户 Ui 的隐因子向量就是 [w1, w2],物品 I2 的隐因子向量是 [w3, w5],物品 I4 的隐因子向量是 [w4, w6]。
可以把矩阵分解看成是一个拥有一个隐藏层的神经网络,得到的隐因子向量就是神经网络的连接权重参数。
在前面的专栏中,我第一次提到深度学习时,还建议你把逻辑回归看成一个没有隐藏层的神经网络。因此,深度学习,也就是深度神经网络并不是那么神秘,只是深。这个“深”代表了事物的某些本质属性。
这种对本质属性的挖掘,有两个好处。
可以更加高效且真实地反映出事物本身的样子。对比一下,一张图片用原始的像素点表示,不但占用空间大,而且还不能反应图片更高级的特征,如线条、明暗、色彩,而后者则可以通过一系列的卷积网络学习而得。
可以更加高效真实地反映出用户和物品之间的连接。对比一下,以用户历史点击过的物品作为向量表示用户兴趣;用这些物品背后隐藏的因子表示用户兴趣,显然后者更高效更真实,因为它还考虑了物品本身的相似性,这些信息都压缩到隐因子向量中了,同时再得到物品的隐因子向量,就可以更加直接平滑地算出用户对物品的偏好程度。
这两个好处,正是深度学习可以帮助推荐系统的地方。第一个叫做 Embedding,就是嵌入,第二个叫做 Predicting,就是预测。
其实两者我在前面的内容都已经有涉及了,矩阵分解得到的隐因子向量就是一种 Embedding,Word2vec 也是一种 Embedding,Wide&Deep 则是用来预测的。关于第二种,具体来说有几个方向:深度神经网络的 CTR 预估,深度协同过滤,对时间序列的深度模型。
下面逐一带你认识。首先就是深度学习的第一种应用。

各种 2vec

你还记得在内容推荐那一章里,我跟你提到过,对内容的挖掘怎么深入都不为过,越深入越好,很多时候甚至优于对排序模型的优化。
那里提到了 Word2vec,用于学习词嵌入向量。当把一个词表示成一个稠密的向量后,就可以计算词的相似度,进而可以计算句子的相似度,也可以直接把这个稠密向量作为特征输入给高级的预测模型。
于是,这个 2vec 的思想,就被发扬光大了。首先还是在文本领域,从 Word2vec 到 Sentence2vec,再到 Doc2vec。其实思想都类似甚至会让你觉得有上当受骗的错觉。
简单介绍一下 Word2vec。你知道,Word2Vec 最终是每个词都得到一个稠密向量,十分类似矩阵分解得到的隐因子向量,得到这个向量有两个训练方法。
先说第一个方法,想象你拿着一个滑动窗口,在一篇文档中从左往右滑动,每一次都有 N 个词在这个窗口内,每移动一下,产生 N-1 条样本。
每条样本都是用窗口内一个词去预测窗口正中央那个词,明明窗口内是 N 个词,为什么只有 N-1 条样本呢?因为正中央那个词不用预测它本身啊。这 N-1 条样本的输入特征是词的嵌入向量,预测标签是窗口那个词。示意图如下所示。
图中把 N-1 个样本放在一起示意的,无法看出隐藏层,实际上,输入时每个词可以用 One-hot 方式表示成一个向量,这个向量长度是整个词表的长度,并且只有当前词位置是 1,其他都是 0。
隐藏层的神经元个数就是最终得到嵌入向量的维度数,最终得到的嵌入向量元素值,实际上就是输入层和隐藏层的连接权重。示意图如下。
至于 Word2vec 的第二种训练方法,则是把上述的 N-1 条样本颠倒顺序,用窗口中央的词预测周围的词,只是把输入和输出换个位置,一样可以训练得到嵌入向量。
这里注意,看上去 Word2vec 是构造了一个监督学习任务,但实际上并不是为了得到一个预测模型,在实际中用词预测词,是为了得到词的嵌入向量,Embedding 本身就是目的。
我们沿着 Word2vec 这种学习嵌入向量的思路想,既然词可以表示成一个稠密向量干这干那,那不如来个 Sentence2vec,把一个句子表示成一个嵌入向量,通常是把其包含的词嵌入向量加起来就完事了。
而 Doc2vec 则略微一点点不同,说明一点,多个句子构成一个段落,所以这里的 Doc 其实就是段落。Doc2vec 在窗口滑动过程中构建 N-1 条样本时,还增加一条样本,就是段落 ID 预测中央那个词,相当于窗口滑动一次得到 N 条样本。
一个段落中有多少个滑动窗口,就得到多少条关于段落 ID 的样本,相当于这个段落中,段落 ID 在共享嵌入向量。段落 ID 像个特殊的词一样,也得到属于自己的嵌入向量,也就是 Doc2vec。
理解了 Word2vec 之后,它在推荐系统中的应用就有举一反三的应用。第一个就是 Product2vec,你看这名字就知道我要干嘛了,对,就是给商品学习一个嵌入向量。
这简直就是照着词嵌入的做法来,把用户按照时间先后顺序加入到购物车的商品,看成一个一个的词,一个购物车中所有的商品就是一个文档;于是照猫画虎学出每个商品的嵌入向量,用于去做相关物品的推荐,或者作为基础特征加入到其他推荐排序模型中使用。
类似的,如果是应用商场的 App 推荐,也可以依计行事,把用户的下载序列看成文档,学习每个 App 的嵌入向量。
虽然,这个嵌入学习得到的结果,样子和矩阵分解得到隐因子向量一样,但是机制不同,可以两者都有,拼接成一个更大的稠密向量去做你喜欢做的事,比如 CTR 预估。
且慢,各种 2vec 的做法其实还不算深度学习,毕竟隐藏层才一层而已。如果要用更深的模型学习嵌入向量,就是深度学习中的 AutoEncoder。
它是一种输入和输出一模一样的神经网络,这个神经网络就一个目的,更加清楚地认识自己,在这个优化目标指导下,学到的网络连接权重都是不同的嵌入向量,所以也叫做 AutoEncoder,自动编码器。
从输入数据逐层降维,相当于是一个对原始数据的编码过程,到最低维度那一层后开始逐层增加神经元,相当于是一个解码过程,解码输出要和原始数据越接近越好,相当于在大幅度压缩原始特征空间的前提下,压缩损失越小越好。
以上是深度学习如何通过学习更好地表达事物特征,帮助推荐系统取得更好效果的做法。
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《推荐系统三十六式》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(11)

  • 异尘
    这里的模型是用作召回的,用softmax的思路同word2vec的预测部分类似,最终目的是得出embeded向量,用过embeded向量可以用很多模糊近邻算法快速召回,后续再应用wide&deep排序
    2018-05-14
    4
  • jacket
    老师,看前面介绍BPR排序模型的时候,我觉得矩阵因子分解的方法,可以预测出同个用户对不同商品的评分,这是同个用户的评分标准,根据评分直接就可以拍个顺序了。这种方法跟BPR比较的话,孰好孰坏那?
    2018-04-18
    2
  • 林彦
    我的理解softmax已经线下预测出用户最有可能看的视频,线上预测如另一个评论所述为了从数百万个视频中计算最可能的N个类(视频),用softmax进行评分或校验计算成本比较高,无法满足线上的延时要求。我们假定物以类聚,找出和最可能的视频相近的N个邻居的效果和用softmax验证每个结果并筛选出最可能的N个是比较相近的。这里看原文的是选出的N个(数百个)视频的排序过程中引入了新的特征,然后用一个和候选集训练模型类似架构的深度神经网络,最后一层换成了逻辑回归来对推荐视频进行评分并排序。开始我还以为能利用近邻搜索的距离。
    2018-04-17
    2
  • 刘大猫
    老师介绍的这部分是matching部分,不是很关注具体的排序,计算softmax成本太大,所以召回的时候用近邻检索,提高效率。
    2018-04-16
    2
  • jt120
    公式解析有问题,youtube的那个实现哪里还能找到资料?

    作者回复: chenkaijiang001@lianjia.com,你给我联系,我发给你。

    2018-04-16
    1
  • haolison
    各位大神好,我是新来的haolison,我收听点播的时候怎么听不到讲课的呢?
    2019-11-10
  • 罗马工匠
    回答下后面思考题,跟大家探讨。embedding暗藏距离的表达,就是生长方式是受某种假设而约束的,同时用户和物品的embedding生长在同一空间,这样就能用embedding来计算相似性。比如word2vec,是基于相似上下文的单词具有相同含义的假设,用词来预测词,softmax表达了这种假设,学出来的embedding天然有相似性表达。而YouTube的则是另一个思路,是协同过滤的深度学习表达,从特征层面可以看做近邻推荐(看过的视频)+side info,从网络结构也可以看做svd++的dl表达。都暗含距离的含义。你甚至都能把这个网络看做side info+word2vec。softmax+损失函数强调的是要预测的物品要有最大概率,这个从技术层面保证你看过的视频跟后来看过的视频间的相似性。
    embedding暗含相似性后,自然可以用距离来求,快捷较准确。
    2019-10-06
    1
  • shangqiu86
    YouTube那篇论文我也看过,也看过一些对该论文解读的部分,感觉论文的大部分介绍的还是特征的选择,希望老师以后可以单独开一些讲解最新最热paper的课,我会继续支持的。
    2019-05-05
  • benying
    youtude做了个user2vec
    2018-11-04
  • 科技狗
    请问老师,YouTube 的ranking 部分,如何对观看时长预测exp(wx+b)和点击概率加权LR同时输出的?
    2018-04-16
  • jt120
    越相似熵越小?
    2018-04-16
    1
收起评论
11
返回
顶部