Transformer生成音乐 PyTorch权威测评
PyTorch生成式人工智能(29)——基于Transformer生成音乐
- 0. 引言
- 1. 音乐Transformer概述
- 1.1 基于演奏的音乐表征
- 1.2 音乐Transformer结构
- 1.3 训练音乐Transformer的步骤
- 2. 音乐片段分词处理
- 2.1 获取训练数据
- 2.2 MIDI文件分词
- 2.3 准备训练样本
- 3. 构建音乐生成Transformer
- 3.1 音乐Transformer超参数设定
- 3.2 搭建音乐Transformer模型
- 4 训练与使用音乐Transformer
- 4.1 训练音乐Transformer
- 4.2 利用训练好的Transformer生成音乐
- 总结
- 系列链接
0. 引言
此前用MuseGAN将音乐视为类似图像的多维对象,成功生成了多音轨作品。这次换个方向——把音乐当作连续的事件序列,与自然语言处理思路一致。具体做法是构建一个类GPT的Transformer模型,让它基于已有的音符序列预测下一个音符。该模型包含2016万个参数,既能捕获整首曲子中音符间的长期依赖,又能将训练开销控制在可接受范围内。
训练数据来自Maestro钢琴音乐集。先将MIDI文件转成音符序列——对应NLP中的原始文本。然后,把音符序列切分成小片段,即“音乐事件”,类似NLP的词元(token)。神经网络只接受数字输入,因此需要为每个事件分配唯一的索引。这样,整段音乐就变成了索引序列,可直接送入模型。
训练完成后,该Transformer能创作出与训练集风格高度相似的逼真音乐。相比MuseGAN,一个显著区别是:通过调节温度参数可控制生成的随机性——温度高时音符跳跃更自由;温度低时输出更保守、更贴近训练数据。下图展示了一个生成示例。