作家
登录

我们分析了最流行的歌词,教你用RNN写词编曲(附代码)

作者: 来源: 2018-03-16 11:55:43 阅读 我要评论

  • 'Kanye West',
  • 'Katy Perry',
  • 'The Killers',
  • 'Kiss',
  • 'Lady Gaga',
  • 'Lana Del Rey',
  • 'Linkin Park',
  • 'Madonna',
  • 'Marilyn Manson',
  • 'Maroon 5',
  • 'Metallica',
  • 'Michael Bolton',
  • 'Michael Jackson',
  • 'Miley Cyrus',
  • 'Nickelback',
  • 'Nightwish',
  • 'Nirvana',
  • 'Oasis',
  • 'Offspring',
  • 'One Direction',
  • 'Ozzy Osbourne',
  • 'P!nk',
  • 'Queen',
  • 'Radiohead',
  • 'Red Hot Chili Peppers',
  • 'Rihanna',
  • 'Robbie Williams',
  • 'Rolling Stones',
  • 'Roxette',
  • 'Scorpions',
  • 'Snoop Dogg',
  • 'Sting',
  • 'The Script',
  • 'U2',
  • 'Weezer',
  • 'Yellowcard',
  • 'ZZ Top']
  • 练习无前提的字符级说话模型

    为了更具体地介绍RNNs,推荐以下资本。

    第一个实验是在全部语料库上练习我们的字符级说话模型RNN,在练习时没有推敲艺术家的信息。

    大年夜RNN采样

    大年夜声调程度的RNN采样

    在练习完模型之后,我们试着抽出几首歌。根本上,RNN每一步都邑输出logits,我们可以应用softmax函数大年夜分布中取样。或者可以直接应用Gumble-Max技能采样,这和直接应用logits是等价的。

    抽样的一个有趣之处是,我们可以对输入序列进行部分定义,并在初始前提下开端采样。举个例子,我们采样以"Why"开首的歌曲:

    • Why do you have to leave me?
    • I think I know I'm not the src="http://s1.51cto.com/oss/201803/16/e1260cdf38674de6a5801993988f1489.jpeg" />

      当τ=1时,分布不受影响。如不雅我们削减 τ,分布变得加倍明显,意味着有更大年夜概率质量的值会增长。当τ 接近零时,采样将相当于argmax,因为该值的概率接近于1。当我们开端增长τ 时,分布变得越来越平均。

      之前的样本是在"temperature"参数等于0.5的情况下生成的,让我们看看当我们增长到1.0时会产生什么:

      • Why can't we drop out of time?
      • We were born for words to see.
      • Won't you love this. You're still so amazing.
      • This could be that down src="http://s5.51cto.com/oss/201803/16/e1260cdf38674de6a5801993988f1489.jpeg" />

        让我们对模型做一个小的慢慢改进,让每个字母的概率只取决于页堪馋现的字母(马尔科夫假设)。所以,根本上我们会有p(current letter|previous letter)。这是一个马尔科夫链模型(如不雅你不熟悉,也可以测验测验这些交互式可视化)。我们还可以大年夜练习数据集中估计概率分布p(current letter|previous letter)。但这个模型是有限的,因为在大年夜多半情况下,当缁ぶ母的概率不仅取决于前一个字母。

        即使对于一个不熟悉音乐理论的仁攀来说,这种表示方法也很直不雅,轻易懂得。每行代表一个音高:高处的行代表低频部分,低处的行代表高频部分。别的,我们有一个代表时光的横轴。所以如不雅我们在一准时光内播放必定声调的声音,我们会看到一条程度线。总而言之,这与YouTube上的钢琴教程异常类似。

        如今,我们来看看字符级模型和新义务之间的类似之处。在今朝的情况下,给定页堪播放过的所有声调, 我们将猜测下一?时光步将要播放的声调。所以,如不雅你看一下钢琴键轴的图,每一列代表某种音乐字符,给定所有以前的音乐字符,猜测下一?音乐字符。我们留意依一下文字字符与音乐字符的差别。回想一下,说话模型中的每个字符都是由one-hot向量表示的(意思是我向量中只有一个值是1,其他都是0)。对于音乐字符,可以一次按下多个键(因为我们正在处理复音数据集)。在这种情况下,每个时光步将由一个可以包含多个1的向量表示。

        在开端练习之前,根据在前面评论辩论过的不合的输入,须要调剂我们用于说话模型的损掉函数。在说话模型中,我们在每个时光步上都有one-hot的编码张量(字符级)作为输入,用一个one-hot的编码张量作为输出(猜测的下一?字符)。因为猜测的下一?字符时应用独有,我们应用交叉熵损掉。

        然则如今我们的模型输出一个不再是one-hot编码的矢量(可以按多个键)。当然,我们可以将所有可能的按键组合作为一个零丁的类来处理,然则这是比较难做的。相反,我们将输出向量的每个元素作为一个二元变量(1表示正在按键,0表示没有按键)。我们将为输出向量的每个元素定义一个零丁的损掉为二叉交叉熵。而我们的最终损掉将是求这些二元交叉熵的平均和。可以浏览代码以获得更好的懂得。

        按照上述的修改后,练习模型。鄙人一节中,我们将履行采样并检查结不雅。

        在优化的早期阶段,我们采样了钢琴键轴:

        我们分析了最风行的歌词,教你用RNN写词编曲(附代码)

        可以看到,模型正在开端进修数据集中歌曲常见的一种常见模式:1首歌曲由2个不合的部分构成。第一部分包含一系列自力播放的节拍,异常易辨,平日是可唱(也称为旋律)。如不雅看着采样的钢琴键轴图,这部分在底部。如不雅不雅察钢琴卷轴的顶部,可以看到一组平日一路吹奏的音高 - 这是伴跟着旋律的和声或和音(在全部歌曲一一路播放的部分)的进行。

        练习停止后,大年夜模型中采取样本如下图所示:

        我们分析了最风行的歌词,教你用RNN写词编曲(附代码)

          推荐阅读

          10个公有云实践成功经验

        因为Seidita的团队已经大年夜云中收集了最佳实践,并将其应用于MetLife本身的数据中间,是以迁徙到Azure和Softlayer能获得额外的好处。“我们已经可以或许在内部和外部应用同样的才能来实现主动化>>>详细阅读


        本文标题:我们分析了最流行的歌词,教你用RNN写词编曲(附代码)

        地址:http://www.17bianji.com/lsqh/40773.html

    关键词: 探索发现

    乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

    网友点评
    自媒体专栏

    评论

    热度

    精彩导读
    栏目ID=71的表不存在(操作类型=0)