附代码 你想用深度学习谱写自己的音乐吗?这篇指南来帮助你!( 三 )


文章插图
 
什么是一维卷积?
一维卷积的目标类似于长短期记忆模型 。它用于解决类似于LSTM的任务 。在一维卷积中 , 核或者叫过滤器只沿着一个方向运动:

附代码 你想用深度学习谱写自己的音乐吗?这篇指南来帮助你!

文章插图
 
卷积的输出取决于核的大小、输入形状、填充类型和步长 。现在 , 我将带领你们了解不同类型的填充来理解使用扩张的1D因果卷积层的重要性 。
当我们将填充设置为valid时 , 输入和输出序列的长度会发生变化 。输出长度小于输入长度:
附代码 你想用深度学习谱写自己的音乐吗?这篇指南来帮助你!

文章插图
 
当我们将填充设置为same时 , 在输入序列的两侧填充零以使输入和输出的长度相等:
附代码 你想用深度学习谱写自己的音乐吗?这篇指南来帮助你!

文章插图
 
一维卷积的优点:
  • 捕获输入序列中出现的序列信息
  • 与GRU或LSTM相比 , 训练的速度要快得多 , 因为它们没有循环性的连接
一维卷积的缺点:
  • 当填充设置为same时 , 在时间步长t处的输出也与之前的t-1和未来的时间步长t+1进行卷积 。因此 , 它违反了自回归原则
  • 当填充被设置为valid时 , 输入和输出序列的长度会发生变化 , 这是计算残差连接所需要的(后面会讲到)
这为因果卷积扫清了道路 。
注意: 我在这里提到的利弊是针对于此问题的 。
什么是一维因果卷积?
它被定义为这样一种卷积 , 即t时刻的输出仅与t时刻以及前一层更早的元素进行卷积 。
简单地说 , 正常卷积和因果卷积的区别仅仅在于填充 。在因果卷积中 , 仅在输入序列的左边加0 , 以保持自回归的原则:
附代码 你想用深度学习谱写自己的音乐吗?这篇指南来帮助你!

文章插图
 
因果一维卷积的优点:
  • 因果卷积没有考虑未来的时间步长 , 而这是建立生成模型的一个标准
因果一维卷积的缺点:
  • 因果卷积不能回溯到序列中过去发生的时间步长 。因此 , 因果卷积的接受域非常低 。网络的接受域是指影响输出的输入数量:

附代码 你想用深度学习谱写自己的音乐吗?这篇指南来帮助你!

文章插图
 
如你所见 , 输出只受5个输入的影响 。因此 , 网络的接受域为5 , 非常低 。网络的接受域也可以通过增加大尺寸的核来增加 , 但是要记住 , 这样一来计算复杂度也会增加 。
这将为我们引出扩张一维因果卷积的绝佳概念 。
什么是扩张一维因果卷积?
“在核的值之间有孔或空缺的因果一维卷积层称为扩张的一维卷积 。”
所增加的空缺数由扩张率决定 。它定义了网络的接受域 。大小为k、扩张率为d的核在核k的每个值之间都有d-1个孔 。
附代码 你想用深度学习谱写自己的音乐吗?这篇指南来帮助你!

文章插图
 
如你所见 , 将一个3 * 3的核与一个7 * 7的输入 , 以扩张率为2进行卷积 , 最终接受域为5 * 5 。
扩张一维因果卷积的优点:
  • 扩张的一维卷积网络通过指数增加每一隐藏层的扩张率来增加接受域:

附代码 你想用深度学习谱写自己的音乐吗?这篇指南来帮助你!

文章插图
 
如你所见 , 输出受所有输入的影响 。因此 , 网络的接受域为16 。
WaveNet的残差块:
为了加速模型的收敛 , 添加了残差连接和跳跃连接的构件:
附代码 你想用深度学习谱写自己的音乐吗?这篇指南来帮助你!

文章插图
 
WaveNet的工作流程:
  • 输入进入一个因果一维卷积
  • 输出然后进入到2个不同的扩张一维卷积层并使用sigmoid和tanh激活
  • 两个不同激活值逐元素相乘导致跳跃连接
  • 而跳跃连接和因果一维输出的逐元素相加会导致残差
Long Short Term Memory (LSTM)方法
另一种自动生成音乐的方法是基于长短期记忆(LSTM)模型 。输入和输出序列的准备类似于WaveNet 。在每一个时间步长 , 一个振幅值被输入到长短期记忆单元-然后它计算隐藏的向量 , 并把它传递到下一个时间步 。
基于当前的输入a(t)和先前的隐藏向量h(t-1)来计算当前时间的隐藏向量h(t) 。序列信息在任何循环(一般recursive会翻译为递归)神经网络中都是这样捕获的:


推荐阅读