推荐系统三十六式
刑无刀
“贝壳找房”资深算法专家,8 年推荐系统工程师
43607 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 40 讲
开篇词 (1讲)
原理篇 · 深度学习 (2讲)
原理篇 · 其他应用算法 (3讲)
推荐系统三十六式
15
15
1.0x
00:00/00:00
登录|注册

20 | 用RNN构建个性化音乐播单

误差方向传播
逻辑回归模型参数训练
隐藏层计算公式
分类任务计算
多分类问题
用户会话信息
个性化播单生成
循环神经网络应用
非时序数据计算
电台音乐DJ编排
网络音乐推荐
用户操作行为
股市数据
观看电视剧
Time-SVD
应用领域
状态之间的网络连接
循环神经网络应用
参数训练
建模
数据
生成方式
应用场景
区别
隐藏层参数
普通神经网络结构
RNN结构
应用领域
反映先后顺序
矩阵分解算法
时间先后
数据的时间属性
物理属性
总结
播单生成
循环神经网络
时间序列的重要性
推荐算法
时间属性
用RNN构建个性化音乐播单

该思维导图由 AI 生成,仅供参考

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

时间的重要性

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

循环神经网络

循环神经网络,也常被简称为 RNN,是一种特殊的神经网络。再回顾一下神经网络的结构,示意图如下:
普通神经网络有三个部分,输入层 x,隐藏层 h,输出层 o,深度神经网络的区别就是隐藏层数量有很多,具体多少算深,这个可没有定论,有几层的,也有上百层的。
把输入层和隐藏层之间的关系表示成公式后就是:
就是输入层 x 经过连接参数线性加权后,再有激活函数 F 变换成非线性输出给输出层。
在输出层就是:
隐藏层输出经过输出层的网络连接参数线性加权后,再由输出函数变换成最终输出,比如分类任务就是 Softmax 函数。
那循环神经网络和普通神经网络的区别在哪?
区别就在于:普通神经网络的隐藏层参数只有输入 x 决定,因为当神经网络在面对一条样本时,这条样本是孤立的,不考虑前一个样本是什么,循环神经网络的隐藏层不只是受输入 x 影响,还受上一个时刻的隐藏层参数影响。
我们把这个表示成示意图如下:
解释一下这个示意图。在时刻 t,输入是 xt,而隐藏层的输出不再是只有输入层 xt,还有时刻 t-1 的隐藏层输出 h(t-1),表示成公式就是:
对比这个公式和前面普通神经网络的隐藏层输出,就是在激活函数的输入处多了一个 。别小看多这一个小东西,它背后的意义非凡。
我一直在传递一个观点,隐藏层的东西,包括矩阵分解和各种 Embedding 得到的隐因子,是对很多表面纷繁复杂的现象所做的信息抽取和信息压缩。
那么上一个时刻得到的隐藏层,就是对时间序列上一个时刻的信息压缩,让它参与到这一个时刻的隐藏层建设上来,物理意义就是认为现在这个时刻的信息不只和现在的输入有关,还和上一个时刻的状态有关。这是时间序列本来的意义,也就是循环神经网络的意义。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文介绍了如何利用循环神经网络(RNN)构建个性化音乐播单的方法。文章首先强调了时间属性在数据中的重要性,尤其在推荐系统中,用户操作行为的先后顺序对推荐结果有着重要影响。随后详细介绍了循环神经网络的结构和与普通神经网络的区别,强调了RNN隐藏层的参数不仅受输入影响,还受上一个时刻的隐藏层参数影响,从而适用于时间序列建模。在此基础上,文章进一步探讨了循环神经网络在音乐推荐系统中的应用,特别是在播单生成方面的应用。通过将音乐播单的生成看作是歌曲时间序列的生成,利用用户当前特征和上一首歌的影响,实现了个性化的播单推荐。最后,文章提到了个性化播单生成所需的数据,包括已有播单和用户的会话信息,将这些数据视作文档中的词,从而实现了对音乐播单的个性化推荐。整体而言,本文通过介绍RNN的原理和在音乐推荐系统中的应用,展示了利用RNN构建个性化音乐播单的技术特点和优势。文章还简要介绍了神经网络参数的训练方法,强调了循环神经网络在时间序列数据建模中的重要性。文章以播单推荐为例,但也指出了循环神经网络在其他领域的潜在应用,为读者提供了进一步探索的思路。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《推荐系统三十六式》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(10)

  • 最新
  • 精选
  • 哎哎哎
    请问一下,能分享一下rnn在业界的应用效果吗?Spotify真的用rnn了吗?相比较线上效果如何呢?如何部署上线呢?老师,希望多来一些业界应用和经验分享啊
    2018-04-18
    10
  • Jun60
    感觉这部分说的有点虚,对于的RNN实际应用没有具体的讲解,过于概括
    2019-07-17
    5
  • 寒玉阳
    哎,我不知道这个东西老师在实际中有无落地,但你说的这些东西很虚,基本就是些rnn的原理和链式求导仅此而已,这课从我这不会在传到其他人手里了
    2021-07-30
    4
  • 异尘
    有个问题请教下老师,我的理解,这个RNN模型考虑了用户的历史播放行为来做预测,应该是针对某个特定用户的,如果我们需要给每个用户做个性化推荐,岂不是需要训练非常多的RNN模型?(每个用户一个)
    2018-05-14
    4
  • 王东
    我感觉这个很难工程化落地,效果应该也一般吧
    2020-04-01
    2
  • shangqiu86
    这里是否跟上一张youTube存在一样的问题,分类的类别可能上亿,效率如何?是否可以把歌曲进行分类,把输入歌单也映射成类别,用类别序列预测类别,不过往往用户听歌喜欢听一某个特定类别的序列。 老师,训练样本选取以及处理的时候是不是先对每个歌曲进行embedding,然后将用户形成的歌曲列表中每首歌的embedding向量相加,或者取平均,然后塞入模型中?RNN是否换成lstm或者GRU来试下,效果如何?有单独介绍这个实践的文章吗?
    2019-05-05
    1
  • 有实际例子?
    2018-04-19
    1
  • zc
    就是输入层 x 经过连接参数线性加权后,再有激活函数 F 变换成非线性输出给输出层。 看公式,是不是应该 输出给隐藏层?
    2018-04-18
    1
  • 🐱您的好友William🐱
    这个只是最简单的版本吧,只考虑每个歌单的顺序,并没有结合不同用户的feature之类的。assumption是大家听了这个歌之后都听了下一个歌,那么你一定喜欢下一个歌。现实有点差距啊。
    2018-10-08
  • 林彦
    有些好奇对于无标注或少标注的时间序列数据有没有什么RNN的无监督深度学习变体可以处理,而且有开源或成熟的工具可以落地。我之前遇到过一个被叫作Nonlinear Autoregressive Network(NAN)的算法用来处理时间序列数据,没搜索到这种名字的算法的在时间序列数据上的计算应用细节。
    2018-04-19
收起评论
显示
设置
留言
10
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部