20 | 用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
《推荐系统三十六式》,新⼈⾸单¥59
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(10)
- 最新
- 精选
- 哎哎哎请问一下,能分享一下rnn在业界的应用效果吗?Spotify真的用rnn了吗?相比较线上效果如何呢?如何部署上线呢?老师,希望多来一些业界应用和经验分享啊2018-04-1810
- Jun60感觉这部分说的有点虚,对于的RNN实际应用没有具体的讲解,过于概括2019-07-175
- 寒玉阳哎,我不知道这个东西老师在实际中有无落地,但你说的这些东西很虚,基本就是些rnn的原理和链式求导仅此而已,这课从我这不会在传到其他人手里了2021-07-304
- 异尘有个问题请教下老师,我的理解,这个RNN模型考虑了用户的历史播放行为来做预测,应该是针对某个特定用户的,如果我们需要给每个用户做个性化推荐,岂不是需要训练非常多的RNN模型?(每个用户一个)2018-05-144
- 王东我感觉这个很难工程化落地,效果应该也一般吧2020-04-012
- shangqiu86这里是否跟上一张youTube存在一样的问题,分类的类别可能上亿,效率如何?是否可以把歌曲进行分类,把输入歌单也映射成类别,用类别序列预测类别,不过往往用户听歌喜欢听一某个特定类别的序列。 老师,训练样本选取以及处理的时候是不是先对每个歌曲进行embedding,然后将用户形成的歌曲列表中每首歌的embedding向量相加,或者取平均,然后塞入模型中?RNN是否换成lstm或者GRU来试下,效果如何?有单独介绍这个实践的文章吗?2019-05-051
- 风有实际例子?2018-04-191
- zc就是输入层 x 经过连接参数线性加权后,再有激活函数 F 变换成非线性输出给输出层。 看公式,是不是应该 输出给隐藏层?2018-04-181
- 🐱您的好友William🐱这个只是最简单的版本吧,只考虑每个歌单的顺序,并没有结合不同用户的feature之类的。assumption是大家听了这个歌之后都听了下一个歌,那么你一定喜欢下一个歌。现实有点差距啊。2018-10-08
- 林彦有些好奇对于无标注或少标注的时间序列数据有没有什么RNN的无监督深度学习变体可以处理,而且有开源或成熟的工具可以落地。我之前遇到过一个被叫作Nonlinear Autoregressive Network(NAN)的算法用来处理时间序列数据,没搜索到这种名字的算法的在时间序列数据上的计算应用细节。2018-04-19
收起评论