一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种基于两阶段生成模型的自动音乐生成方法及装置

2023-01-15 06:43:58 来源:中国专利 TAG:


1.本发明涉及人工智能及深度学习技能领域,尤其涉及一种基于两阶段生成模型的自动音乐生成方法及装置。


背景技术:

2.音乐一直以来是人类社会放松心情、陶冶情操的一种艺术方式,它已经深入到了人类生活的方方面面。自从90年代以来,人们便不断尝试使用计算机辅助创作音乐。近年来,随着深度学习时代的到来,越来越多的深度学习模型被应用到自动作曲领域,人工智能作曲迎来了蓬勃发展。深度学习模型可以通过数据集学习到数据的相关特征,在训练完成后可以自动完成各种任务。深度学习模型在如图像识别、语音处理、自然语言处理等领域上都达到了非常出色的表现。
3.近年来,循环神经网络(rnn)常常被用于自动作曲领域。它由输入层、隐含层和输出层组成。在循环神经网络中它前一刻的输出会和下一刻的输入关联,使网络可以基于当前信息和过去信息进行学习,非常适合用来处理时序信息。但是,当序列较长时循环神经网络易出现梯度爆炸问题,使其很难有效学习到相应特征。长短期记忆网络(lstm)引入门控方式缓解了这种现象,但并没有解决这个问题。因此,使用循环神经网络和长短期记忆网络生成的音乐旋律往往不能建立长时间结构联系。最近,一种包含注意力机制的网络transformer 被用于自动作曲。在实际应用中表明,transformer能比rnn和lstm更好的处理长序列问题。但传统transformer仅仅由注意力构成,在处理序列无法关注到时序关系。并且目前的模型在应用到自动作曲领域中往往忽略乐理知识对作曲内容的重要性,使生成的音乐与真实音乐相比在诸如和弦、节奏等方面有较大差距。
4.综上所述,如循环神经网络(rnn)、长短期记忆网络(lstm)和变换器网络(transformer) 等深度学习模型不断被用于自动音乐生成领域。但目前的模型生成的音乐旋律往往不能建立长时间结构联系,并且在和弦等乐理方面与真实音乐存在差距。
5.例如,已授权专利(cn109727590b)提供基于循环神经网络的音乐生成方法及装置,涉及深度学习技术领域,方法包括以下步骤:建立循环神经网络;将midi格式的第一音符序列进行预处理,得到训练数据集;通过训练数据集对循环神经网络进行训练,得到神经网络模型;通过神经网络模型及采样策略对输入的第二音符序列的各个音符事件进行计算、排序,输出第三音符序列;将第三音符序列解码转换为midi格式的音符序列文件;将音符序列文件转换为音频格式的输出文件。该发明通过神经网络模型生成音乐,借助深度神经网络强大的学习、表示能力,通过采样策略,快速有效的得到优质的旋律,便于用户生成原始的旋律,有效提高了音乐创作的效率。
6.但是,其缺陷是该发明使用循环神经网络进行音乐生成,循环神经网路在处理较长序列时存在梯度消失问题,不能有效学习较长序列的相应特征。因此,该发明进行音乐生成时,生成的音乐往往不具备长时间结构联系,这影响了生成音乐的动听性。
7.例如,已公开专利(cn113707112a)一种基于层标准化的递归跳跃连接深度学习音
乐自动生成方法,由收集乐器数字接口数据、对训练集进行预处理、构建音乐自动生成网络、训练音乐自动生成网络、自动生成音乐文件步骤组成。本发明以transformer-xl神经网络的结构作为基础,引入层标准化递归神经网络和多专家层,优化了整体神经网络性能,缓解了递归消失或爆炸的情况,增强神经网络的学习能力,使生成的音乐的质量更高,更贴近训练集的类型。
8.但是,其缺陷是该发明进行音乐生成时没有对和弦进行建模,单一的transformer-xl很难捕获音乐中的和弦分布,不能有效生成和弦丰富的音乐内容,而且使用transformer-xl作为神经网络的基础相比于本发明使用的linear transformer存在训练代价较大、训练较慢的问题。


技术实现要素:

9.有鉴于此,本发明提出了一种基于两阶段生成模型的自动音乐生成方案,以生成能够捕获长时间结构联系和和弦丰富的音乐。
10.本发明提供的一种基于两阶段生成模型的自动音乐生成方法,基于两阶段音乐生成模型实现自动音乐生成,所述两阶段音乐生成模型由集成网络和变换器网络组成,生成过程包括以下步骤,
11.步骤1,对数据集音乐序列进行处理,获得训练用的和弦序列和音符序列;
12.步骤2,使用步骤1所得和弦序列和音符序列分别训练集成网络和变换器网络;
13.步骤3,将初始和弦序列输入训练好的集成网络,将初始音符序列输入训练好的变换器网络,生成相应的和弦序列和音符序列;
14.步骤4,将步骤3生成的和弦序列和音符序列转化为音乐内容,得到相应输出文件。
15.而且,所述训练用的和弦序列和音符序列由midi序列中提取,
16.和弦序列由y表示如下,
17.y=[y1,y2…yn
]
[0018][0019]
其中,i∈[1,n],yi表示第i个和弦,表示第i个和弦的开始时间,表示示第i个和弦的类型;音符序列由z表示如下,
[0020]
z=[z1,z2…zn
]
[0021][0022]
其中,i∈[1,n],zi表示第i个音符,表示第i个音符的开始时间,表示第i个音符的持续时间,表示第i个音符的音高,表示第i个音符的弹奏力度。
[0023]
而且,所述集成模型通过adaptive boosting算法集成卷积神经网络cnn、门控循环网络gru和长短期记忆网络lstm构建。
[0024]
而且,所述变换器网络基于线性变换器构建。
[0025]
另一方面,本发明还提供一种基于两阶段生成模型的自动音乐生成装置,用于实现如上所述的一种基于两阶段生成模型的自动音乐生成方法。
[0026]
而且,用于基于两阶段音乐生成模型实现自动音乐生成,所述两阶段音乐生成模
型由集成网络和变换器网络组成,包括以下模块,
[0027]
第一模块,用于对数据集音乐序列进行处理,获得训练用的和弦序列和音符序列;
[0028]
第二模块,用于使用第一模块所得和弦序列和音符序列分别训练集成网络和变换器网络;
[0029]
第三模块,用于将初始序列分别输入训练好的集成网络和变换器网络,生成相应的和弦序列和音符序列;
[0030]
第四模块,用于将第三模块生成的和弦序列和音符序列转化为音乐内容,得到相应输出文件。
[0031]
或者,包括处理器和存储器,存储器用于存储程序指令,处理器用于调用存储器中的存储指令执行如上所述的一种基于两阶段生成模型的自动音乐生成方法。
[0032]
或者,包括可读存储介质,所述可读存储介质上存储有计算机程序,所述计算机程序执行时,实现如上所述的一种基于两阶段生成模型的自动音乐生成方法。
[0033]
和现有技术相比,本发明的优点在于:
[0034]
1.本发明将和弦和音符分开提取生成更能捕获和弦在结构上的联系,提高了生成音乐的和弦丰富度。并且采用集成模型在提高准确度的同时增加了模型的泛化能力。
[0035]
2.本发明使用线性变换器网络生成音符序列,对模型的多头注意力进行了改进,保证不同的头可以捕获到序列内各种范围的依赖关系;在模型的注意力模块前后添加了lstm层,为模型带来了时序信息,使生成的音符在时间序列上联系更加紧密。
附图说明
[0036]
图1为实施例的用于自动音乐生成的示例性方法的流程图。
[0037]
图2为实施例的集成网络的示例性架构图。
[0038]
图3为实施例的线性变换器(linear transformer)的示例性架构图。
[0039]
图4为实施例的基于两阶段生成模型的自动音乐生成装置的结构示意图。
具体实施方式
[0040][0041]
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0042]
本发明提供的音乐智能生成方案涉及到一种两阶段音乐生成模型,具体涉及到一种集成网络和一种变换器网络,所诉集成网络由卷积神经网络、长短期记忆网络、门控循环网络构建。该发明的音乐生成过程包括:对数据集音乐序列进行处理,获得和弦序列和音符序列;使用和弦序列和音符序列分别训练集成网络和变换器网络;给定初始序列,输入训练好的集成网络和变换器网络以生成相应的和弦序列和音符序列;将生成的和弦序列和音符序列转化为音乐内容。该发明实现了从midi序列自动生成音乐的过程,生成的音乐具有很好的可听性。
[0043]
参见图1,本发明实施例提供一种基于两阶段生成模型的自动音乐生成方法,包括
以下步骤:
[0044]
步骤101处,对midi格式的音乐数据集进行处理,获得和弦序列和音符序列;
[0045]
和弦序列由y表示,具体公式如下:
[0046]
y=[y1,y2…yn
]
ꢀꢀꢀ
(1)
[0047][0048]
其中,i∈[1,n],yi表示第i个和弦,表示第i个和弦的开始时间,时间单位为毫秒,表示示第i个和弦的类型。
[0049]
音符序列由z表示,具体公式如下:
[0050]
z=[z1,z2…zn
]
ꢀꢀꢀꢀ
(3)
[0051][0052]
其中,i∈[1,n],zi表示第i个音符,表示第i个音符的开始时间,表示第i个音符的持续时间,时间单位为毫秒,表示第i个音符的音高,表示第i个音符的弹奏力度。
[0053]
步骤102处,使用和弦序列训练集成网络,使用音符序列训练变换器网络;
[0054]
步骤103处,将初始和弦序列输入训练好的集成网络,将初始音符序列输入训练好的变换器网络,生成相应的和弦序列和音符序列;
[0055]
所述初始和弦序列为随机生成或用户选择的和弦序列片段,所述初始音符序列为随机生成或用户选择的音符序列片段。
[0056]
步骤104处,将生成的和弦序列和音符序列转化为音乐内容,转换过程使用python中专门用于音乐处理的包midtok完成。
[0057]
集成网络通过集成多个较弱的学习器构建一个强学习器,在有很好的预测准确度的同时有很强的模型泛化能力。在一首音乐当中,通常和弦的数量会比音符数量少很多,因此训练中易因训练数据不足而造成过拟合。因此本实施例使用集成网络在保证预测准确度的同时减少过拟合现象。在本实施例中集成网络通过adaptive boosting算法集成卷积神经网络(cnn)、门控循环网络(gru)和长短期记忆网络(lstm)构建,构建过程采用顺序、级联结构,先训练卷积神经网络,其次训练门控循环网络,最后训练长短期记忆网络。后一个模型在前一个模型训练完成的基础上再进行训练,并通过相应的算法专门解决前一个模型无法解决的问题。将卷积神经网络、门控循环网络和长短期记忆网络分别命名为c1,c2,c3,具体训练过程如下:
[0058]
1.初始化每个和弦序列的训练难度为1/n;即其中, i∈(1,n),n表示和弦序列的个数,wi代表第i个和弦序列的训练难度;
[0059]
2.训练集成网络的子网络(cj),训练完成后计算学习错误率,分析哪些和弦序列易被学习,哪些和弦序列不易被学习,并减少前者的训练难度,增加后者的训练难度。即:
[0060][0061]
其中,j∈[1,3],εj表示第j个模型的学习错误率,δ()是一个函数,当条件成立时函数值为1,反之函数值为0,yi表示第i个和弦序列。
[0062]
当和弦序列被正确学习时
[0063][0064]
当和弦序列被错误学习时
[0065][0066]
3.计算当前错误率,并根据错误率更新当前模型权重,计算公式如下:
[0067][0068]
其中,αj表示第j个模型的权重,εj表示第j个模型的错误率,可由式(5)计算。
[0069]
4.重复步骤2和3,直到3个网络均训练完成,并保存3个模型权重。
[0070]
训练完成后就可以得到模型的最终输出:
[0071]
f=α1f1 α2f2 α3f3ꢀꢀꢀꢀꢀ
(9)
[0072]
其中,α1、α2、α3代表各个模型的权重,f1、f2、f3分别代表各个模型的输出。
[0073]
根据式(9)的计算就可以得到集成模型对和弦序列的预测值,将预测值最高的序列加入和弦序列中,然后再将新的和弦序列输入模型中,不断迭代,就可以不断更新得到完整的和弦序列。
[0074]
图2示出了集成网络的示例性架构。
[0075]
在本实施例中,集成模型共有三个模型构建,分别是卷积神经网络204、门控循环神经网络205、长短期记忆网络206。和弦序列201是从音乐数据集提取出的和弦序列,在卷积神经网络204完成训练后会根据和弦序列学习的难易程度更新和弦序列训练权重,难度更高的序列会被赋予更高的权重,从而得到和弦序列202,权重具体更新过程可由式(5)(6)(7) 计算。门控循环网络205在和弦序列202上序列训练,从而着重学习卷积神经网络204不易学习的和弦序列,训练完成后更新训练难度,从而得到和弦序列203,具体过程可由式(5) (6)(7)计算。长短期记忆网络206在和弦序列203上进行训练,着重解决卷积神经网络和门控循环网络不易学习的序列。训练完成后,保存各个模型的权重信息,权重计算过程可由式(9)计算。训练完成后当初始和弦序列被输入集成模型,模型就可以根据三个模型的加权求和得到和弦序列的预测值,从中取出预测概率最高的和弦序列加入到序列中,然后再将新的和弦序列输入模型中,如此不断迭代,更新就可以得到完整的和弦序列。
[0076]
本实施例的变换器网络是基于线性变换器(linear transformer)构建的。原始变换器的计算代价随着序列长度的增加呈二次增长,这大大增加了训练长音符序列的难度。本实例中采用的线性变换器主要对原始变换器的注意力层进行了改进,线性变换器应用一个相似度函数将softmax计算过程映射到另一个维度,将计算复杂度从o(n2)降低到o(n),其中n表示序列长度。该改进大大降低了变换器网络处理长序列时的训练成本,能较好的处理长音符序列。
[0077]
对于原型变换器网络,设输入序列x∈rn×f,序列长度为n,特征维度为f。一个transformer 是一个函数t:rn×f→rn
×f,是通过l个变换器网络层t1(),

,t
l
()组成,如下:
[0078]
t
l
(x)=f
l
(a
l
(x) x)
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(10)
[0079]
其中,l∈[1,l],函数f
l
()通常使用一个两层的前馈神经网络实现,函数a
l
()代表自注意力函数。
[0080]
自注意力函数是每个位置计算所有其他位置的特征表示的加权平均值。形式上,输入序列x∈rn×f由3个矩阵wq∈rf×d、wk∈rf×d、wv∈rf×m投影到相应的特征表示q、k、v,其中,设d=m=512。自注意力函数a
l
(x)=v

的计算过程如下:
[0081]
q=xwq(11)
[0082]
k=xwk(12)
[0083]
v=xwv(13)
[0084][0085][0086]
其中,softmax()是归一化指数函数,其计算过程如式(15),以矩阵q的第i行qi输入,其中qi代表矩阵q的第i行,qj代表矩阵q的第j行,e表示进行指数运算,n表示序列长度。
[0087]
(14)式实现了一种特殊的自注意力函数,其相似度函数是q和k点积的指数。假设矩阵的下标为i,将矩阵的第i行作为一个向量,则广义的自注意力函数可以表示为:
[0088][0089]
其中,qi代表矩阵q的第i行组成的向量,kj代表矩阵k的第j行组成的向量,vj代表矩阵v的第j行组成的向量,v
′i代表矩阵v

的第i行组成的向量,n表示序列长度;如果将相似度函数带入式(16),则式(16)和式(14)等价。
[0090]
实施例中的线性变换器的相似度函数采用的是一种核函数κ(x,y)=φ(x)φ(y)
t
,
[0091]
φ(x)计算方式如下:
[0092]
φ(x)=elu(x) 1(17)
[0093]
其中,elu()为指数线性单位激活函数,因此可以有如下定义:
[0094][0095]
利用矩阵乘法的结合律可以进一步简化为:
[0096][0097]
由式(14)可知原始变换器的计算代价为o(n2),n表示序列长度。相比之下线性变换器的计算代价为o(n),大大减少了训练代价,更适合处理长序列问题,特别是长音符序列。
[0098]
实施例中的变换器基于上述的线性变换器构建的,线性变换器减小了模型训练代价,但其在多头处理和处理时序信息方面仍存在缺陷,本发明对其进行了改进,下面对他们进行详细介绍。
[0099]
线性变换器采用了多头线性注意力,在单个注意力计算完成后需要将多个注意力连接起来,然后进行线性变换以得到最终的输出。假设有多头注意力有h个头,多头注意力计算过程可如下表示:
[0100]
multiheadattn(q,k,v)=concat(head1,

,headh)wo(20)
[0101][0102]
其中,multiheadattn()表示多头注意力函数,concat(head1,

,headh)表示将多个注意力的输出拼接在一起,headh表示单个注意力的输出,其计算方式采用(19)式中的线性注意力,wo均为可学习的参数。
[0103]
多头注意力旨在利用多个头来使模型可以学习到不同表征子空间的信息,捕获序列内各种范围内的依赖关系,但普通的线性变换器没有相应的机制保证不同的注意力头学习不同的行为。本发明对线性变换器的多头注意力进行改进,使不同的注意力头学习到不同的特征信息。
[0104]
首先,将wo分为m块:
[0105][0106]
为使不同的注意力头可以学习到不同的特征,多头注意力层可以重新表示为:
[0107][0108]
传统变换器仅仅由注意力构成,在处理任务时往往不能获得序列的时序信息、先验知识。实施例中,在变换器的多头线性注意力层的前添加一个长短期记忆网络层(lstm),为模型带来了时序信息,使模型生成的音符序列更能捕获时间结构上的联系。lstm层计算过程为现有的,在本发明中不再赘述。
[0109]
将音符序列x输入到改进的线性变换器中,首先进行嵌入编码和位置编码,并将嵌入它们叠加起来,然后输入transformer块中,其中先输入到lstm层,经过lstm层计算后输入到具有掩码的多头注意力层,计算完成后进行叠加和正则化操作,操作完成后输入前馈神经网络,然后再进行叠加和正则化操作,完成transformer块的计算。具体计算过程如下:
[0110]
x=emb(x) positioneng(x)(24)
[0111]
s=lstm(x)(25)
[0112][0113]qlm
,k
lm
,v
lm
=swq,swk,swv(26)
[0114]
a=masked-linearattention(q
lm
,k
lm
,v
lm
)(27)
[0115]
a=multiheadattn(a)(28)
[0116]
o=layernorm(linear(a) s)(29)
[0117]
p=positionwise-feed-forward(o)(30)
[0118]
o=layernorm(linear(p) o)(31)
[0119]
其中,lstm()表示长短期记忆网络运算;masked-linearattention()表示执行掩码 (mask)和线性注意力(linearattention),由于transform输入的是一段音符序列,在进行音乐生成时,不希望模型可以注意到当前音符后面的音符,因此用掩码遮盖当前音符后面的序列,对当前音符后面的序列赋予一个负无穷的值;linearattention()可由式(18) (19)计算,layernorm()表示正则化处理,linear()表示线性变换;positionwise-feed-forward ()表示前馈网络计算。
[0120]
图3示出了线性变换器(linear transformer)的示例性架构
[0121]
音符序列可由输入层301输入到嵌入层302进行嵌入编码。在303处,可进行位置编
码。完成位置编码和嵌入编码后,可以将302处的嵌入表示和303处的位置编码叠加输入到 transformer块309处,302处的嵌入表示和303处的位置编码叠加可由式(24)计算。在 transformer块309内lstm层304与具有掩码的多头线性注意力层305相连,其中lstm 层304可由式(25)计算,具有掩码的多头线性注意力层305可由式(27)(28)计算;具有掩码的多头线性注意力层305与叠加/正则化层306相连,叠加/正则化层306可由式(29) 计算;叠加/正则化层306与前馈神经网络层307相连,前馈神经网络层307可由式(30)计算;前馈神经网络层307与叠加/正则化层308相连,叠加/正则化层308可由式(31)计算。 transformer块309的输出会输入到线性层311中进行映射,然后输入到softmax层312中,最后在输出层313输出预测出的音符序列。
[0122]
具体实施时,本发明技术方案提出的方法可由本领域技术人员采用计算机软件技术实现自动运行流程,实现方法的系统装置例如存储本发明技术方案相应计算机程序的计算机可读存储介质以及包括运行相应计算机程序的计算机设备,也应当在本发明的保护范围内。
[0123]
在一些可能的实施例中,提供一种基于两阶段生成模型的自动音乐生成装置,包括以下模块,
[0124]
第一模块,用于对数据集音乐序列进行处理,获得训练用的和弦序列和音符序列;
[0125]
第二模块,用于使用第二模块所得和弦序列和音符序列分别训练集成网络和变换器网络;
[0126]
第三模块,用于将初始和弦序列输入训练好的集成网络,将初始音符序列输入训练好的变换器网络,生成相应的和弦序列和音符序列;
[0127]
第四模块,用于将第三模块生成的和弦序列和音符序列转化为音乐内容,得到相应输出文件。
[0128]
具体实施时,还可以采用其他的模块划分方式。如图4所示,本发明实施例提供了一种基于两阶段生成模型的自动音乐生成装置,包括:
[0129]
输入模块401,用于输入数据集中的midi音乐。
[0130]
和弦提取模块402,用于提取输入模块输入midi音乐中的和弦序列。
[0131]
音符提取模块403,用于提取输入模块输入midi音乐中的音符序列。
[0132]
训练模块404,通过所述和弦提取模块402提取的和弦序列训练集成网络,通过所述音符提取模块403提取的音符序列训练变换器网络。
[0133]
生成模块405,通过训练好的集成网络生成和弦序列,通过训练好的变换器网络生成音符序列。
[0134]
转换模块406,将生成模块生成的和弦序列和音符序列组合转化为midi音乐。
[0135]
输出模块407,将转换模块的midi音乐输出。
[0136]
在一些可能的实施例中,提供一种基于两阶段生成模型的自动音乐生成装置,包括处理器和存储器,存储器用于存储程序指令,处理器用于调用存储器中的存储指令执行如上所述的一种基于两阶段生成模型的自动音乐生成方法。
[0137]
在一些可能的实施例中,提供一种基于两阶段生成模型的自动音乐生成装置,包括可读存储介质,所述可读存储介质上存储有计算机程序,所述计算机程序执行时,实现如上所述的一种基于两阶段生成模型的自动音乐生成方法。
[0138]
最后所应说明的是,以上实施例仅用以说明本发明的技术方案而非限制。尽管参照实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,对本发明的技术方案进行修改或者等同替换,都不脱离本发明技术方案的技术范围,其均应涵盖在本发明的权利要求范围当中。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献