站点出售QQ:1298774350
你现在的位置:首页 > 演出资讯  > 歌剧话剧

帕多瓦大学用347份巴洛克乐谱,训练出了一个懂音乐的AI

发布时间:2026-04-22 22:57:55  浏览量:4

更关键的是,研究团队没有去找互联网上随处可见的那种质量参差不齐的乐谱文件,而是与BaroqueMusic.it网站合作,使用了347份由音乐学专家直接从17至18世纪原始手稿转录的巴洛克音乐乐谱。这批数据规模并不大,换算成文字大约只有9000万个词——而他们的对比对象是一个拥有150亿个词的庞大数据集。然而,最终的实验结果令人印象深刻:这9000万个精心挑选的"词",在作曲家识别和风格分类两项任务上,都击败了那个大它167倍的竞争对手。这个发现促使研究团队重新思考一个在AI领域长期存在的假设:数据越多,模型就一定越聪明吗?

一、乐谱的"完整菜谱":LilyPond是什么,为什么它比MIDI更有价值

要理解这项研究的价值,先得明白LilyPond和MIDI的本质区别。回到厨房的比喻:MIDI是一份"操作流水账",记录的是厨师每一刀切在哪里、每一次翻炒持续了多久;而LilyPond更像是一份"完整菜谱手册",不仅记录了这些动作,还标注了这道菜的历史背景、呈现方式、口味层次,甚至厨师对每个步骤的个人注解。

LilyPond文件在结构上和编程语言非常像——它有嵌套的代码块、反斜杠开头的命令(比如`\relative`代表相对音高,`\clef`代表谱号),还有变量定义和宏展开。一个LilyPond文件不只是一串音符序列,而是一个有层次、有逻辑的音乐描述系统。正因如此,研究团队认为,训练过编程语言的AI模型,天然比只看过普通文章的模型更适合来"读"LilyPond——因为两者的语言结构有相似之处。哥伦比亚大学的研究者早先发现,处理结构化语言(如化学符号、数学公式)时,代码预训练模型的表现往往优于普通文本模型,这给了团队重要的启发。

尽管网络上存在一个叫Mutopia的LilyPond乐谱社区,收录了超过两千份公众贡献的乐谱,但它缺乏系统性的音乐学注解,也从未被用来训练AI。这片肥沃的土地,在这项研究之前几乎无人耕耘。

二、347份手稿转录乐谱:BMdataset是怎么被造出来的

研究团队整理的这批数据集被命名为BMdataset,其中"BM"代表"Baroque Music"(巴洛克音乐)。它的诞生过程有点像考古发掘——不是从网上批量爬取,而是由音乐学家坐在一份份17、18世纪的手写乐谱前,一笔一笔地将其转录为LilyPond格式,并且每一份都注明了对应的原始手稿编号和馆藏目录号,确保每一个音符都能追溯到它的历史源头。

原始素材来自BaroqueMusic.it,共有383份LilyPond项目。每个项目并不是一个单独文件,而是由多个文件组成的"工程包":一个定义音乐速记符号的宏文件、一个指定各乐章顺序的头文件、若干包含各乐器声部的乐章文件,以及一个将所有声部整合在一起的总谱文件。为了让这些文件能被AI直接处理,研究团队编写了自动化程序,按照依赖关系顺序读取并合并这些文件,最后逐一用LilyPond编译器验证合并后的文件能否正常编译输出乐谱。经过这道"质检",383份原始项目中有36份因为语法错误或不支持的特殊字符而未能通过,最终保留了347份可编译的完整乐谱。

这347份乐谱共包含2646个乐章,每个乐章相当于一首乐曲中独立的一个段落,比如一首协奏曲里的"快板"或"慢板"部分。在这些乐章内部,还有1679个按速度或情感标记划分的更小段落。整个数据集用研究团队专门设计的分词器衡量,约有9000万个"词"。

每一份乐谱还附带了精心整理的元数据,以JSON格式存储。这些元数据涵盖作曲家(共71位)、音乐体裁(16种,包括协奏曲、奏鸣曲、歌剧、组曲、咏叹调、康塔塔等)、MIDI乐器(25种,从提取`\set Staff.midiInstrument`指令中自动识别)、各段落的调性与调式(大调或小调)、速度标记与拍号,以及历史分期(早期巴洛克1650年前、鼎盛巴洛克1650—1700年、晚期巴洛克1700—1750年、过渡古典主义1750年后)。

段落名称的整理是一件颇费心思的工作。研究团队为65种不同的段落名称建立了一套分类体系,分为速度类(如快板、广板)、情感意图类(如柔情地、庄严地)、组曲舞曲类(如布雷舞、萨拉班德舞)、无速度标记类(如宣叙调、序曲),以及非描述性类(如咏叹调、三重奏)。对于那些名称本身信息量不足的段落,研究团队还计算了四分音符每分钟节拍数,并将其映射到标准速度分类中。更有意思的是,这套分类体系被构建为一个有向无环图,类似于知识图谱的结构,用来处理那些同时属于多个类别的情况——比如"基格舞"既属于组曲类,又在速度上属于快速类,两种归属都需要保留。

从数据分布来看,这批数据存在明显的倾斜。维瓦尔第一人就贡献了106首作品,占全部作品的30.5%;弦乐器在91.6%的文件中出现;晚期巴洛克风格占据76.4%的比例;协奏曲是最常见的体裁,占34.6%。尽管如此,数据集仍然覆盖了71位作曲家、16种体裁、25种乐器、10种调性和12种拍号,而且其中大多数作曲家都是巴洛克时期鲜有人研究的"小人物",这在现有的任何音乐AI数据集中都是独一无二的。

为了确保转录的准确性,研究团队还开发了一套自动验证流程。他们将每一份LilyPond文件用`-ps`参数编译成PostScript格式(一种用于打印的页面描述语言),然后用正则表达式在输出文件中搜索音符符头的数量,再与程序解析出的音符数量进行比对。排除掉那些定义了但实际未在总谱中使用的变量(比如一些写好了但没有演奏的华彩段落)和编辑性的"前置例子"之后,347份文件中有332份(占95.7%)实现了完全一致的1比1匹配,剩余15份的平均误差也只有0.26%,误差来源是LilyPond本身的一些特殊排版边界情况。

三、给AI装上"音乐词典":LilyBERT的词表扩充

研究团队要训练的AI模型被命名为LilyBERT,它的"骨架"来自微软研究院开发的CodeBERT——一个专门在六种编程语言(Python、Java、JavaScript等)上预训练过的语言模型,就像一个已经读过大量代码书籍的学生。

但直接让CodeBERT处理LilyPond文件有一个问题:CodeBERT使用的是一种叫做"字节对编码(BPE)"的分词方式,这种方式会把不常见的词拆开处理。举个例子,`\relative`这个在LilyPond中代表"相对音高记谱法"的重要命令,可能会被拆成`\`、`rel`、`ative`三个碎片——就像把"交响乐"这个词拆成"交"、"响"、"乐"三个无意义的字,完全破坏了它作为一个整体的语义。

为了解决这个问题,研究团队给CodeBERT的词典里增加了115个LilyPond专属词条,让这些命令在被处理时始终作为一个不可分割的整体对待。这115个新词分六大类:音乐命令类15个(如`\time`拍号、`\key`调性、`\clef`谱号、`\tempo`速度、`\repeat`反复、`\grace`装饰音等);力度标记类19个(如`\p`弱、`\pp`很弱、`\f`强、`\ff`很强、`\sfz`突强等,以及渐强渐弱记号);结构块类20个(如`\score`总谱块、`\relative`相对音高块、`\header`文件头、`\layout`排版块、`\midi`MIDI输出块等);演奏法与装饰音类14个(如`\trill`颤音、`\fermata`延长音、`\mordent`波音、`\staccato`断奏、`\arpeggio`琶音等);调式类9个(如`\major`大调、`\minor`小调,以及多利亚、弗里几亚、利底亚、混合利底亚等教会调式);以及属性覆盖与其他类38个(包括`\override`属性覆盖、`\set`属性设置、`\once`单次生效、`\segno`反复记号、`\coda`尾声记号、踏板标记、声部指令等)。

经过扩充,LilyBERT的词典从原来的50265个词条增加到了50380个。模型的整体结构保持不变:12层Transformer,768维隐藏向量,12个注意力头,总参数量约1.25亿。新增词条对应的词嵌入向量在训练开始时随机初始化,然后在预训练过程中被逐渐学习和调整。此外,研究团队还将词典中的特殊标记从RoBERTa风格的``和``重新映射为BERT风格的`[CLS]`和`[SEP]`,这是为了与后续探针实验中使用的学术惯例保持一致。

四、两阶段的"音乐速成班":LilyBERT是如何被训练的

训练LilyBERT的过程分两个阶段,可以用"先广泛涉猎,再精深钻研"来概括。

第一阶段是在一个庞大但质量参差不齐的数据集上进行"通识教育"。研究团队将PDMX数据集(一个包含25.4万份MusicXML格式乐谱的大型公共域数据集)用一个名为musicxml2ly的工具自动转换成LilyPond格式,得到了约150亿个词的语料。模型在这个庞大语料上跑了1个完整的训练轮次,相当于把所有资料通读了一遍。

第二阶段是在BMdataset上进行"专业深造"。模型在这9000万个精心整理的巴洛克乐谱词上反复训练了10轮,就像一个学生把一本重要的专业书籍从头到尾精读了十遍。

两个阶段都使用同一种训练目标:遮盖语言模型(MLM,Masked Language Model)。这种方法的原理是:随机遮住输入文本中15%的词,让模型根据前后文猜出被遮住的是什么。这就像做填字游戏,通过不断猜测和纠错来加深对语言规律的理解。CodeBERT原版训练时还使用了另一种叫"替换词检测"的目标,但那需要额外训练一个"出题模型",工程复杂度更高,而且CodeBERT自己的论文显示相比MLM提升有限,所以研究团队决定只使用MLM,简化训练流程。

训练过程的硬件配置是4块NVIDIA A40显卡(每块48GB显存),用分布式数据并行技术同时运行。有效批大小为288个序列,学习率设为2×10??,采用余弦退火调度并预留10%的训练步骤用于预热,权重衰减0.01,梯度裁剪阈值1.0,使用bfloat16混合精度训练和AdamW优化器,最大序列长度512个词。每个LilyPond文件被切成互不重叠的512词块,每块首尾分别加上`[CLS]`和`[SEP]`特殊标记。验证损失连续5次不改善时提前停止训练。

值得一提的是,BMdataset原始乐谱使用意大利语音名体系(do、re、mi、fa、sol...)而非LilyPond的默认荷兰语体系(c、d、e、f、g...)。为了确保所有训练数据使用统一的音名标记,研究团队在训练前将BMdataset全部转换为荷兰语体系——这与PDMX转换默认使用的体系以及Mutopia评测集中大多数文件的用法保持一致。

五、考试时间:在完全陌生的乐谱上测验AI的理解能力

训练完成后,研究团队要评估LilyBERT到底学到了多少音乐知识。他们选择的考场是Mutopia——一个与BMdataset完全独立的LilyPond乐谱社区,收录了2123份公共域乐谱,涵盖320位作曲家和13种音乐风格,时间跨度从巴洛克延伸到20世纪现代音乐。这种"在没见过的题目上考试"的方式,在机器学习领域叫做"域外评测",是检验模型真正理解能力(而非死记硬背)的黄金标准。

具体的评测方式叫做"线性探针"。研究团队首先冻结LilyBERT的全部参数(也就是不允许模型在评测过程中继续学习),然后提取模型对每份乐谱的内部表示向量(可以理解为模型对这份乐谱的"印象摘要"),最后在这个摘要向量上训练一个极其简单的线性分类器——简单到只有一层、没有任何隐含层——来判断这份乐谱属于哪位作曲家或哪种风格。之所以用这么简单的分类器,是为了确保分类的准确与否完全取决于LilyBERT提供的"印象摘要"质量,而不是分类器自身的学习能力。

为了防止模型作弊(LilyPond文件头部通常会直接写明作曲家姓名和修订记录),研究团队在提取摘要前先把文件头全部删除。每份文件被切成若干512词的块,各块的向量表示被平均合并成一个代表整份文件的向量。由于不同层次的Transformer往往捕捉不同层次的语言信息,研究团队在第3、6、9、12层分别提取向量并分别测试,最终选用表现最优的第6层结果作为主要报告数据。评测数据集筛选了每类至少10份乐谱的作曲家和风格标签,得到30个作曲家类别(1438份乐谱)和10个风格类别(1972份乐谱),采用5折分层交叉验证,报告准确率、宏平均精确率和宏平均召回率三项指标。

六、小而精的奇迹:实验结果说明了什么

研究团队共对比了四种模型配置,就像进行了一场精心设计的对照实验:第一种是CodeBERT只在完整PDMX数据集(约150亿词)上训练1轮;第二种是CodeBERT只在BMdataset(约9000万词)上训练10轮;第三种是CodeBERT在等量大小的PDMX子集(同样约9000万词)上训练10轮,专门用来和第二种做公平比较;第四种是先在完整PDMX上预训练,再在BMdataset上精调。

最核心的发现是第二种和第三种模型的对比。两者使用了完全相同数量的训练数据(约9000万词),训练了相同的轮数(10轮),唯一的差别是数据来源:一个来自精心整理的巴洛克乐谱,另一个来自从MusicXML自动转换的随机乐谱样本。结果,BMdataset训练出的模型在作曲家识别上高出1.2个百分点,在风格识别上高出1.4个百分点。这不是一个令人震惊的数字,但意义深远:在数据量完全相同的情况下,由音乐学家精心整理、具有高度内在一致性的专业数据,确实比随机抓取的同等量数据更有价值。

更有意思的是第二种和第一种的对比。只用9000万词精调的BMdataset模型,在作曲家识别和风格识别两项任务上都超过了使用150亿词训练的PDMX模型。换句话说,一份高质量的专业小数据集,在这两个具体任务上击败了体量大它167倍的对手。

表现最好的是第四种"先广后深"的组合模式,在作曲家识别上达到84.3%的准确率,在两项任务的召回率上也均居榜首。这说明大规模数据的泛化能力和小规模专业数据的深度理解能力是互补的,而不是相互替代的关系——先用大量数据建立对LilyPond语言的整体感知,再用精质数据磨砺对具体音乐风格的辨别能力,效果最好。

不过在风格分类上,有一个有趣的例外:只用BMdataset精调的模型在风格分类的准确率上(0.837)略微超过了四种模型组合中的最高分,虽然差距极小。研究团队认为这可能是因为风格分类(区分巴洛克、古典、浪漫等大类别)本质上是一种较为宏观的识别任务,用一批高度聚焦于巴洛克时期的小数据集就能很好地覆盖,而作曲家识别需要捕捉更细腻的个人创作习惯,反而更能从大规模预训练中受益。

从不同Transformer层的表现来看,作曲家信息在中间层(第6—9层)被编码得最清晰,而风格信息在较浅的层(第3—6层)就已经被很好地捕捉,并且随着层数加深反而有所退化。这与语言学领域对BERT内部结构的经典研究结论一致:浅层捕捉表层统计规律(如常用音型、调性倾向),深层则越来越专注于服务训练目标本身(填词游戏),对外部分类任务的泛化能力反而下降。

用t-SNE降维可视化第6层的表示向量,可以看到不同音乐风格(巴洛克、古典、浪漫)的乐谱在空间中形成了清晰分离的区域,而在每个风格区域内部,不同作曲家的乐谱又形成了各自紧密的子聚落。混淆矩阵则揭示,模型犯的错误大多发生在风格上真正接近的作曲家之间,比如海顿偶尔被错认为莫扎特,葛利格偶尔被错认为肖邦。这说明模型并非随机犯错,而是在"犯了一个有道理的错误"——把两位确实在音乐语言上非常相近的作曲家搞混了。

七、这项研究的局限与未来的方向

研究团队对这项工作的局限有清醒的认识。BMdataset在数据分布上存在明显偏斜:维瓦尔第一人占据三成,弦乐器主导九成,晚期巴洛克风格占据四分之三。这意味着模型对这批数据之外的音乐风格可能认知有限。

PDMX转换语料的质量也存在隐患。musicxml2ly自动转换工具生成的LilyPond文件,可能包含冗余的属性覆盖、不自然的声部分配等"机器腔",这些特征在手工撰写的LilyPond文件中几乎看不到,却充斥于训练语料中。研究团队没有对转换后的文件做任何后处理,这种系统性偏差对模型究竟有多大影响,仍是一个悬而未决的问题。

未来的研究方向包括:扩充语料覆盖范围,将Mutopia社区和IMSLP(国际乐谱资料库)中的LilyPond转录纳入训练;利用LilyPond文件本身可解析的语法结构,开发类似GraphCodeBERT那样能直接处理语法树或代码块层次结构的结构感知编码器;将LilyBERT的表示能力应用到生成任务,比如通过LoRA技术来微调大语言模型进行LilyPond乐谱生成;以及探索如何将元数据中丰富的层次标签(体裁、速度、调性、历史分期)用作可控音乐生成的条件信号。

说到底,这项研究想告诉我们的道理其实很朴素:在某些需要细腻理解的任务上,一个由专家精心打磨的小图书馆,比一个堆满随机书籍的巨型仓库更有用。数据质量和数据来源的可靠性,有时候比数据数量更重要。当然,如果能把两者结合起来——先用大量数据打好基础,再用精质数据深化理解——效果会更好。

归根结底,这项来自帕多瓦大学的研究在AI音乐理解领域打开了一扇新的窗口,把LilyPond这种此前几乎被AI领域完全忽视的格式推到了台前。它证明了一件事:有时候,与其追求规模的宏大,不如专注于内容的纯粹。你手上那份从300年前手稿里细心誊抄的乐谱,或许比网上随手可得的百万条记录更值钱。有兴趣深入了解这项研究的读者,可以通过arXiv编号2604.10628查阅完整论文,数据集、分词器和模型权重也已全部开源发布。

---

Q&A

Q1:BMdataset和Mutopia这两个LilyPond数据集有什么区别?

A:BMdataset是由音乐学家直接从17至18世纪原始手稿转录的347份巴洛克乐谱,每份都有完整的音乐学元数据(作曲家、体裁、调性、速度等),并附有原始手稿的馆藏编号,数据来源高度可信。Mutopia则是一个社区众包的公共域LilyPond乐谱集合,收录约2100份乐谱,涵盖时间跨度更宽、风格更多样,但缺乏系统性的音乐学注解。在这项研究中,BMdataset用于训练,Mutopia用于测试,两者完全独立。

Q2:LilyBERT和普通的音乐AI有什么不同?

A:大多数音乐AI是在MIDI格式上训练的,MIDI只记录音符的时间和力度,会丢失大量乐谱信息。LilyBERT则基于LilyPond文本格式,能捕捉到装饰音、演奏法、段落结构等更丰富的音乐信息。此外,LilyBERT以CodeBERT为基础,利用了LilyPond和编程语言在结构上的相似性,并扩充了115个专属音乐词条,确保LilyPond命令在处理时保持完整语义。

Q3:为什么只有9000万词的BMdataset能击败150亿词的PDMX数据集?

A:核心原因在于数据质量和专业一致性。BMdataset由音乐学专家从原始手稿转录,格式规范、风格统一、标注精准。PDMX则是将MusicXML文件自动转换成LilyPond格式,转换过程可能引入冗余代码、不自然的声部分配等"机器腔",数据内在质量偏低。当下游任务需要识别细腻的音乐风格差异时,训练数据的精纯度比数据体量更关键。