




關(guān)鍵詞:變分自編碼器;音樂生成;深度學(xué)習(xí);雙向LSTM
0引言
音樂一直是人類文化中不可或缺的一部分,它不僅是娛樂的形式,還承載著情感、思想和文化的傳承。隨著計算機科學(xué)和人工智能技術(shù)的迅速發(fā)展,音樂生成技術(shù)也得到了廣泛關(guān)注和研究[1]。傳統(tǒng)的音樂生成方法主要依賴于音樂家的經(jīng)驗和技巧,而隨著機器學(xué)習(xí)和生成模型的興起,人工智能已經(jīng)成為一種強大的工具,可以幫助人們更好地理解、創(chuàng)作和欣賞音樂[2]。
音樂生成領(lǐng)域自20世紀末開始受到了廣泛的關(guān)注和研究。近年來,隨著深度學(xué)習(xí)和人工智能技術(shù)的發(fā)展,越來越多的研究集中在使用神經(jīng)網(wǎng)絡(luò)和生成模型來實現(xiàn)音樂生成。文獻[3]中,Lim等人提出了一個基于GAN的算法,用來生成具有良好節(jié)奏和和聲的鋼琴音樂。通過對抗訓(xùn)練,模型能夠生成高質(zhì)量的音樂作品。文獻[4]中,Huang等人提出了一種基于Trans?former的方法,來生成流暢的音樂序列。該模型能夠?qū)W習(xí)音樂的時序模式和結(jié)構(gòu)特征,從而生成具有一定音樂風(fēng)格的作品。文獻[5]中,Jaques等人提出了一個基于強化學(xué)習(xí)的方法,用來生成具有個性化風(fēng)格的爵士樂。該模型能夠生成符合用戶需求的音樂作品。
然而,目前的音樂生成模型仍然存在一些挑戰(zhàn)。雖然這些模型可以生成更具創(chuàng)意性的音樂,但其生成結(jié)果往往與真實音樂存在較大差距。因此,尋找一種能夠從真實音樂數(shù)據(jù)中學(xué)習(xí)更加接近真實音符概率分布的音樂生成模型成為當(dāng)前研究的重點之一[6]。
針對上述問題,本文提出一種基于VAE的音樂生成模型。該模型包含編碼器和解碼器,編碼器將真實音樂數(shù)據(jù)編碼到潛在空間中,解碼器則通過對潛在空間的數(shù)據(jù)進行解碼,生成新的音樂作品。通過這種方式,模型能夠更好地學(xué)習(xí)真實音樂數(shù)據(jù)中的音符概率分布,使生成的音樂更加貼近真實音樂。
1本文模型
為了完成端到端的音樂生成任務(wù),本文借用變分自編碼器(VAE)構(gòu)建音樂生成模型[7]。該模型包含編碼器和解碼器兩個網(wǎng)絡(luò),編碼器的主要作用是對輸入數(shù)據(jù)進行處理,將其映射為低維度的潛在向量,而解碼器負責(zé)對編碼器生成的潛在向量進行反向映射,最終轉(zhuǎn)換成音樂。
1.1數(shù)據(jù)預(yù)處理
在實驗中使用的是MIDI格式的音樂數(shù)據(jù),MIDI是一種音樂數(shù)字化格式,通過music21可以很方便地提取音符的特征信息[8]。為了減少不同音樂類型之間的影響,本文使用的訓(xùn)練數(shù)據(jù)主要側(cè)重節(jié)拍為4/4拍的音樂。為了減少數(shù)據(jù)冗余的影響,所有音樂作品都轉(zhuǎn)為C大調(diào),并限制在2~3分鐘。共收集20000個MIDI格式的音樂樣本數(shù)據(jù)集。
音符序列表示是一種將音樂數(shù)據(jù)表示為一系列音符的序列的方法。在MIDI格式中,每個音符被表示為一個事件(event),其中包含音符的音高、開始時間、結(jié)束時間等信息。假設(shè)有一段音樂,其中包含多個音符,可以將這段音樂表示為一個包含多個音符的序列,每個音符可以用一個向量來表示,其中包括以下信息:
1)音高(Pitch):音符的音高,通常用MIDI音高表示法來表示,取值范圍為0~127,其中60表示中央C音符。用pi表示第i個音符的音高。
2)開始時間(OnsetTime):音符開始播放的時間,通常以秒為單位。用ti表示第i個音符的開始時間。
3)持續(xù)時間(Duration):音符持續(xù)的時間長度,通常以秒為單位。用di表示第i個音符的持續(xù)時間。
4)音量(Velocity):音符的強度,通常以MIDI音量表示法來表示,取值范圍為0~127。用vi表示第i個音符的音量。
通過將每個音符的信息組織成一個向量,可以得到整段音樂的音符序列向量,表示為:
式中,N為音符序列的長度,表示音樂中包含的音符數(shù)量。通過這種表示方式,可以將音樂數(shù)據(jù)轉(zhuǎn)換為一個序列,以便于模型進行處理和學(xué)習(xí)。
1.2模型框架
本文設(shè)計的模型由編碼器網(wǎng)絡(luò)和解碼器網(wǎng)絡(luò)組成,它們分別負責(zé)將輸入音樂數(shù)據(jù)映射到潛在空間中的潛在表示,以及將潛在表示映射回原始數(shù)據(jù)空間,實現(xiàn)音樂的生成。具體結(jié)構(gòu)如圖1所示。下面將詳細介紹各部分的具體實現(xiàn)。
1.2.1編碼器網(wǎng)絡(luò)
編碼器網(wǎng)絡(luò)的作用是將輸入的音樂數(shù)據(jù)x轉(zhuǎn)換為潛在空間中的潛在表示z。在本文模型中,編碼器網(wǎng)絡(luò)由Bi-LSTM(雙向長短期記憶網(wǎng)絡(luò))構(gòu)成[9]。相比于傳統(tǒng)的LSTM(長短期記憶網(wǎng)絡(luò)),Bi-LSTM的網(wǎng)絡(luò)結(jié)構(gòu)中隱藏層由兩個方向相反的LSTM構(gòu)成,不僅能夠?qū)W習(xí)過去信息的影響,還能學(xué)習(xí)到未來信息對當(dāng)前時刻的依賴關(guān)系,其結(jié)構(gòu)如圖2所示。
圖2中h為前向隱藏層輸出,h為后向隱藏層輸出,利用公式(2)~(4)可以得到Bi-LSTM隱藏層的整體輸出h:
編碼器網(wǎng)絡(luò)參數(shù)λ模型為qλ(z|x),其目的是通過訓(xùn)練逼近真實的后驗分布p(z|x),使生成z的分布盡可能接近真實音樂數(shù)據(jù)x的概率分布。為了實現(xiàn)這一目的,假設(shè)這個概率分布為正態(tài)分布,即p(z|x)=N(0,Ι)。這樣,編碼器網(wǎng)絡(luò)的輸出只須不斷模擬均值向量μ和方差向量σ2,即可不斷逼近真實數(shù)據(jù)的概率分布。這一過程也相當(dāng)于把輸入的相關(guān)信息壓縮到一個較低維度的潛在空間中。已知輸入的音樂數(shù)據(jù)x={x1,x2,…,x}T在經(jīng)過Bi-LSTM之后得到ht,通過全連接層之后可以得到均值向量μ和方差向量σ2,計算如下公式:
1.2.2解碼器網(wǎng)絡(luò)
解碼器網(wǎng)絡(luò)是模型中的生成網(wǎng)絡(luò),其作用是將潛在表示z映射回原始數(shù)據(jù)空間,從而生成音樂數(shù)據(jù),本文同樣將Bi-LSTM網(wǎng)絡(luò)作為解碼器網(wǎng)絡(luò)。解碼器網(wǎng)絡(luò)的參數(shù)為θ,模型為pθ(x'|z),其目的是通過訓(xùn)練盡可能逼近真實的似然分布p(x|z)。在上述過程中,得到均值向量μ和方差向量σ2后,通過采樣可以得到z。將z作為解碼器的輸入,并通過解碼器網(wǎng)絡(luò)將其映射回原始空間,就可以得到原始數(shù)據(jù)x的重構(gòu)x':
式中,Wx為解碼器網(wǎng)絡(luò)的權(quán)重矩陣,bx為解碼器網(wǎng)絡(luò)的偏差向量,fx為解碼器網(wǎng)絡(luò)的激活函數(shù)。得到重構(gòu)數(shù)據(jù)x'之后,通過music21工具包可以將其轉(zhuǎn)化成音樂。
1.2.3模型訓(xùn)練
在訓(xùn)練本文模型時,通常使用的損失函數(shù)由兩部分組成:重構(gòu)損失(Reconstructionloss)和KL散度損失(Kullback-Leiblerloss,KLloss)。這兩部分損失函數(shù)共同構(gòu)成了模型的優(yōu)化目標,旨在訓(xùn)練模型使得其能夠有效地學(xué)習(xí)數(shù)據(jù)的潛在表示。
重構(gòu)損失用于衡量模型生成數(shù)據(jù)的能力,它衡量了模型生成數(shù)據(jù)與原始輸入數(shù)據(jù)之間的差異。在音樂生成任務(wù)中,可以使用交叉熵損失函數(shù)或均方誤差損失函數(shù)來計算重構(gòu)損失。假設(shè)原始輸入數(shù)據(jù)為x,模型生成的數(shù)據(jù)為x',則重構(gòu)損失可以表示為:
2實驗
2.1實驗配置
本次實驗所使用的服務(wù)器配置為IntelXeon2640v42.4GHz處理器,500GB運行內(nèi)存和12GB顯存的NVIDIA4080GPU。所用編程語言為Python,框架為PyTorch。
2.2不同參數(shù)設(shè)置對實驗結(jié)果的影響
本次實驗主要針對不同的隱藏層神經(jīng)細胞個數(shù)以及不同訓(xùn)練次數(shù)對模型生成音樂的影響。關(guān)于不同隱藏層神經(jīng)細胞個數(shù),本文做了三組對比實驗,對結(jié)果數(shù)據(jù)進行平滑處理,如圖3所示。
從圖3可以看出,隨著隱藏層神經(jīng)細胞個數(shù)的增多,Loss值的收斂速度減小,表明模型生成的預(yù)測值和目標值之間的誤差更小。然而,隨著隱藏層神經(jīng)細胞個數(shù)的增多,訓(xùn)練階段所需的時間也增加。
為了驗證不同迭代次數(shù)對生成音樂的影響,本文將不同迭代次數(shù)的模型生成的音樂轉(zhuǎn)換成頻譜形式進行對比,結(jié)果如圖4所示。
從圖4可以看出,當(dāng)?shù)_到2000次時,生成音樂的頻譜開始出現(xiàn)樣本頻譜的起伏規(guī)律,但其分布與樣本音樂頻譜仍存在較大差距。當(dāng)?shù)_到4000次時,生成音樂的頻譜呈現(xiàn)出規(guī)律性,并且與樣本頻譜的分布相似。
2.3音樂相似度
音樂相似度實驗旨在比較不同音樂樣本之間的相似程度,通常使用各種相似度度量方法來量化音樂之間的相似性。為了驗證模型學(xué)習(xí)真實音樂數(shù)據(jù)的能力,本文進行了音樂相似度實驗。實驗選用的相似度度量方法為調(diào)整余弦相似度(AdjustedCosineSimi?larity)[10],其計算公式如下:
式中,Rˉi為維度i上的均值。實驗對于每一對音樂樣本和生成音樂,計算它們之間的相似度分數(shù),共計算50對,繪制的折線圖如圖5所示。
從圖5可以看出,生成音樂和樣本音樂的相似度均在0.6之上,說明模型能夠從真實音樂數(shù)據(jù)中學(xué)到音符在時間尺度上的依賴關(guān)系。
2.4音樂主觀評價
為了驗證本文模型生成音樂的質(zhì)量,進行了主觀評價實驗。實驗的主要對象是本文提出的模型、基于LSTM的音樂生成網(wǎng)絡(luò),以及真實音樂。邀請了8名音樂學(xué)院的教師以及30名音樂學(xué)院的學(xué)生對測試音樂進行匿名打分評價。評分主要從韻律、旋律、調(diào)性、流暢度、完整度、悅耳度六個方面進行,匯總最后得分,結(jié)果如表1所示。
從表1可以看出,本文模型生成的音樂在評價指標上總體優(yōu)于基于LSTM音樂生成模型生成的音樂,但與真實音樂之間仍存在一定差距。
3結(jié)束語
為了讓模型能夠更好地學(xué)習(xí)真實音樂中音符的概率分布,本文引入了變分自編碼器(VariationalAuto?encoder,VAE)。利用Bi-LSTM網(wǎng)絡(luò)構(gòu)建編碼器和解碼器,將原始音樂數(shù)據(jù)映射為潛在空間的表示,然后對潛在表示進行解碼生成新的音樂,完成端到端的音樂生成任務(wù)。通過實驗驗證,模型生成的音樂較為接近真實音樂。但是也可以看出,模型生成的音樂與真實音樂之間仍存在一定差距,因此提高生成音樂的質(zhì)量還需進一步研究。