推荐系统三十六式
刑无刀
“贝壳找房”资深算法专家,8年推荐系统工程师
立即订阅
11390 人已学习
课程目录
已完结 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讲)
推荐系统的参考阅读
【尾声】遇“荐”之后,江湖再见
推荐系统三十六式
登录|注册

【深度学习】用RNN构建个性化音乐播单

刑无刀 2018-04-18
时间是一个客观存在的物理属性,很多数据都有时间属性,只不过大多时候都把它忽略掉了。前面讲到的绝大多数推荐算法,也都没有考虑“用户在产品上作出任何行为”都是有时间先后的。
正是认识到这一点,有一些矩阵分解算法考虑了时间属性,比如 Time-SVD;但是,这种做法只是把时间作为一个独立特征加入到模型中,仍然没有给时间一个正确的名分。

时间的重要性

时间属性反应在序列的先后上,比如用户在视频网站上观看电视剧会先看第一集再看第二集,股市数据先有昨天的再有今天的,说“我订阅了《推荐系统 36 式》专栏”这句话时,词语也有先后,这种先后的关系就是时间序列。
具体到推荐系统领域,时间序列就是用户操作行为的先后。绝大数推荐算法都忽略操作的先后顺序,为什么要采取这样简化的做法呢?因为一方面的确也能取得不错的效果,另一方面是深度学习和推荐系统还迟迟没有相见。
在深度学习大火之后,对时间序列建模被提上议事日程,业界有很多尝试,今天以 Spotify 的音乐推荐为例,介绍循环神经网络在推荐系统中的应用。

循环神经网络

循环神经网络,也常被简称为 RNN,是一种特殊的神经网络。再回顾一下神经网络的结构,示意图如下:
普通神经网络有三个部分,输入层 x,隐藏层 h,输出层 o,深度神经网络的区别就是隐藏层数量有很多,具体多少算深,这个可没有定论,有几层的,也有上百层的。
把输入层和隐藏层之间的关系表示成公式后就是:
就是输入层 x 经过连接参数线性加权后,再有激活函数 F 变换成非线性输出给输出层。
在输出层就是:
隐藏层输出经过输出层的网络连接参数线性加权后,再由输出函数变换成最终输出,比如分类任务就是 Softmax 函数。
那循环神经网络和普通神经网络的区别在哪?
区别就在于:普通神经网络的隐藏层参数只有输入 x 决定,因为当神经网络在面对一条样本时,这条样本是孤立的,不考虑前一个样本是什么,循环神经网络的隐藏层不只是受输入 x 影响,还受上一个时刻的隐藏层参数影响。
我们把这个表示成示意图如下:
解释一下这个示意图。在时刻 t,输入是 xt,而隐藏层的输出不再是只有输入层 xt,还有时刻 t-1 的隐藏层输出 h(t-1),表示成公式就是:
对比这个公式和前面普通神经网络的隐藏层输出,就是在激活函数的输入处多了一个 。别小看多这一个小东西,它背后的意义非凡。
我一直在传递一个观点,隐藏层的东西,包括矩阵分解和各种 Embedding 得到的隐因子,是对很多表面纷繁复杂的现象所做的信息抽取和信息压缩。
那么上一个时刻得到的隐藏层,就是对时间序列上一个时刻的信息压缩,让它参与到这一个时刻的隐藏层建设上来,物理意义就是认为现在这个时刻的信息不只和现在的输入有关,还和上一个时刻的状态有关。这是时间序列本来的意义,也就是循环神经网络的意义。
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《推荐系统三十六式》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(8)

  • 哎哎哎
    请问一下,能分享一下rnn在业界的应用效果吗?Spotify真的用rnn了吗?相比较线上效果如何呢?如何部署上线呢?老师,希望多来一些业界应用和经验分享啊
    2018-04-18
    8
  • 异尘
    有个问题请教下老师,我的理解,这个RNN模型考虑了用户的历史播放行为来做预测,应该是针对某个特定用户的,如果我们需要给每个用户做个性化推荐,岂不是需要训练非常多的RNN模型?(每个用户一个)
    2018-05-14
    2
  • zc
    就是输入层 x 经过连接参数线性加权后,再有激活函数 F 变换成非线性输出给输出层。

    看公式,是不是应该 输出给隐藏层?
    2018-04-18
    1
  • Jun60
    感觉这部分说的有点虚,对于的RNN实际应用没有具体的讲解,过于概括
    2019-07-17
  • shangqiu86
    这里是否跟上一张youTube存在一样的问题,分类的类别可能上亿,效率如何?是否可以把歌曲进行分类,把输入歌单也映射成类别,用类别序列预测类别,不过往往用户听歌喜欢听一某个特定类别的序列。
    老师,训练样本选取以及处理的时候是不是先对每个歌曲进行embedding,然后将用户形成的歌曲列表中每首歌的embedding向量相加,或者取平均,然后塞入模型中?RNN是否换成lstm或者GRU来试下,效果如何?有单独介绍这个实践的文章吗?
    2019-05-05
  • 🐱您的好友William🐱
    这个只是最简单的版本吧,只考虑每个歌单的顺序,并没有结合不同用户的feature之类的。assumption是大家听了这个歌之后都听了下一个歌,那么你一定喜欢下一个歌。现实有点差距啊。
    2018-10-08
  • 林彦
    有些好奇对于无标注或少标注的时间序列数据有没有什么RNN的无监督深度学习变体可以处理,而且有开源或成熟的工具可以落地。我之前遇到过一个被叫作Nonlinear Autoregressive Network(NAN)的算法用来处理时间序列数据,没搜索到这种名字的算法的在时间序列数据上的计算应用细节。
    2018-04-19
  • 有实际例子?
    2018-04-19
收起评论
8
返回
顶部