自动生成音乐的不同方法
我将详细讨论两个基于深度学习的自动生成音乐的架构——WaveNet和LSTM 。但是 , 为什么只有深度学习架构?
深度学习是一个受神经结构启发的机器学习领域 。这些网络自动从数据集中提取特征 , 并能够学习任何非线性函数 。这就是为什么神经网络被称为泛函逼近器(感觉泛函在数学上的定义不适合这里 , 网上也有人翻译为 万能函数拟逼近器 , 因为最早有一篇关于 Universal Approximation Theorem的论文) 。
因此 , 深度学习模型是自然语言处理(NLP)、计算机视觉、语音合成等各个领域的最新技术 。让我们来看看如何构建这些作曲模型 。
方法一:使用WaveNet
“WaveNet是谷歌DeepMind开发的一种基于深度学习的原始音频生成模型 。”
WaveNet的主要目的是从原始的数据分布中生成新的样本 。因此 , 它被称为生成模型 。
“WaveNet就像是NLP中的一种语言模型 。”
在语言模型中 , 给定一个单词序列 , 该模型试图预测下一个单词 。与语言模型类似 , 在WaveNet中 , 给定一系列样本 , 它试图预测下一个样本 。
方法二:使用Long-Short-Term Memory(LSTM)模型
Long-Short-Term Memory (LSTM)是递归神经网络(RNNs)的一种变体 , 能够捕获输入序列中的长期依赖关系 。LSTM在序列到序列(Seq2Seq)建模任务中有广泛的应用 , 如语音识别、文本摘要、视频分类等 。

文章插图
让我们详细讨论如何使用这两种方法训练我们的模型 。
WaveNet:训练阶段
“这是一个多对一的问题 , 其中输入是一系列振幅值 , 输出是后续值 。”
让我们看看如何准备输入和输出序列 。
WaveNet的输入:
WaveNet将原始音频波的小块作为输入 。原始音频波是指波在时间序列域中的表示 。
在时间序列域中 , 音频波以不同时间间隔音符的振幅值的形式表示:

文章插图
WaveNet的输出:
给定振幅值的序列 , WaveNet试图预测连续的振幅值 。
让我们通过一个示例来理解 。考虑一个5秒的音频波 , 采样率为16,000(即每秒16,000个样本) 。现在 , 我们有8万个样本在5秒内以不同的时间间隔记录下来 。让我们把音频分成相同大小的块 , 比如1024(这是一个超参数) 。
下图展示了模型的输入和输出序列:

文章插图
前3个块的输入和输出
对于其余的块 , 我们可以遵循类似的过程 。
从上面我们可以推断出 , 每个块的输出只依赖于过去的信息(即以前的时间步长) , 而不依赖于未来的时间步长 。因此 , 该任务称为自回归任务 , 该模型称为自回归模型 。
推理阶段
在推理阶段 , 我们将尝试生成新的样本 。让我们看看怎么做:
1. 选择一个随机的样本值数组作为建模的起点
2. 现在 , 模型输出所有样本的概率分布
3. 选择概率最大的值并将其追加到先前的样本值数组中
4. 删除第一个元素并作为下一个迭代的输入传入模型
5. 重复步骤2和4 , 进行一定次数的迭代
理解WaveNet架构
WaveNet的基本结构是因果扩散的一维卷积层 。首先让我们了解相关概念的重要性 。
为什么使用卷积 , 什么是卷积?
“使用卷积的一个主要原因是从输入中提取特征 。”
例如 , 在图像处理的情况下 , 用过滤器对图像进行卷积可以得到一个特征图 。

文章插图
卷积是一种结合了两个函数的数学运算 。在图像处理的情况下 , 卷积是图像的某些部分与核(kernel)的线性组合 。
你可以浏览下面的文章阅读更多关于卷积的知识:
- 卷积神经网络(CNNs)结构的解密
推荐阅读
- 如何让女生经常想起你?
- 使用Java带你打造一款简单的外卖系统
- 明星素颜|若你皮肤暗黄又不爱化妆,出门尽量用素颜霜,皮肤白皙水润气色好
- 短发|女人老了,留长发好还是留短发好呢?看这三点,你就知道如何选择
- 新冠病毒|《听我说谢谢你》原作恳请适时使用此曲:勿扰防疫人员正常工作 传递正能量
- 收入|一季度人均可支配收入10345元:你拖后腿了吗?
- 满族姓氏文化你了解多少
- 关于普洱茶的茶号,简单的出乎你意料
- 雾霾吸进肺 八种素食帮你清洗
- 吃什么护心?饮食加减法助你远离疾病
