正在加载... 0:00 11:33


这个星期一---就像它之前的每个星期一一样 - 超过1亿Spotify用户找到了一个新的播放列表,等待着他们名为Discover Weekly。这是他们以前从未听过的30首歌曲的自定义混音带,但可能会喜欢,而且它非常神奇。{#43a9}

我是Spotify的忠实粉丝,尤其是Discover Weekly。为什么?这让我感到 被人看到了。 它知道我的音乐在我的整个生活的味道比任何人更曾经拥有,我每周都多么令人满意的 恰到好处 ,与我可能永远不会发现自己或已知我想轨道始终高兴。{#ad7d }

对于那些住在隔音岩石下的人,让我向您介绍我的虚拟最好的朋友:{#589d} Spotify Discover Weekly播放列表 - 特别是我的播放列表。

事实证明, 我并不是唯一一个对"发现周刊"的痴迷 。用户群为此疯狂,这促使Spotify重新考虑其重点,并将更多资源投入到基于算法的播放列表中。{#98af}

自从2015年发现每周发布以来,我一直渴望知道它是如何运作的(更重要的是,我是Spotify fangirl,所以我有时想假装我在那里工作并研究他们的产品。)经过三周疯狂的谷歌搜索,我觉得我终于在幕后瞥了一眼。{#4de0}

那么Spotify如何为每个人每周选择30首歌曲做出如此惊人的工作呢?让我们缩小一下,了解其他音乐服务如何处理音乐推荐,以及Spotify如何做得更好。{#d50a}


在线音乐策展简史{#784d}

早在2000年代,Songza就开始使用 手动策展 来在线音乐策划场景为用户创建播放列表。这意味着"音乐专家"团队或其他人类策展人会将他们认为听起来不错的播放列表放在一起,然后用户就会收听这些播放列表。 (之后,Beats Music将采用同样的策略。)手动策划工作正常,但它是基于特定策展人的选择,因此 无法考虑每个听众的个人音乐品味。 {#3e68}

像Songza一样,Pandora也是数字音乐策展的原创者之一。它采用了稍微高级的方法,而不是 手动 标记 歌曲的 属性 。这意味着一群人听音乐,为每首曲目选择了一堆描述性的单词,并相应地标记了曲目。然后,潘多拉的代码可以简单地过滤某些标签,以制作类似音乐的播放列表。{#809d}

大约在同一时间,麻省理工学院媒体实验室的一个名为The Echo Nest的音乐情报机构诞生了,它采用了一种激进的,前沿的个性化音乐方法。 Echo Nest使用 算法分析 音乐 的音频和文本内容 ,使其能够执行音乐识别,个性化推荐,播放列表创建和分析。{#d499}

最后,采用另一种方法是Last.fm,它现在仍然存在,并使用一个称为 协同过滤 的过程来识别其用户可能喜欢的音乐,但稍后会更多。{#808c}


因此,如果这是其他音乐策展服务处理建议的方式,Spotify的魔法引擎如何运行?与其他任何服务相比,它如何更准确地确定个人用户的品味?{#1b70}

Spotify的三种推荐模型{#354a}

Spotify实际上并没有使用单一的革命性推荐模型。相反, 它们将其他服务使用的一些最佳策略混合在一起,以创建自己独特的强大发现引擎。 {#80F3实际}

要创建Discover Weekly,Spotify使用三种主要类型的推荐模型:{#606d}

  1. 协作过滤 模型(即Last.fm最初使用的模型),用于分析 您的 行为和 其他 行为。{#81af} {#81af}
  2. 自然语言处理(NLP) 模型,用于分析 文本。 {#a0c4} {#a0c4}
  3. 音频 模型,分析 原始音轨 自己 。{#72ec} {#72ec}

图片来源: Ever Wonder Spotify如何发现每周的作品?数据科学 ,通过Galvanize。

让我们深入了解每种推荐模型的工作原理!{#2359}


建议模型#1:协作过滤{#bb57}

首先,一些背景:当人们听到"协同过滤"这个词时,他们通常会想到Netflix,因为它是最早使用这种方法为推荐模型提供动力的公司之一,将用户的星级电影评级告知其了解哪些电影推荐给其他类似用户。{#ef2f}

在Netflix成功之后,协作过滤的使用迅速传播,现在通常是任何试图制作推荐模型的人的起点。{#ec37}

与Netflix不同,Spotify没有基于星形的系统,用户可以根据该系统评估他们的音乐。相反,Spotify的数据是 隐式反馈 - 具体来说,是曲目的 流计数 和其他流数据,例如用户是否将曲目保存到他们自己的播放列表,或者在听完歌曲后访问了艺术家的页面。{#7a91 }

但是什么 协同过滤,真正的,它是如何工作的?这是一个高级概述,在一个快速对话中解释:{#9eda} 图像来源: Spotify的协同过滤 ,由Erik Bernhardsson,前Spotify提供。

这里发生了什么?这些人中的每一个都有轨道偏好:左边的那个喜欢轨道P,Q,R和S,而右边的那个喜欢轨道Q,R,S和T. {#03ab}

协同过滤然后使用该数据说:{#b468}

"嗯......你们都喜欢三首相同的曲目--- Q,R和S ---所以你们可能是类似的用户。因此,你们每个人都可能会喜欢其他人听过的曲目,你还没有听说过。" {#E782}

因此,它建议右边的那个检查轨道P ---唯一没有提到的轨道,但他的"相似"对应物享受---并且左边的那个检查轨道T,出于同样的推理。简单吧?{#2a40}

但Spotify如何在实践中使用该概念来根据数百万其他用户的偏好计算数百万用户的建议曲目?{#354c}

使用矩阵数学,用Python库完成! {#03d7}

实际上,你在这里看到的这个矩阵是 巨大的每行代表Spotify的1.4亿用户之一--- 如果你使用Spotify,你自己就是这个矩阵中的一排--- 每列代表 Spotify数据库中 3000万首歌曲 中的 一首 。{#2a4e}

然后,Python库运行这个冗长,复杂的矩阵分解公式:{#0370} 一些复杂的数学......

完成后,我们最终得到两种类型的向量,这里用X和Y表示 .X是 用户 向量 ,表示单个用户的品味, Y是 歌曲 向量 ,代表一首单曲的简档。{#7f86} 用户/歌曲矩阵产生两种类型的向量:用户向量和歌曲向量。 图片来源: 从创意到执行:Spotify的发现每周 ,由Chris Johnson,前Spotify。

现在我们有1.4亿用户向量和3000万个歌曲向量。这些向量的实际内容只是一堆基本上没有意义的数字,但在比较时非常有用。{#2acc}

为了找出哪些用户的音乐品味与我的最相似,协同过滤将我的矢量与所有其他用户的矢量进行比较,最终吐出哪些用户是最接近的匹配。 Y矢量, 歌曲也是如此 :您可以将单个歌曲的矢量与所有其他歌曲进行比较,并找出哪些歌曲与所讨论的歌曲最相似。{#a9e9}

协作过滤做得非常好,但Spotify知道他们可以通过添加另一个引擎来做得更好。输入NLP。{#a3da}


建议模型#2:自然语言处理(NLP){#4994}

Spotify采用的第二种推荐模型是 自然语言处理(NLP)模型 。顾名思义,这些模型的源数据是常规 :跟踪元数据,新闻文章,博客和互联网上的其他文本。{#7a47}

自然语言处理是计算机理解人类语音的能力,它本身就是一个广阔的领域,通常通过情感分析API来加以利用。{#8be8}

NLP背后的确切机制超出了本文的范围,但是这里发生的事情非常高:Spotify不断寻找博客文章和其他有关音乐的书面文字,以便弄清楚人们对特定艺术家和歌曲的看法---哪些形容词和特定语言经常用于指代那些艺术家和歌曲,以及哪些其他作者和歌曲也在与他们一起讨论。{#2505}

虽然我不知道Spotify如何选择处理这些已删除数据的具体细节,但我可以根据Echo Nest如何使用它们来提供一些见解。他们将Spotify的数据打包成他们所谓的"文化载体"或"顶级术语"。每个艺术家和歌曲都有成千上万的顶级术语,每天都有变化。每个术语都有一个相关的权重,与其相对重要性相关 - 大概是,某人用该术语描述音乐或艺术家的概率。{#61e9} Echo Nest使用的"文化载体"或"顶级术语"。图片来源:The Echo Nest的联合创始人布莱恩·惠特曼 Brian Whitman)的音乐推荐如何运作 - 并且不起作用

然后,与协同过滤非常相似,NLP模型使用这些术语和权重来创建歌曲的矢量表示,该矢量表示可用于确定两首音乐是否相似。很酷,对吗?{#d7a2}


建议模型#3:原始音频模型{#2120}

首先,一个问题。你可能在想:{#4631}

索菲亚,我们已经拥有前两个模型的大量数据!为什么我们也需要分析音频本身? {#b2bc}

首先,添加第三个模型进一步提高了音乐推荐服务的准确性。但这种模式也成为一个次要目的:不像前两种类型, 原始音频车型采取 新的 歌曲进去。 {#19b7从}

举例来说,你的创作歌手朋友在Spotify上发了一首歌。也许它只有50个听众,所以很少有其他听众可以协同过滤它。它也没有在互联网上的任何地方提及,所以NLP模型不会接受它。幸运的是,原始音频模型不会区分新曲目和流行曲目,因此在他们的帮助下,您朋友的歌曲可能会与流行歌曲一起发布在Discover Weekly播放列表中!{#6ccc}

但是我们如何分析 原始音频数据 呢?{#d72b}

使用 卷积神经网络 !{#358d}

卷积神经网络与面部识别软件中使用的技术相同。在Spotify的情况下,它们已被修改用于音频数据而不是像素。这是一个神经网络架构的例子:{#56ef} 图像来源: 通过深度学习推荐Spotify上的音乐 ,Sander Dieleman。

这个特殊的神经网络有四个 卷积层 ,左边是厚条,三个是密集层,右边是较窄的条。输入是音频帧的时频表示,然后连接或链接在一起,形成频谱图。{#5041}

音频帧通过这些卷积层,在通过最后一个层之后,您可以看到"全局时间池"层,它跨越整个时间轴,有效地计算歌曲时间内学习特征的统计数据。 {#94d2}

在处理之后,神经网络吐出对歌曲的理解,包括诸如估计的 时间签名,键,模式,节奏响度之类的特征。 下面是Daft Punk为"环游世界"提供的30秒片段的数据图。{#8485} 图片来源: Tristan Jehan和David DesRoches,来自Echo Nest

最终,通过阅读歌曲的主要特征,Spotify可以根据自己的收听历史了解歌曲之间的基本相似性,从而了解哪些用户可能会喜欢它们。{#cdf7}


这涵盖了三种主要类型的推荐模型的基础知识,这些模型为Spotify的Recommendations Pipeline提供支持,并最终为Discover Weekly播放列表提供支持!{#0881}

当然,这些推荐模型都与Spotify更大的生态系统相关联,后者包括大量数据存储,并使用 大量 Hadoop集群来扩展建议,使这些引擎能够处理巨大的矩阵,无尽的在线音乐文章和大量的音频文件{#61d6}

我希望这能提供丰富的信息并激发你的好奇心。现在,我将通过自己的Discover Weekly工作,找到我最喜欢的音乐,同时欣赏幕后发生的所有机器学习。 🎶{#c62e}


还要感谢 ladycollective 阅读本文并提出修改建议。 {#0aee}

查看英文原文

查看更多文章

公众号:银河系1号

联系邮箱:public@space-explore.com

(未经同意,请勿转载)