← 返回 2026-04-14

BMdataset:一份音乐学策展的 LilyPond 曲谱数据集及 LilyBERT 编码器 BMdataset: A Musicologically Curated LilyPond Dataset

Matteo Spanio, Ilay Guler, Antonio Rodà 📅 2026-04-12 👍 2 2026-07-13 08:36
Baroque音乐 LilyPond 代码预训练 符号音乐 线性探测 自监督学习

首个面向符号音乐的 LilyPond 策展数据集与代码预训练编码器

前置知识

LilyPond 乐谱语言

LilyPond 是一种开源的文本式乐谱雕版系统,使用结构化纯文本描述音乐内容(如 \relative、\clef、\key 等反斜杠命令)以及排版指令。其语法与编程语言类似:含嵌套块 { }、变量赋值、宏定义和 include 指令,且由严格文法解析后编译生成雕版式 PDF 排版输出。

本文核心工作建立在 LilyPond 的'类编译型编程语言'特性之上,因此理解其嵌套块、命令-参数结构和可编译性对读懂 BMdataset 的拼装流程与 LilyBERT 的设计动机至关重要。

CodeBERT 与 RoBERTa 架构

CodeBERT 是基于 RoBERTa 架构的双模态预训练编码器,包含 12 层 Transformer、768 维隐藏层、12 个注意力头、约 125M 参数,使用 50,265 词表。BPE 子词切分;原始训练目标包括 MLM 与替代词检测(RTD)。本文仅复用其 MLM 部分并扩展词表。

LilyBERT 直接以 microsoft/codebert-base 为骨架,因此理解其层数、隐藏维度、词表大小与 BPE 切分规则是读懂模型规模、参数初始化策略(如新增行随机初始化)以及词表扩展的前提。

掩码语言建模(MLM)

MLM 是一种自监督预训练目标:随机掩盖输入 token 序列中约 15% 的位置,让模型依据上下文预测原始 token。本文中 MLM 沿用 BERT 经典配方,配合 cosine 学习率调度、10% warmup 与 early stopping。

本文全部四组变体的预训练都依赖 MLM 目标,且明确报告放弃 RTD 是基于 CodeBERT 自身的消融结论,因此理解 MLM 是把握训练策略设计取舍的关键。

线性探测(Linear Probing)

线性探测是一种评估预训练表示质量的协议:冻结预训练模型,将各层隐藏状态抽取后均值池化为文件级嵌入,仅训练一层线性分类器(无隐藏层 MLP)。通过对比不同层的可分性,可推断预训练表示对下游任务的信息编码深度。

本文核心实验是冻结 LilyBERT 后在 Mutopia 上做 5 折分层交叉验证的线性探测,正是由此得出'作曲家特征在中间层最强、风格特征在浅层最强'的关键结论。

研究动机

符号音乐表示学习几乎完全依赖 MIDI 主导的数据集(如 Lakh MIDI 的 174K 首、PDMX 的 254K 首),而 MIDI 会丢弃乐谱中丰富的雕版信息——记法方向、力度记号位置、多乐章作品的层级结构等。MusicXML 部分弥补了这一缺陷,但作为 XML 格式仍难以直接被语言模型消费;相比之下 LilyPond 作为一种文本式雕版语言,可读、可版本控制、可直接馈入 LLM,却从未被用于表示学习。现有唯一规模较大的 LilyPond 语料库 Mutopia(2.1K 文件)仅含基础的作曲家与风格标签,缺乏谱号、调号、速度、拍号、乐器、历史时期等结构化元数据,且被作者指出其来源是社区编辑而非原始手稿,难以承担音乐学分析级任务。

本文的目标是本文的具体目标是同时填补两个空白:一是从 BaroqueMusic.it 项目中产出一份以原始手稿为来源、专业音乐学家转录的 LilyPond 曲谱数据集 BMdataset,附带作曲家、形式、乐器、调号、速度、拍号、历史时期等结构化元数据;二是在此基础上提出 LilyBERT——一个将 CodeBERT 适配到符号音乐的编码器,探索'代码预训练'范式能否迁移到音乐雕版语言,并通过在 Mutopia 上的线性探测系统评估数据规模、来源与微调策略对下游分类效果的影响。

与已有工作不同的是,本文的独特切入角度有三:第一,BMdataset 是首个以'音乐学家从原始手稿转录'为源头、并附带可溯源到 manuscript catalogue number 的 LilyPond-native 数据集;第二,论文选择 CodeBERT 而非纯文本 BERT 作为骨干,假设'具有严格文法、可编译的 LilyPond'在归纳偏置上更接近编程语言而非散文;第三也是最关键的切入点是论文系统对比了'90M 高质量标注 token'与'15B 自动转换 token',提出'小而精专家策展优于大而糙自动爬取'的命题,这在主流'数据规模至上'的范式下具有显著的反共识价值。

核心方法

本文方法整体上是一条'以代码预训练编码器为骨架、以符号音乐为目标域、以两阶段预训练 + 线性探测为评估范式'的技术路线:先用 LilyPond 领域知识扩展 CodeBERT 词表,再用 MLM 在大尺度自动转换语料上做 broad-coverage 预训练,最后在 BMdataset 上做 domain-specific 微调;评估阶段冻结模型对 Mutopia 做 composer 与 style 分类的线性探测,并通过 t-SNE 与混淆矩阵分析表示空间的语义结构。直觉上,作者相信 LilyPond 的类编译语法与编程语言同构,因此从代码域迁移归纳偏置比从自然语言域更合适;同时假设专家策展的小规模数据具有比自动转换大数据更高的信噪比。

LilyBERT 的核心创新体现在三点与已有方法的本质区别:(1)相对于 MIDI 路径,本文把'文本式雕版语言'直接视为可被 LLM 消费的中间表示,绕过 MIDI→MusicXML→LilyPond 的格式转换链路;(2)相对于 Mutopia 等纯语料库,本文强调'带可溯源 manuscript metadata 的专家策展'而非纯规模,预训练前先做 parser validation,确保 95.7% 的文件通过编译并与渲染后 PDF 的 note 数 1:1 匹配;(3)相对于从头预训练 BERT 类模型,本文选定 CodeBERT 作为骨架并通过 add_tokens() 注入 115 个 LilyPond 原子 token,使 \relative、\clef、\key 等命令不再被 BPE 切成 \、rel、ative 这种无语义子词,而是作为不可分的整体单元进入模型。

方法步骤详情

方法实施步骤共四步。第一步为词表扩展:在 RoBERTa BPE(50,265 词)的基础上用 HuggingFace add_tokens() 新增 115 个 LilyPond 特定 token,分六类:音乐命令 15 个、力度记号 19 个、结构块 20 个、装饰音 14 个、调式 9 个、其他属性覆盖 38 个;最终词表 50,380,并将 RoBERTa 原生 重映射到 [CLS]、[SEP]。第二步为模型初始化:在 CodeBERT 基础上将 token embedding 从 50,265 行扩到 50,380 行,新增行随机初始化并在 MLM 训练中学习。第三步为两阶段预训练:阶段 1 对从 PDMX 用 musicxml2ly 转出的约 15B token 训练 1 个 epoch;阶段 2 在 BMdataset(~90M token、已转为 nederlands 音高记号)上微调 10 个 epoch;超参数为有效批量 288(4×A40 48GB DDP)、学习率 $2\times 10^{-4}$ 余弦调度、10% warmup、权重衰减 0.01、梯度裁剪 1.0、bfloat16 精度、AdamW 优化器、序列长度 512、early stopping patience 5。第四步为对比评估:除两阶段模型外,还训练三个对照——CodeBERT+PDMXfull(15B token)、CodeBERT+BMdataset(仅 90M)、CodeBERT+PDMX90M(同等规模 90M 平衡对照),最终在 Mutopia 上做 composer(30 类)与 style(10 类)线性探测,并提取 layer 3/6/9/12 表征绘制 t-SNE 与混淆矩阵。

技术新颖性

技术新颖性主要体现在三个层面:第一层面是数据层,提出并验证了'parser validation'闭环——用 LilyPond 编译器 + PostScript notehead glyph regex 比对笔记数,得到 95.7%(332/347)的完美匹配率,其余 15 个文件均误差仅 0.26%,为下游建模奠定高质量语料;第二层面是模型层,把 CodeBERT 通过加 115 原子 token 与 MLM 微调适配到 LilyPond,做出'代码预训练→符号音乐'的迁移实证;第三层面是实验层,通过 size-matched 对照(PDMX90M vs BMdataset)剥离'数据量'与'数据质量'两个混淆变量,得出 90M 策展 token 在 composer 上反而比 15B 自动 token 高 1.2 个百分点、在 style 上高 1.4 个百分点的反共识结论,并通过两阶段组合取得 84.3% 的最优作曲家精度,明确将'领域专业微调'与'广覆盖预训练'定性为互补而非冗余。

实验结果

实验揭示了四个核心数字与结论。第一是'小数据胜大数据'的稳健性:在同样 90M token 的规模匹配对照中,CB+BMdataset 的作曲家精度为 $0.829\pm 0.013$、风格精度为 $0.837\pm 0.004$,分别超过 CB+PDMX90M 的 $0.817\pm 0.017$ 与 $0.823\pm 0.009$,意味着 BMdataset 的策展质量抵得过 PDMX 自动转换的规模红利。第二是规模本身的边际递减:CB+PDMXfull(15B token、1 epoch)作曲精度仅 $0.808\pm 0.021$,比单纯的 90M 微调还低,说明把 PDMX 当作纯数据来源而不在 LilyPond 风格上微调难以学到辨识性特征。第三是两阶段组合互补:CB+PDMX→BM 取得作曲 $0.843\pm 0.010$ 与风格 $0.829\pm 0.011$ 的最佳整体表现,其中作曲准确率 84.3% 是全文最高指标。第四是层级动力学差异:图 2 显示作曲特征在中段层(layers 6–9)最强、风格特征在浅-中段层(layers 3–6)最强且向输出端退化,这与 BERT 经典 NLP pipeline 工作中 Tenney 等的发现一致;图 3 的 t-SNE 同时分出 Baroque/Classical/Romantic 三大风格簇与簇内的作曲家亚结构;图 4 的混淆矩阵显示 Haydn↔Mozart、Grieg↔Chopin 等风格临近作曲家互为最大混淆来源,印证错误源自'真实音乐相似性'而非随机噪声。

Comparison of symbolic music datasets(符号音乐数据集比较)
Table 1: Comparison of symbolic music datasets(符号音乐数据集比较)
Layer-wise probing accuracy for composer and style classification(按层数变化的探测准确率)
Figure 2: Layer-wise probing accuracy for composer and style classification(按层数变化的探测准确率)
t-SNE projection of layer-6 embeddings(层 6 嵌入的 t-SNE 投影)
Figure 3: t-SNE projection of layer-6 embeddings(层 6 嵌入的 t-SNE 投影)
查看结构化数据
任务指标本文基线提升
作曲家分类(30 类,layer 6,5 折) 准确率 Accuracy 0.843 ± 0.010(CB + PDMX→BM 两阶段) 0.808 ± 0.021(CB + PDMXfull,仅 15B token 预训练) +3.5 个百分点(绝对值),相对提升约 4.3%
作曲家分类(30 类,layer 6,5 折) 准确率 Accuracy 0.829 ± 0.013(CB + BMdataset,仅 90M token) 0.817 ± 0.017(CB + PDMX90M,规模匹配的 90M token 对照) +1.2 个百分点,证明同等规模下专家策展的优势
风格/时期分类(10 类,layer 6,5 折) 准确率 Accuracy 0.837 ± 0.004(CB + BMdataset,仅 90M token) 0.823 ± 0.009(CB + PDMX90M,规模匹配对照) +1.4 个百分点
风格分类(10 类,layer 6,5 折) Macro Recall 0.797 ± 0.035(CB + PDMX→BM,两阶段) 0.781 ± 0.031(CB + PDMXfull,仅 PDMX) +1.6 个百分点
作曲家分类(30 类,layer 6,5 折) Macro Precision 0.765 ± 0.031(CB + PDMX→BM,最优均值) 0.751 ± 0.025(CB + PDMXfull) +1.4 个百分点

局限与改进

作者明确承认的限制有四条:(1)分布偏斜严重——Vivaldi 占作品的 30.5%、弦乐器出现在 91.6% 文件中、Late Baroque 占 76.4%、concerto 占 34.6%,这使得长尾作曲家(贡献 1–18 件作品)的判别困难;(2)36/383 原始 LilyPond 项目因语法错误或未支持字符无法编译,导致有效曲谱数量受限;(3)PDMX-LilyPond 语料由 musicxml2ly 自动转换而成,可能引入冗余 \override、非惯用 voicing 等系统性伪影,本文未做转换后规范化也未量化影响;(4)评估局限于 Mutopia 单一外部语料库且只在两个任务上做线性探测,未涉及生成、检索、配器等任务。我自己的额外观察包括:BMdataset 共 90M token,在 Cross-Entropy MLM 上训练 10 epoch 后即早停,模型容量与数据容量可能都未饱和;同时只有 MLP-无隐藏层的线性探测,未验证非线性探测是否仍保留此结论;最后,作者放弃 RTD 目标基于 CodeBERT 原始消融结论,但 RTD 在符号音乐上的边际收益尚未独立验证。

独立分析的弱点

独立审视后我认为本文存在四个具体弱点。其一是 Vivaldi 单作曲家独占 30.5% 的比例过高,可考虑过采样或加权损失;改进方向是引入 class-balanced sampler 或 focal loss。其二是 PDMX-LilyPond 来自自动转换,可能与人类写作风格不一致,改进方向是引入后转换规范化(去除冗余 \override、统一 voicing 风格)或仅使用 Mutopia 等人类书写语料做预训练。其三是 BMdataset 仅覆盖 Baroque 与极少数 Transitional Classical 时期,无法泛化到 Romantic、20 世纪或流行风格;改进方向是横向扩展 IMSLP 与 Mutopia 的人工转录子集。其四是探测协议仅做了无隐藏层线性分类器,未必能完整反映 LilyBERT 的表征上限;改进方向是补做 nonlinear probing(2 层 MLP)与下游任务(classification + retrieval + generation)联合验证。

未来方向

作者在文末与摘要均提出了四类未来方向:(1)横向扩源,纳入 Mutopia、IMSLP 转录等更多时期与风格的人工曲谱;(2)结构感知编码器,利用 LilyPond 的可解析文法对接 AST-aware 或 GraphCodeBERT 类图增强模型,让 \score 这种块层级结构直接作为先验;(3)生成任务落地,将 LilyBERT 嵌入用 LoRA 适配到 LilyPond 生成,实现可控作曲;(4)元数据条件生成,把作曲家、形式、调号等 metadata 作为控制信号。基于本文成果我自己可延伸的方向包括:把 BMdataset 引入 cross-modal 联合训练(音频 + LilyPond 文本对齐)、构建 lilypond-aware 的 music information retrieval 评估基准、用 attention probing 解释 Haydnt↔Mozart 等风格临近作曲家在注意力头层面的混淆路径。

复现评估

复现评估整体良好但需要一定资源门槛。开源情况方面,论文在 Zenodo(DOI 10.5281/zenodo.18723290)公开 BMdataset 的 .ly 源码与 .ly/.midi/.pdf/.json 元数据,在 HuggingFace(csc-unipd/lilybert)公开模型权重,在 GitHub(CSCPadova/Haydn-lilybert)公开代码;训练所需的 CodeBERT-base 与 musicxml2ly 均为公开依赖。算力方面,原文报告 4 张 NVIDIA A40 48GB DDP、有效批量 288、bfloat16 精度下完成两阶段预训练(约 15B + 90M token,单 epoch 在该规模下仍需数天),中等规模实验室具备复现能力。难度评估上,数据集小(347 文件)易于验证,但 15B token 的 PDMX 阶段对资源与时间消耗较高,个人研究者可跳过该阶段直接复现 BMdataset 微调对照;linear probing 部分仅需冻结模型 + 1 层线性分类器,几乎可在单卡 GPU 上数小时内完成。