zoukankan      html  css  js  c++  java
  • 【deep learning学习笔记】Recommending music on Spotify with deep learning

    主要内容:
    Spotify是个类似酷我音乐的音乐站点。做个性化音乐推荐和音乐消费。作者利用deep learning结合协同过滤来做音乐推荐。

    详细内容:

    1. 协同过滤

    基本原理:某两个用户听的歌曲都差点儿相同,说明这两个用户听歌的兴趣、品味类似。某两个歌曲,被同一群人听,说明这两个歌曲风格类似。
    缺点:
    (1)没有利用歌曲本身的特征(信息)
    (2)无法对“层级”的item进行处理,对于歌曲来说,这样的层级关系体如今:专辑—主打歌—副歌,上面,这几种因素并非同等重要的
    (3)冷启动问题:协同过滤的方法用用户行为来进行推荐,没有行为的用户和item怎么办?

    2. 基于内容的推荐

    spotify正在进行的尝试,用内容之间的关系(相似度)来进行推荐。content-based recommendation,除了用用户行为信息之外,歌曲内容的信息也能够被用来计算item之间的相似度。

    而作者在这里要尝试的是,依据歌曲本身的音频信号来计算歌曲之间的相似度。

    DL擅好处理音频、图像等原始信息,作者用DL在这里来处理歌曲的音频信息,从而计算歌曲之间的相似度。(个人补充:同一时候,用户听得歌曲列表,也能够看做是一首歌曲,这首歌曲也能够计算和其它歌曲的相似度。这样就计算了用户和某个歌曲的相似程度。进一步作为给当前用户做推荐的理由)


    3. predicting listening preference with deep learning

    将歌曲音频信息、以及歌曲的其它标记信息(专辑、作者等)通过深度神经网络的方式映射到一个低维latent space中,用这个低维空间向量来表示歌曲。

    神经网络的结构例如以下:


    最左端是音频输入层。然后是连个卷及网络,然后是几个全连接的正常神经网络。作者并没有解释为什么是这种网络结构。最后一层40个节点。输出是vector_exp算法的结果,不是softmax。只是从名字上看貌似他俩都差点儿相同,可能一个实现性函数。还有一个是非线性的函数。


    用神经网络的一个问题就是:神经网络的输出是定长的,而歌曲音频(不管从时间还是从文件大小来看)都是变长的,怎样把边长的原始输入映射到定长的神经网络输入其中?——这个也是NLP领域在用神经网络的时候遇到的问题。作者的作法非常粗糙也非常干脆:把音频文件分成3秒钟一个段,然后各段的输入数值取平均值,作为整个歌曲的输入向量。

    对于一个用户。历史上听过非常多歌曲,也是这么处理,终于得到用户的歌曲向量。


    4. 训练

    用MSE准则来训练。

    另一个问题,DL是有监督学习方法。那么神经网络的标准输出是什么?也就是。对于一个给定歌曲,最后40维的标准输出结果是什么?我理解。文章中的意思是标准协同过滤模型、通过LDA等降维之后。当前歌曲相应的维度输出结果。那么,接下来的问题,既然用矩阵分解的结果作为标准,作者为什么还费事训练DL呢?一方面是解决冷启动问题(对于新歌的预測),另一方面,对音频信息与矩阵分解结果做映射,可能就像作者文章最開始说的。也能利用音频本身的信息吧。

    在模型应用上面。训练好神经网络之后,对于一个新歌。可以通过既定的网络參数计算得出这个歌曲的相应的latent representation(40维输出结果);而对于一个用户,通过对他历史听歌习惯来进行计算。也能计算这样一个40维的结果,两个向量夹角就能计算这个用户是否是对这个歌曲感兴趣。

    5. 其它尝试

    作者还做了其它尝试。包含用不同的协同过滤模型分别训练出来40维结果。然后将这些向量拼起来。或者尝试用很多其它层的神经网络。



    6. what is it learning?


    分析详细的学习结果:音频片段等等。


    完。

     


    转载请注明出处:http://blog.csdn.net/xceman1997/article/details/38475083
  • 相关阅读:
    【leetcode】1020. Partition Array Into Three Parts With Equal Sum
    【leetcode】572. Subtree of Another Tree
    【leetcode】123. Best Time to Buy and Sell Stock III
    【leetcode】309. Best Time to Buy and Sell Stock with Cooldown
    【leetcode】714. Best Time to Buy and Sell Stock with Transaction Fee
    【leetcode】467. Unique Substrings in Wraparound String
    【leetcode】823. Binary Trees With Factors
    【leetcode】143. Reorder List
    【leetcode】1014. Capacity To Ship Packages Within D Days
    【leetcode】1013. Pairs of Songs With Total Durations Divisible by 60
  • 原文地址:https://www.cnblogs.com/mfrbuaa/p/5196199.html
Copyright © 2011-2022 走看看