C-RNN-GAN:具有对抗训练的连续循环神经网络2016--生成音乐

news2025/1/11 12:47:29

C-RNN-GAN: Continuous recurrent neural networks with adversarial training 2016

Abstract

生成对抗网络已被提出作为一种有效训练深度生成神经网络的方法。我们提出了一种生成对抗模型,它适用于连续的序列数据,并通过在古典音乐集合上训练它来应用它。我们得出的结论是,随着模型的训练,它生成的音乐听起来越来越好,报告生成的音乐的统计数据,并让读者通过下载生成的歌曲来判断质量。

1 Introduction

我们提出了一种循环神经网络架构C-RNN-GAN(连续RNN-GAN),它经过对抗性训练来建模序列的整个联合概率,并能够生成数据序列。我们的系统通过在中等格式的古典音乐序列上进行训练来证明,并使用音阶一致性和音域等指标进行评估。

我们得出的结论是,生成式对抗训练是一种可行的训练网络的方式,它可以对连续数据序列上的分布进行建模,并看到了对许多其他类型的连续数据建模的潜力。

2 C-RNN-GAN: A continuous recurrent network with adversarial training

该模型是一种带有对抗训练的递归神经网络。对手是两个不同的深度循环神经模型,一个生成器(G)和一个鉴别器(D)。生成器被训练来生成与真实数据难以区分的数据,而鉴别器被训练来识别生成的数据。训练变成了一个零和游戏,其中纳什均衡是当生成器产生的数据鉴别器无法从真实数据中区分出来。我们定义如下损失函数LD和LG:

(其中z(i)是[0,1]k中的均匀随机向量序列,x(i)是来自训练数据的序列。K为随机序列中数据的维数。)G中每个单元格的输入是一个随机向量,与前一个单元格的输出相连接。

在训练rnn作为语言模型时,从前一个单元输入输出是常见的做法[Mikolov等人,2010],也被用于音乐创作[Eck和Schmidhuber, 2002]。

鉴别器由一个双向循环网络组成,允许它在决策时考虑两个方向的上下文。在这项工作中,使用的循环网络是长短期记忆(LSTM) [Schmidhuber和Hochreiter, 1997]。它有一个带有门的内部结构,有助于解决梯度消失问题,并学习更长的依赖关系[Hochreiter, 1998, Bengio等人,1994]

 2.1 Modelling music 音乐建模

在这项工作中,我们开始评估使用生成对抗模型来学习古典音乐背后的生成分布的可行性。受数字乐器之间通信信号的古老MIDI格式的启发,我们在每个数据点上用四个实值标量对信号进行建模:音调长度、频率、强度和从前一个音调开始花费的时间。以这种方式对数据进行建模,使网络能够表示多音和弦(两个音调之间的时间为零)。为了评估它对复调的影响,我们还试验了在G中每个LSTM单元输出最多三个音调(对D进行相应的修改)。然后,每个音调用上面描述的自己的四组值表示。我们将此版本称为C-RNN-GAN-3。与MIDI格式类似,音色的缺失由零强度输出表示。

3 Experimental setup 实验设置

模型布局细节:G和D中的LSTM网络深度为2,每个LSTM单元有350个内部(隐藏)单元。D是双向布局,G是单向布局。D中每个LSTM单元的输出被馈电到具有跨时间步长的共享权重的全连接层,然后每个单元的一个sigmoid输出被平均到序列的最终决定。

基线:我们的基线是一个循环网络,类似于我们的生成器,但完全训练为在循环中的每个点预测下一个音调事件。

数据集:训练数据来自网络,以midi格式的音乐文件形式收集,包含著名的古典音乐作品。“note on”类型的每个midi事件连同其持续时间、音调、强度(速度)和从最后一个音调开始的时间一起被加载和保存。

音调数据在内部用相应的声音频率表示。在内部,所有数据都标准化为每个四分音符384个刻度分辨率。数据包含了来自160位不同古典音乐作曲家的3697个midi文件。

源代码可以在Github1上获得,包括一个实用程序,可以从不同的网站下载本研究中使用的所有数据。

训练:采用时间反向传播(BPTT)和小批量随机梯度下降法。学习率设置为0.1,我们对G和D中的权重应用L2正则化。

该模型预训练6个周期,误差损失为平方,用于预测训练序列中的下一个事件。与对抗性设置一样,每个LSTM单元的输入是一个随机向量v,与前一个时间步的输出相连接。V均匀分布在[0,1]k中,取k为每个音调的特征个数,4。在预训练期间,我们使用了一个序列长度的模式,从训练数据中随机采样的短序列开始,最终用越来越长的序列训练模型。我们认为这是课程学习的一种形式,我们从学习短文开始,学习时间相近的点之间的关系。

在对抗性训练中,我们注意到D会变得过于强大,导致无法用于改善g的梯度,这种影响在没有预训练的情况下初始化网络时尤为明显。为此,我们应用了冻结[Salimans et al., 2016],即当D的训练损失小于G的训练损失的70%时,停止D的更新。当G变得过于强大时,我们做相应的事情。

我们还采用特征匹配[Salimans等人,2016],这是一种鼓励G中更大方差的方法,并通过替换标准发生器损耗LG来避免对电流鉴别器的过拟合。

通常,生成器的目标是使鉴别器的错误最大化,但对于特征匹配,目标是在鉴别器的某个级别上产生与真实数据匹配的内部表示。我们从D中最后的逻辑分类层之前的最后一层中选择表示R,并为G定义新的目标LG。

 

 

图3:评估模型生成的音乐的统计数据。C-RNN-GAN (a)在训练过程中生成越来越复杂的音乐。使用的独特音调的数量有模糊增加的趋势,而音阶一致性似乎在十或十五个周期后稳定下来。

三音重复在前25个周期有增加的趋势,然后保持在一个相当低的水平,似乎与使用的音调数有关。基线模型(b)没有达到相同的变化水平。使用的唯一音调的数量一直很低,而音阶一致性似乎与C-RNN-GAN相似。与C-RNN-GAN相比,音调跨度更接近于唯一音调的数量,这表明基线在使用的音调中具有较小的可变性。与c - rnn - gan和基线相比,c - rnn - gan -3 (c)获得了更高的复音得分。C-RNN-GAN-3在第50到55个纪元左右达到许多零值输出的状态后,在音调跨度、唯一音调的数量、强度跨度和3个音调重复上达到了更高的值。在(d)中,可以看到真实的音乐具有与生成音乐相似的强度跨度。量表一致性稍高,但也变化较大。复调评分与C-RNN-GAN-3相似。3音的重复要高得多,但由于歌曲的长度不同,很难进行比较。计数通过除以lr/lg进行标准化,其中lr是真实音乐的长度,lg是生成音乐的长度。

3.1 Evaluation评价

对C-RNN-GAN的评估是通过对产生的输出进行一些测量来完成的。

复调,测量(至少)两个音调同时演奏的频率(它们的开始时间完全相同)。请注意,这是一个相当有限的度量标准,因为它可以为具有同步音调的音乐提供较低的分数,而这些音调并不是在同一时间开始的。音阶一致性是通过计算作为标准音阶一部分的音调的分数来计算的,并报告这种音阶的最佳匹配数短子序列的重复次数被计数,给出一个样本中有多少重复的分数。这个指标只考虑音调和音调的顺序,而不考虑音调的时间。音调跨度是样本中最低和最高音调之间的半音阶数。我们实现了一个工具来计算这些估计值,该工具与本工作中使用的所有源代码一起可在Github2上获得。

4 Results

实验研究结果如图3所示。对抗性训练帮助模型学习具有更大变异性、更大音调跨度和更大强度跨度的模式。允许模型在每个LSTM单元输出一个以上的音调有助于生成具有更高复调分数的音乐。

4.1听力印象虽然我们还没有对这项工作进行彻底的听力研究,但作者和同事的印象是,经过特征匹配训练的模型比其他变体在结构和惊喜之间获得了更好的平衡。只有最大可能性预训练的版本往往不会给人带来足够的惊喜,而带有小批量特征的版本往往会对结构太少的音乐进行采样,对真正的听众来说是没有兴趣的。这有点令人惊讶,我们打算深入研究。

使用C-RNN-GAN生成的音乐文件可以从http://mogren.one/publications/2016/c-rnn-gan/下载。

5 Discussion and conclusions

在本文中,我们提出了一种用于连续数据的递归神经模型,使用基于生成对抗网络的方法进行训练。虽然还需要做更多的实验,但我们相信结果是有希望的。我们已经注意到,对抗性训练帮助循环神经网络生成的音乐在使用的音调数量和播放音调强度的跨度上变化更大。根据人类的判断,生成的音乐还不能与训练数据中的音乐相比。这其中的原因还有待探究。然而,在评估中(参见图3),我们可以看到使用C-RNN-GAN生成的音乐分数比使用基线生成的音乐分数更接近真实音乐的分数。生成的音乐是多声部的,但在我们实验评估的复调评分中,测量两个音调在同一时间播放的频率,C-RNN-GAN得分较低。允许每个LSTM单元同时输出最多三个音调,使得模型在复调方面得分更高。

我们可以在生成的样本中听到,虽然每个样本的节奏都有很大的不同,但通常在一个轨道内是相当一致的,在生成的歌曲中给人一种节奏的感觉.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/94789.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

计算机毕设Python+Vue校园学生体温管理系统(程序+LW+部署)

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

相见恨晚,Git这些功能太好用了

程序员宝藏库:https://gitee.com/sharetech_lee/CS-Books-Store 作为一名开发者,想必绝大多数同学都无法绕开Git。 作为一款工具,我认为它和word、powerpoint、Excel这些办公工具一样。 对于一部分同学,会一些基本的用法&#x…

【经验帖】项目经理的核心价值:以目标为导向做正确的事

项目经理小李的年终汇报心路历程(心情犹如坐过山车,起起落落最后一蹶不振。) 汇报前: 终于到年终汇报的日子了,毕竟我负责的项目任务从来没有延期过,都是按时完成,这次肯定得加薪了&#xff01…

[附源码]Node.js计算机毕业设计公租房管理系统Express

项目运行 环境配置: Node.js最新版 Vscode Mysql5.7 HBuilderXNavicat11Vue。 项目技术: Express框架 Node.js Vue 等等组成,B/S模式 Vscode管理前后端分离等等。 环境需要 1.运行环境:最好是Nodejs最新版,我…

module命名空间

为什么要有namespaced命名空间? 默认情况下,模块内部的action、mutation和getter都是在全局命名空间。 假设两个modules内部有同名的action、mutation和getter,则vuex会报错。 namespaced作用:保证模块内部的高封闭性,…

021 | 阴离子诱导的系列双核镝配合物的合成及磁性质 | 大学生创新训练项目申请书 | 极致技术工厂

研究目的 近十几年来,随着科技的飞速发展,单分子磁体材料涉及的应用领域越来越宽广。众所周知,单分子磁体材料作为信息存储的基础对信息产业的发展具有一定的意义。此外,单分子磁体在超高密度储存、自旋电子器件、量子计算机等领域…

旅游住宿网站

开发工具(eclipse/idea/vscode等): 数据库(sqlite/mysql/sqlserver等): 功能模块(请用文字描述,至少200字): 网站前台:网站介绍、帮助信息、旅游资讯。景点信息、酒店信息 管理员功能: 1、管理网站介绍、帮…

day22【代码随想录】在每个树行中找最大值、填充每个节点的下一个右侧节点指针、二叉树的最大深度、二叉树的最小深度

文章目录前言一、在每个树行中找最大值(力扣515)二、填充每个节点的下一个右侧节点指针(力扣116)三、二叉树的最大深度(力扣104)1、非递归求解2、递归求解四、 二叉树的最小深度(力扣111&#x…

【前端开发学习】4.JavaScript

文章目录1 JavaScript1.1 代码位置1.2 存在形式1.3 注释1.4 变量1.5 字符串类型案例:走马灯1.5 数组案例:动态数据1.6 对象(字典)案例:动态表格1.7 条件语句1.8 函数2 DOM2.1 事件绑定1 JavaScript 一门编程语言&…

第二证券|主力加仓电子、电气设备等行业 北向资金连续2日净流入

沪深两市股市涨跌互现,上证指数早盘震动下探,午后一度回升,尾盘再度回落;深证成指早盘探底回升,午后震动上扬,尾盘有所回落;创业板指早盘窄幅震动,午后震动上扬;科创50指…

D. Say No to Palindromes(构造 + 前缀和)

Problem - 1555D - Codeforces 如果这个字符串不包含一个长度至少为2的子串,我们就称它为美丽的字符串,这是一个回文。回顾一下,回文是指从第一个字符到最后一个字符以及从最后一个字符到第一个字符的读法相同的字符串。例如,字符…

京东物流 × StarRocks : 打造服务分析一体化平台Udata

作者:张栋,京东物流集团数据专家 京东集团 2007 年开始自建物流,2017 年 4 月正式成立京东物流集团,2021 年 5 月,京东物流于香港联交所主板上市。京东物流是中国领先的技术驱动的供应链解决方案及物流服务商&#xff…

Linux内核

内核属于操作系统的核心部分,它具有操作系统基本的功能,主要负责管理系统的内存、进程、设备驱动程序、文件系统和网络接口,因此,操作系统的性能和稳定性由内核决定。 1、内存管理 进程对内存的使用 计算机中所有要执行的程序都必…

大厂10年经验,我对Java高并发问题方案的总结,堪称教科书级

作为一个 Java 开发人员,多线程是一个逃不掉的话题,不管是工作还是面试,但理解起来比较模糊难懂,因为多线程程序在跑起来的时候比较难于观察和跟踪。 搞懂多线程并发知识,可以在面试的时候和周围人拉开差距&#xff0…

流媒体:依托于声网的连麦解决方案

一、背景 近些年,直播连麦这把火在流媒体领域整整燃烧了 6 年。从刚开始的简单探索,到现在的成熟全链路方案,不得不说日益增长的激烈竞争,已将让原本的蓝海领域变成了深海互搏。在这样的大环境下,是否意味着小厂将再也…

分布式系统(P2P Lookup)

文章目录P2P 系统NapsterBitTorrentGnutellaChordConsistent HashingSimple Key LocationScalable Key LocationKademliaRouting TableKademlia’s RPCAdaptabilityDistributed Hash TableP2P 系统 Peer to peer 系统: 每个结点在连接上是互联的,在功能…

Spring MVC: 一种简洁且强大的Web应用框架

⭐️前言⭐️ 这篇文章介绍Spring MVC,Spring MVC是现在基本所有Java程序的主流开发框架,这篇文章主要介绍三部分内容: 实现用户和程序的映射(在浏览器输入URL地址之后,能够在程序中匹配到相应方法)。服务器端得到用户的请求参数…

c语言笔记1 输入和输出注意事项,常量 变量 static

输出:printf c的编译器不会检测格式串中转换说明的数量和数据类型是否和后面的变量一致。转换说明的数据类型与实际数据类型不一致时,产生无意义的值。 int 类型的变量length,值为9,输出时将类型写为float或double,输…

【自然语言处理】【ChatGPT系列】InstructGPT:遵循人类反馈指令来训练语言模型

InstructGPT:遵循人类反馈指令来训练语言模型《Training language models to follow instructions with human feedback》论文地址:https://arxiv.org/pdf/2203.02155.pdf 相关博客 【自然语言处理】【ChatGPT系列】InstructGPT:遵循人类反馈…

联想小新pro13 卡顿解决办法

问题 本人电脑型号是 联想小新 pro13 2020 i7 才用了两年多,变得巨卡无比 ctlshiftesc打开任务管理器 cpu利用率才30%多 打字就一顿一顿的出结果 浏览网页也卡的掉帧,更不用说打游戏了 真的很无语,重装了系统也没啥用 思路 在网上搜了一圈…