Page 17 - 《软件学报》2026年第5期
P. 17
1896 软件学报 2026 年第 37 卷第 5 期
L = L + L (13)
total CLM MLM
通过整合这两个序列层面的目标任务, 并在整个模型中一致地进行优化, CNN-Midiformer 既能够从上下文中
推断被掩盖的符号, 也能基于时序依赖预测未来符号, 使音乐知识特征中蕴含的结构化信息得到有效利用, 并进一
步增强模型对音乐序列的综合理解能力.
3 实验结果与分析
3.1 数据集
本文在 6 个公开符号音乐理解数据集 Pop1K7、ASAP、POP909、Pianist8、EMOPIA 和 ADL 上进行了模型
的预训练与下游任务微调, 各数据集的详细信息如表 1 所示.
表 1 实验所用数据集统计信息
数据集 任务 乐曲数 (pcs.) 总时长 (h) 平均音高 (MIDI No.) 平均音长 (beats) 小节音数 (notes/bar) 小节数量 (bars/pc.)
Pop1K7 1 748 108.8 64 (E4) 8.5 16.9 103.3
预训练
ASAP 65 3.5 63 (D4#) 2.9 23.0 95.9
旋律识别/
POP909 865 59.7 63 (D4#) 6.1 17.4 94.9
力度预测
Pianist8 作曲家分类 411 31.9 63 (D4#) 9.6 17.0 108.9
EMOPIA 情感分类 1 078 12.0 61 (C4#) 10.0 17.9 14.8
ADL 流派分类 6 213 366.6 62 (D4) 2.7 16.1 104.9
[24]
● Pop1K7 : 包含 1 748 首流行钢琴曲的录音, 总时长约 108 h. 这些录音通过自动化流程被转录为 MIDI 文件.
● ASAP [25] : 包含 222 份数字乐谱和 1 068 个西方古典钢琴曲的 MIDI 演奏录音, 涵盖了 15 位不同作曲家的作
品, 为模型提供了多样且高质量的古典音乐素材.
● POP909 [26] : 包含 909 首由专业音乐家创作并演奏的流行歌曲钢琴演奏 MIDI. 该数据集完整保留旋律和力
度信息, 特别适用于旋律识别和演奏速度预测等任务.
● Pianist8 [13] : 包含由 8 位著名作曲家创作的 411 部钢琴作品, 其 MIDI 文件是使用 Kong 等人 [27] 提出的乐谱
转录模型生成的, 该数据集主要用于作曲家风格分类等任务.
[28]
● EMOPIA : 包含来自 387 首歌曲的 1 087 个钢琴片段, 每个片段均带有情感标签. 该数据集专为音乐情感
分类任务设计, 为训练模型的情感识别能力提供丰富样本.
● ADL [29] : 包含 6 213 首 MIDI 文件, 分属 18 类不同的音乐风格, 覆盖广泛的音乐流派, 可用于音乐流派分类
与风格分析任务.
3.2 训练设置
本文模型 CNN-Midiformer 基于 Hugging Face Transformers 库 [30] 实现, 并使用 PyTorch 框架进行训练. 在训练
之前对每个 MIDI 文件均提取了音乐知识和符号序列的结构化表征. 具体的模型配置参数详见表 2.
预训练: 本文将每个数据集按照 85% 训练集和 15% 验证集的比例进行划分. 为了确保实验的可复现性, 下面
将详细说明训练配置: 优化器选用 AdamW [31] , 这是一种解耦了权重衰减与梯度计算的 Adam 变体, 已被证明能改
善深度学习模型的泛化能力. 经过充分的超参数调优, 学习率设置为 2E–5, 该学习率在训练稳定性和收敛速度之
间取得了较好的平衡. 权重衰减系数设置为 0.01, 以防止模型在音乐数据上发生过拟合. 最大序列长度设定为 512,
这个长度既考虑了数据集中乐曲片段的平均长度, 也平衡了计算资源消耗, 同时确保模型能够处理足够长的音乐
上下文以捕捉音乐的层级结构. 预训练在 4 块 NVIDIA A800 GPU 上进行, 批次大小设为 12, 训练耗时约 23 h. 采
用了早停策略: 若验证集准确率连续 30 个周期未提升, 则停止训练, 最大训练周期设为 500.
下游任务微调: 对于各项下游任务, 本文将数据按照 8:1:1 的比例划分为训练集、验证集和测试集. 微调同样
在 4 块 NVIDIA A800 GPU 上进行, 学习率设置为 2E–5, 训练周期设为 20, 保存验证集准确率最高的模型.

