专栏首页ATYUN订阅号用深度学习预测Phish乐队接下来唱什么歌(下)

用深度学习预测Phish乐队接下来唱什么歌(下)

编辑 | sunlei 发布 | ATYUN订阅号

下面我们继续做一个小实验:

实验

迭代1-“撒网”

在锁定模型组件的情况下,我通过对以下超参数的各种设置进行网格搜索来实现广域网:

体系结构:一个LSTM层与两个LSTM层

序列长度:模型需要多长序列才能正确地知道接下来会出现什么歌曲?初始设置为25、50、100、150和250首歌曲。但请记住,这里的权衡是,序列越长,可用的训练示例数量就越少……

LSTM单元的数量:我在50到100之间切换。

LSTM前Dropout:0%-70%(增量)

LSTM后Dropout:0%-70%(增量)

四个经过训练的模型的验证损失与历元(其他约100个经过训练的模型为可解释性而被隐藏)

研究结果

  1. Dropout是至关重要的,但不是太重要。似乎50%的Dropout可以在不过度学习的情况下进行适当的学习。
  2. 正确的学习速度确实加快了收敛速度。
  3. 用更大的模型来解决这个问题并不一定有帮助。更多的参数(即层、LSTM单元)并不一定意味着学习的潜力更大,而且使模型更容易过度拟合。
  4. 输入序列长度为~50是该问题的理想建模方法。任何较短的模型都无法学习某些依赖项,任何较长的模型都会失去关注点,并强调学习不太重要的长期依赖项。
  5. 许多不同的超参数设置和模型大小似乎在相同的损失水平上趋同,相应的精度约为18%到20%。

迭代2-“嵌入深潜”

有了这些知识,我开始了解嵌入表示对我的模型的影响,并查看是否有改进的空间。我首先将嵌入向量的大小从固定长度50切换到100、150、200和250。很明显,较大的嵌入尺寸对整体分类精度(约21%)有轻微的改善,因为它允许模型为每首歌学习更多细微的特征。

解释

这些学习过的嵌入实际上代表什么?

为了更好地理解模型所学习的内容,我提取了嵌入项,执行了主成分分析(PCA),将它们折叠成3维,并在3D中绘制它们。

歌曲嵌入的主要组件的三维可视化-与“幽灵”相似的歌曲以黄色突出显示

正如预期的那样,该模型已经学会了将出现在类似环境中的歌曲联系起来。上面的图像显示了20首与《Ghost》最相似的歌曲——Phish的粉丝们可以在这里找到明显的联系。注意它们在主元分析向量空间中出现的距离有多近……

看到这些学习向量确实有改进的空间,我通过分别创建自己的歌曲嵌入扩展了这个想法。通过训练一个名为CBOW(连续的单词包)的Word2Vec算法,我创建了包含双向上下文和神经网络仅向前上下文的向量。使用这些经过改进的歌曲向量之间的余弦相似性可以揭示一些非常有趣的模式。

六首最相似的歌曲(按降序余弦相似性排序)

上面的图像显示了一首给定的歌曲以及它的9首最相似的歌曲,这些歌曲都是通过Word2Vec模型学习到的。在这个意义上,相似意味着歌曲出现在相同的背景或在一个固定列表的位置。对于熟悉这些歌曲的Phan来说,你会立刻认同:

  • 大卫·鲍伊(David Bowie)提到的乐观向上、精力充沛的“barn burners”
  • 短,快节奏,蓝调小调像火花,作为连接更突出的歌曲
  • 节奏较慢、旋律优美的乐曲与Roggae的节奏一致
  • 老套而受欢迎的安可歌曲

在转移学习的尝试中,我使用这些上下文丰富的嵌入作为我的神经网络嵌入层的初始化参数(而不是随机的)。该网络在嵌入层冻结和未冻结的情况下都进行了训练;后者证明更有效,使我可以将精度略微提高到21.8%。

把一切都包起来

21.8%的准确度有多好?

好吧,首先,这比随机的机会要好得多。一个统计模型能够理解和解释这些微妙的关系,这是相当惊人的,特别是考虑到它不知道这些歌曲实际上是什么样的。然而,现实情况是,这个模型(就像我们人类一样)非常擅长学习以一些特定模式出现的歌曲,而其他模式则相当糟糕。这些特定的模式发生在歌曲出现时:

  1. 作为常见的segues, Phish有一些歌曲(几乎总是)同时出现,一个接一个。我们的模型在相当长的时间内都能正确地处理这些后续的歌曲。(例如“Mike的歌”>“I am Hydrogen”>“Weekapaug Groove”或“The Horse”>“Silent in The Morning”或“Away”> “Steep”)
  2. 作为开场曲
  3. 作为安可曲
  4. 当你猜到是时候休息一下了

模型表现最好的歌曲(按F1评分排序)

改进空间

这种建模方法的一个大问题是它只关注顺序数据……这意味着它没有关于Phish的分类和抽象知识的概念。例如,该模型无法识别[较新的]3.0歌曲是什么,因此,无法理解这些歌曲现在比[较旧/较少见的]1.0歌曲更有可能播放。一个巨大的改进是将分类数据(年代、地点、年份、专辑等)与集合列表序列一起合并到神经网络中。

另一种改进方法(或至少改进相关性)可以是排除前10-15年的数据。如下图所示,Phish在90年代早期播放了大部分节目(1994年有128个节目!)当他们播放的独特歌曲相对较少时(今天超过850首歌曲中约375首),这意味着我们的大多数训练数据严重倾斜,无法学习与这375首歌曲相关的模式(在Phish 1.0期间)。一个很好的例子是” Cold as Ice ” > ” Cracklin Rosie ” > ” Cold as Ice “;在1992-1995年期间,它被演出了46次,之后只演出了4次。

让事情变得更复杂的是,Phish经常演出一些歌曲,而这些歌曲现在很少出现了。更不用说,从Phish 1.0开始出现的新歌(而且还在继续出现)整体上播放频率更低,因此可以学习的模式也更少。因此,这是一个很难建模的问题。

设置列表生成

使用新训练的神经网络[巧妙地命名为TrAI],我们可以递归地进行预测,以根据最近播放的50首歌曲的输入生成Phish的下一个设置列表。在没有进一步告别的情况下,以下是TrAI对2019年11月29日在里约热内卢普罗维登斯举行的秋季巡回赛开幕式的预测:

TrAI预计将于2019年11月29日在佛罗里达州普罗维登斯举行下一场演出

这个项目使用的工具有:Python、Keras、Tensorflow、Gensim、Jupyter、Anaconda、Tableau和Tensorboard。所有支持代码都可以在我的Github repo中找到。

原文链接:

https://towardsdatascience.com/predicting-what-song-phish-will-play-next-with-deep-learning-947ccce3824d

本文分享自微信公众号 - ATYUN订阅号(atyun_com)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-12-01

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 如何把自己包装成程序员大佬?这里有一份「装 X 指南」

    程序员都是巫师 —— 是一些能把咖啡变成代码的衣着简陋的穷人。我不懂巫术,我只是个魔术师。我的工作是伪装成程序员,甚至比真正的程序员看起来更像程序员。

    GitHubDaily
  • 用最少的时间学最多的数据挖掘知识(附教程&数据源)| CSDN博文精选

    最近笔者学到了一个新词,叫做“认知折叠”。就是将复杂的事物包装成最简单的样子,让大家不用关心里面的细节就能方便使用。作为数据科学领域从业者,我们所做的事情就是用...

    AI科技大本营
  • 38个常用Python库:数值计算、可视化、机器学习等8大领域都有了

    数值计算是数据挖掘、机器学习的基础。Python提供多种强大的扩展库用于数值计算,常用的数值计算库如下所示。

    Datawhale
  • 从Python代码到APP,你只需要一个小工具:GitHub已超3000星

    机器学习开发者想要打造一款 App 有多难?事实上,你只需要会 Python 代码就可以了,剩下的工作都可以交给一个工具。近日,Streamlit 联合创始人 ...

    1480
  • 2019Kaggle最新DS&ML报告:你大爷还是你大爷!

    近日,Kaggle发布了名为《2019Kaggle数据科学和机器学习概要》的报告。此报告为Kaggle对其社区的第三次年度调查,调查内容来自19717个Kagg...

    量化投资与机器学习微信公众号
  • pytorch基础知识-Logistic regression

    本节课较轻松,将简单介绍一下Logistic regression的定义和原理。对于(linear regression)线性回归模型,y=xw+b,输入为x,...

    用户6719124
  • Python快速实战机器学习(6) 非线性支持向量机

    机器学习是如今人工智能时代背景下一个重要的领域。这个“Python快速实战机器学习”系列,用Python代码实践机器学习里面的算法,旨在理论和实践同时进行,快速...

    HuangWeiAI
  • 【每周CV论文推荐】 初学活体检测与伪造人脸检测必读的文章

    欢迎来到《每周CV论文推荐》。在这个专栏里,还是本着有三AI一贯的原则,专注于让大家能够系统性完成学习,所以我们推荐的文章也必定是同一主题的。

    用户1508658
  • 从Gartner IT Symposium,看RPA “一半是海水一半是火焰”

    2019年,艺赛旗和Gartner建立了咨询合作,并在企业发展策略中汲取了Gartner的部分建议。今年Gartner在全球召开了多场IT Symposium,...

    用户5035951
  • pytorch-过拟合与欠拟合(下)

    那么如何衡量不同模型的学习能力呢,我们将这个能力叫为:model capacity。正常上认为次幂数越高可表达的能力越大。目前随着硬件技术的发展,能构建的神经网...

    用户6719124

扫码关注云+社区

领取腾讯云代金券