制作音乐:简单的解决方案胜过深度学习

我向您介绍“如何创造音乐:当简单的解决方案在效果上胜过深度学习时”的翻译,内容涉及如何使用人工智能来创造音乐。 作者不使用神经网络生成音乐,而是在音乐的旋律与和声基础上基于音乐理论知识来完成任务。 本文的另一个特点是基于自相似矩阵比较音乐作品的方法。 当然,这种方法并不详尽,但是它可用作使用机器学习方法生成高质量音乐的中间步骤。


如今,在娱乐和商业目的中,人工智能在创造力中的使用已变得越来越普遍,并且已经不再使公众感到惊奇。 一方面,这些是用于更改像Prizma这样的图像样式的工具。 另一方面,一个神经网络,其产品在佳士得拍卖会上作为图片出售,价格为43.25万美元。 我们不得不回想起我们的国内机器学习音乐生成专家Ivan Yamshchikov,他是几年前推出的神经防御项目的专家(更多详细信息可以在这里找到,这是Ivan在Khabr上的专访 )。 使用神经网络生成音乐的另一个很好的例子是文章“ Androids Dream of Electric Punk吗?” 我如何教神经网络写音乐”,作者: Artezio

除了了解机器学习的理论外,使用人工智能解决创造性问题还需要艺术领域的专业知识。 这使得在两个领域交界处的项目特别多面且有趣,但也容易受到来自双方的批评,因为该项目可能会陷入艺术评论家和数据科学家的评论交火中。

作为在音乐中使用人工智能的主题的一部分,我扩大了视野,遇到了一篇文章“我们创造音乐:当简单的解决方案在效率方面优于深度学习” ,我想将其翻译介绍给Habr社区。 对我而言,本文的优势之一是作者没有将神经网络用作黑匣子,而是基于音乐理论知识,基于旋律和和声的方法来完成音乐的生成任务。 在本文中,既没有使用递归神经网络(RNN,LSTM),也没有使用生成对抗网络(GANs)-所有这些方法都给出了惊人的结果(例如,在文章“ Androids Dream of Electric Pank吗?我如何教神经网络写音乐”) ),并在CleverData上积极使用它们来解决问题。 作者强调了基于马尔可夫链的模型,该模型可以处理从音乐作品的当前状态过渡到下一音乐状态的可能性。 作者使用的方法还有一个额外的优势:作者不必为了使用一种流行且流行的算法而牺牲结果的可解释性。

这篇文章的另一个引起我注意的特征是一种有趣的方法,用于比较基于自相似矩阵的音乐作品。 如果歌曲的结构可以表示为自相似矩阵,则出现另一种比较歌曲的定量方法。


* * *


简介 :我如何遇到问题,如何使用深度学习来创作音乐以及如何通过提出自己的解决方案来解决它。

计划


挑战 :当我使用深度学习技术创作流行音乐时,如何遇到问题。
解决方案 :我如何创建自己的音乐制作机器,该机器可以与深度学习竞争,但基于更简单的解决方案。
评估 :如何创建评估指标,以数学方式证明我的音乐比通过深度学习创建的音乐“更像流行音乐”。
概括 :如何找到一种方法将我的解决方案应用于与音乐无关的问题。


蛋糕上的樱桃


我创建了一个简单的概率模型来生成流行音乐。 而且,使用客观指标,我可以自信地说,由模型创建的音乐比使用深度学习技术创建的音乐更像流行音乐。 我是怎么做到的? 在某种程度上,我通过专注于流行音乐对我的本质实现了这一点:和谐与旋律之间的统计关系。

旋律是发声,是动机。 和谐是和弦,和弦的序列。 在钢琴上,用右手演奏旋律,用左手演奏和声。

挑战赛


在研究他们之间的关系之前,让我首先概述一下问题。 该项目始于我的愿望,即我希望尝试通过深度学习来创作音乐-就像人们所说的AI。 我很快就来到了LSTM(长期短期记忆),这是循环神经网络(RNN)的版本之一,在生成文本和制作音乐中非常流行。

但是,我读的主题越多,就越开始怀疑使用RNN及其变体创建流行音乐的逻辑。 这种逻辑似乎是基于一些关于(流行)音乐内部结构的假设,我不能完全同意。

一个具体的假设是和声与旋律之间的独立关系(有关两者的定义,请参见上文)。

例如,考虑2017年多伦多大学出版的《 Pi的歌曲:流行音乐生成的音乐上合理的网络》 (Han Chu等)。 在本文中,作者清楚地“建议……和弦不依赖于旋律”(斜体)。 基于此假设,作者构建了一个复杂的多层RNN模型。 为旋律选择一个单独的层,在其中创建音符(键层,压榨层),而与和弦层(Chord Layer)无关。 除独立性外,此特定模型还假设和声基于旋律。 换句话说,和声取决于生成音符时的旋律。

韩楚提出的RNN模型。 每层负责音乐的一个独立方面。

这种建模方式对我来说似乎很奇怪,因为它与人们编写流行音乐的方式完全不同。 作为古典学校的钢琴家,我从未考虑过在未先表示和声的情况下作曲。 和声定义并削减了旋律。 Awesome Axis在其曾经的病毒式视频中长期以来就证明了这一想法的准确性。


该视频演示了西方流行音乐的主要特征:这种和声,这四个和弦强烈地影响了旋律的最终效果。 用数据科学的语言,条件概率控制并确定和声与旋律之间的统计关系。 发生这种情况是因为旋律的音符自然取决于和谐音符。 因此,可以说和声音符固有地指示可以在特定歌曲中选择哪些旋律音符。

解决方案


我喜欢找到解决复杂问题的原始方法。 因此,我决定建立自己的模型,以自己的方式反映音乐数据的丰富结构。 我从关注预定概率概率开始,该概率决定了不同音符之间的关系。 例如,我在上面提到了和声与旋律之间的“垂直”关系。

(处理中)数据


作为数据,我使用了20种Midi格式的西方流行歌曲(可以在此处找到完整的歌曲列表)。

使用music21 python库,我使用Markov链分析了midi文件。 这使我能够在输入中突出显示不同类型注释之间的统计关系。 特别是,我计算了音符的过渡概率。 本质上,这意味着通过观察音符从一个到另一个的过渡,我们可以计算出这种过渡发生的可能性。 (下面有更详细的说明)

Midi:歌曲的数字版本

首先,我提取了和弦和旋律之间过渡的“垂直”概率。 我还根据数据集计算了旋律音符之间的所有“水平”过渡概率。 我执行此过程是为了获得和谐音符。 下表显示了音乐数据中不同类型的音符之间的三种不同过渡矩阵的示例。

过渡选项,选项。 上-在和声与旋律之间。 中音-旋律的音符之间。 较低-和谐音符之间。

型号


基于这三个概率模型,我的模型将如下所示:

  1. 选择可用的任意和声音符;
  2. 使用第一个概率矩阵基于和声音符选择旋律音符;
  3. 根据第二概率矩阵,根据前一个旋律音符选择旋律音符;
  4. 重复第3步,直到到达特定终点为止。
  5. 使用第三概率矩阵,根据先前的和声选择新的和声;
  6. 重复步骤1-4,直到完成为止。



该算法应用的一个具体示例:

  1. 程序选择了和弦音符(F)。
  2. 此音符有4种变奏音符。 给定使用音符的可能性很高(24.5%),系统会使用第一个过渡矩阵选择音符(C)。
  3. 该音符(C)进入第二过渡矩阵,基于其频率(88%)停止对旋律音符(A)的选择。
  4. 重复步骤3,直到过程达到预定的终点为止;
  5. 谐和音符(F),参考第三个概率矩阵,选择下一个谐音符。 考虑到它们的相似性,它将是(F)或(C)。
  6. 重复步骤1-4,直到该过程完成。

在这里,您可以收听以这种方式创建的流行音乐的示例:



等级


这是困难的部分开始的地方-如何评估不同的模型。 最后,我的文章建议简单概率比神经网络更有用。 但是,我们如何评估我的模型与由神经网络建立的模型之间的差异? 我们如何客观地说我的音乐更像流行音乐,而不是AI创作的音乐?

要回答这个问题,我们首先必须确定什么是流行音乐。 我已经表达了我的第一个定义:和声与旋律之间的统计关系。 但是流行音乐中还有另一个决定性因素-清楚地标记出歌曲的开头,中间,结尾(前奏,对联,桥,合唱,完成等),并贯穿整首歌曲。

例如,“放开,放开,再也无法放下……”这一行更可能出现在中间部分,而不是结尾或开头。 这首歌将在歌曲中重复三遍。

考虑到这一点,我们可以求助于所谓的自相似矩阵。 简而言之,自相似矩阵在数学上表示一首歌的开头,中间和结尾。 以下是电影《曾经》中歌曲《缓慢下落》的矩阵。


每个小段代表一个音符。 每个45度的大方块代表歌曲的某些部分。

第一个深色簇代表歌曲的开始,下一个黄色簇代表歌曲的下一个片段。 第一簇和第三簇的颜色相似,因为它们彼此相似,第二簇和第四簇也相似。

我以这种方式检查了20首流行歌曲,然后(尽可能)创建了它们结构的机器副本。

结果


结果不言而喻。 在使用自相似矩阵之前,我的程序产生的声音没有重复的内部结构。 但是,在复制源数据的结构之后,我的音乐开始看起来像这样:

应用自相似矩阵之前和之后

与多伦多大学神经网络创建的音乐的自相似矩阵进行比较:


这就是可以基于其自相似矩阵对不同模型进行比较和评估的方式!


泛化


我为自己设定的任务的最后一部分是概括。 我的意思是:我们如何基于输入数据使我的模型具有通用性,以便可以将其应用于与流行音乐的产生无关的其他情况? 换句话说,还有什么在结构上类似于我的流行音乐生成器吗?

经过深思熟虑,我意识到还有另一项人类发明,其结构类似-流行歌曲的歌词!

例如,以下是《我将是爱德华·麦凯恩》的节选:

我将成为你的哀号
我会自杀
我长大以后会更好
我将成为你一生的忠实粉丝

我们将使用相同的机器学习技术来分析骨骼。 我们可以将“我将成为”语言模型中的第一个来源单词。 它将用于生成“您的”,从中“出现”,从“出现”中出现“肩膀”。


然后出现一个非常重要的问题:下一个句子的第一个单词是否取决于前一个句子的最后一个单词? 换句话说,一个句子的最后一个单词和第二个句子的第一个单词之间是否有关系?

我相信答案是否定的。 句子以“ shoulder”结尾,下一个以第一个重复-“ I'll be”开头。 这是由于每个句子的第一个单词被故意重复的事实,这意味着每个句子的第一个单词之间存在类似的条件关系。 这些第一个单词成为后续单词序列的触发点。



我认为这是一个了不起的发现。 流行音乐和歌词似乎都具有取决于内容的内部结构。 真的很棒吗?

在github上观看项目

* * *


当然,本文中提出的方法不能认为是详尽无遗的。 另外,值得注意的是,处理文本的方法现在正在兴起并正在积极发展,因此作者对歌词的看法不会令NLP(自然语言处理)专家感到惊讶。 不过,作者的原始文章似乎是使用机器学习方法生成高质量音乐的有用的中间步骤。

最近,已经向公众提供了许多基于产生音乐的神经网络的应用程序。 例如,可以在以下网站上生成技术音乐: eternal-flow.ru 。 该解决方案的作者还提供了用于生成音乐的移动应用程序。 还有另一个在移动设备上生成音乐的应用程序: mubert.com 。 一个有趣的解决方案致力于更具活力的死亡金属类型。 它的创造者DadaBots在YouTube上流传输由神经网络生成连续音乐流 。 同时,DadaBots并没有在那里停下来,而是以朋克和渐进摇滚的风格向公众开放人造音乐 。 当然,人们不能忽视OpenAI的结果,OpenAI为想要在广泛的音乐流派框架(从莫扎特到甲壳虫乐队)中尝试音乐的每个人提供了帮助。 在openai.com上,您可以聆听弗兰克·辛纳屈(Frank Sinatra)或彼得·伊里奇·柴可夫斯基(Pyotr Ilyich Tchaikovsky)风格的哈利·波特主题发展情况。

现代神经网络在音乐产生中的成功使人们希望,在不久的将来,人工智能将能够与人类在Go和Dota2以外的其他领域平等竞争。 也许我们很幸运能够活到神经网络的候选人能够在Eurovision上发言并与皮革参与者竞争胜利的时刻。

LANIT集团公司的职位可以在这里找到。

Source: https://habr.com/ru/post/zh-CN455742/


All Articles