当前位置: 首页 > 科技观察

机器学习如何发现您喜欢的音乐:音乐个性化背后的科学

时间:2023-03-20 00:59:07 科技观察

这个星期一,和其他星期一一样,超过1亿Spotify用户中的每一个都收到了一个全新的播放列表。该播放列表名为WeeklyDiscovery,混合了30首用户从未听过但可能喜欢的歌曲。效果神奇。我自己是Spotify的忠实粉丝,尤其是每周的发现。为什么?因为我觉得它懂我。它比我生命中的任何人都更了解我的音乐品味。我很高兴它每周都能满足我的需求,因为它总是推荐我自己永远不会发现或不知道喜欢的歌曲。对于那些不知道窗外发生了什么的人,请允许我介绍一下我的虚拟朋友:[Imagecaption:MySpotifyWeeklyDiscoveryPlaylist]没想到,这方面不是我一个人,不仅我周发现了如此迷人——整个用户群都蜂拥而至。这股热潮让Spotify重新聚焦并将更多资源投入到基于算法的播放列表中。DaveHowitz:@Spotfiy每周发现的播放列表令人毛骨悚然地了解我,就像我曾有过濒死体验的前女友。AmandaWhitbred:现在@Spotify的每周发现已经到了如果现在提议我会同意的地步。自从DiscoveryWeekly于2015年首次上线以来,我一直很想知道它是如何运作的(因为我是Spotify的粉丝,所以我喜欢假装在那里工作并研究他们的产品)。经过三个星期的疯狂谷歌搜索,我终于庆幸能够了解一些幕后知识。那么Spotify究竟是如何做到让每个人每周都能挑选30首歌曲的呢?让我们首先仔细看看其他音乐服务如何进行音乐推荐,以及Spotify的出色之处。在线选歌服务简史早在千禧年之初,松杂就开始采用人工选歌的方式为用户提供歌单。手动选择是指所谓的音乐专家或其他编辑人员会手动选择一些他们认为不错的音乐来制作播放列表,然后听众可以直接收听。(后来,BeatsMusic也效仿)。人工选择的效果尚可,但由于这种方式是纯人工选择,方法比较简单,无法兼顾到每个听众音乐品味的细微差异。与Songza一样,Pandora是音乐策划服务的早期参与者之一。它使用稍微更高级的方法而不是手动标记歌曲属性。即大众在听音乐时,会为每首歌曲选择一些描述性的词作为标签。此外,Pandora的程序可以直接过滤特定标签以生成包含相似歌曲的播放列表。大约在同一时间,麻省理工学院媒体实验室下属的一家名为TheEchoNest的音乐信息机构采用了一种完全不同的先进策略来定制音乐。EchoNest使用算法分析音频和音乐的文本内容,用于音乐识别、个性化推荐、播放列表创建和分析等。***,Last.fm采取了不同的方法,采用了另一种至今仍在使用的策略。即利用协同过滤来识别用户可能喜欢的音乐。在这篇文章的后面,我们将讨论更多关于这方面的内容。那么既然其他选曲服务都实现了推荐功能,那么Spotify是如何操作自己神奇的引擎,实现与竞争对手相差数条街的用户口味默契呢?Spotify的三种推荐模型事实上,Spotify并没有使用任何单一的革命性推荐模型,而是混合了其他公司使用的一些最佳策略来创建自己独特而强大的发现引擎。Spotify使用三种主要的推荐模型来创建每周发现:协作过滤模型(即Last.fm最早使用的模型)。它通过分析您和其他用户的行为来工作。自然语言处理(NLP)模型。它通过分析文本来工作。音频模型。它通过分析原始音频通道本身来工作。让我们仔细看看这些推荐模型是如何工作的!推荐模型之一:CollaborativeFiltering首先介绍一下背景:很多人一听到CollaborativeFiltering这个词,马上就会想到Netflix,因为它是最早使用CollaborativeFiltering来实现推荐模型的公司之一。一。它的做法主要是利用用户提交的电影***来计算并推荐那些电影给其他类似的用户。协同过滤自从被Netflix成功应用后迅速传播开来。现在任何想要实现推荐模型的人通常都会将其作为第一次尝试。与Netflix不同,Spotify没有关于其音乐热门评论的数据。Spotify使用的数据是无形的反馈,具体是我们在线听歌的次数,以及其他附加信息,比如用户是否将歌曲保存到个人播放列表,或者听完歌曲后是否继续访问艺术家主页。但什么是协同过滤,它究竟是如何工作的呢?让我们用一个简短的对话来做一个大概的介绍。发生了什么?原来这两个人都有自己的一些歌曲喜好——左边的人喜欢P、Q、R、S这首歌;右边的人喜欢Q、R、S和T。协同过滤系统然后使用这些数据得出结论,“嗯。由于你们都喜欢相同的歌曲——Q、R和S——那么你们可能是相似的用户。所以你应该喜欢对方听了但你还是不听。我以前没听过的歌。”然后系统建议右边的人体验歌曲P,左边的人体验歌曲T。听起来很简单吧?但是Spotify具体是如何应用这个概念,根据***计算用户偏好,从而获得数百万用户歌曲推荐的呢?...矩阵运算,可以用Python库实现。实际上,这里提到的矩阵非常大。每行代表Spotify1.4亿用户中的一个(如果你使用Spotify,你就是这个矩阵中的一行),每列代表Spotify数据库中3亿首歌曲中的一首。头。然后,Python库开始运行这个又长又复杂的矩阵分解公式:计算完成后,系统会生成两种类型的向量,这里命名为X和Y。X是用户向量,代表单个用户的音乐品味。Y为歌曲向量,代表单首歌曲的特征。现在我们有1.4亿个用户向量,每个人一个,还有3亿首歌曲向量。这些vector的具体内容只是一些本身没有意义的数字,但是后面比较的时候会有很大的用处。为了找到与我有相似品味的用户,协同过滤系统将我的向量与其他用户的向量进行比较,最终找到与我最相似的用户。同样的过程适用于Y向量——您可以将歌曲的向量与其他歌曲向量进行比较,以找出哪些歌曲与您正在观看的歌曲最相似。协同过滤效果很好,但Spotify知道添加另一个引擎会使它变得更好。这就是自然语言处理的用武之地。推荐模型2:自然语言处理Spotify采用的第二种推荐模型是自然语言处理。顾名思义,这些模型的源数据是纯语言文本,例如歌曲、新闻文章、博客和Internet上其他文本的元数据。自然语言处理——计算机理解人类语言的能力——本身就是一个巨大的领域,通常通过情感分析应用程序编程接口(API)进行操作。自然语言处理背后的确切机制超出了本文的范围,但这里有一个粗略的概述:Spotify在网络上抓取博客文章和其他与音乐相关的文本,并找出人们对特定艺术家的评价和对歌曲的评论–例如人们经常使用哪些形容词和语言来描述这些歌曲,以及还与他们讨论了哪些其他艺术家和歌曲。虽然我不知道Spotify如何处理他们抓取的数据,但我可以告诉你TheEchoNest如何使用它。他们会将数据分类为“文化载体”和“***评论集”。数以千计的每日更新的***评论集,适用于每位艺术家和歌曲。每个评论都有一个相关的权重,表示其描述的重要性(简单来说,就是某人可能用该评论描述一段音乐的概率)。[EchoNest使用的“文化载体”或“顶级术语”。来自BrianWhitman的表格]然后,类似于协同过滤,自然语言处理模型使用这些评论和权重来创建歌曲表达向量,可以用来判断两首音乐是否相似。很酷吧?推荐模型三:原始音频模型首先,您可能会问这个问题:但是,Sophia,我们已经从前两个模型中获得了如此多的数据!为什么要继续分析音频本身?嗯,首先要说的是,引入第三种模型将进一步提高这个已经很优秀的推荐服务的准确率。但实际上,这个模型还有另一个次要目的:原始音频模型将新歌考虑在内。假设您的创作型歌手朋友刚刚在Spotify上放了一首新歌。也许它只有50条收听记录,所以很少有其他听众协同过滤它。同时,它不会在网上留下太多痕迹,因此自然语言处理模型也不会注意到它。幸运的是,原始音频模型不会区分新歌和热门歌曲。因此,在它的帮助下,您朋友的歌曲也可以与流行歌曲一起出现在每周发现播放列表中。好吧,现在是“如何做”的部分。我们如何分析看起来如此抽象的原始音频数据?……用卷积神经网络!卷积神经网络也是支持面部识别的技术。只是在Spotify的案例中,它们被稍微修改为基于音频数据而不是像素进行处理。这是神经网络架构的示例:[图片来源:SanderDieleman]这个特殊的神经网络有四个卷积层,由左侧的宽条和右侧的三个稍窄的条表示。输入是音频帧的时频表示,它们被连接起来形成一个频谱图。音频帧经过这些卷积层,在最后一个卷积层之后,你可以看到一个“全局临时池化”层。该层汇集整个时间轴上的数据,并在歌曲持续时间内有效地计算和计算学习到的特征。处理后,神经网络得出其对歌曲的理解,包括估计的拍号、音高、音调、节奏和音量等特征。下面是DraftPunk的“环游世界”的30秒剪辑的数据图表。[图片来源:TristanJehan&DavidDesRoches(TheEchoNest)]最终,了解歌曲的这些关键特征可以让Spotify确定歌曲之间的相似程度,以及用户可能会根据他们的收听历史喜欢哪些歌曲。他们。这些基本上涵盖了支持每周发现的推荐工作流程所依赖的三个主要模型。[Cassandra实例]当然,这些推荐模型还与Spotify其他更大的生态系统相连,包括使用海量数据存储和大量Hadoop集群来扩展推荐服务,使引擎能够计算巨型矩阵,无尽的互联网音乐文章和大量音频文件。我希望这篇文章能像当时的我一样激发您的灵感并激起您的好奇心。随着对幕后机器学习技术的理解和欣赏,我现在将通过自己每周的发现来找到我喜欢的音乐。