寧慧, 南江萍
(1.西安交通工程學院 人文與經(jīng)濟管理學院, 陜西 西安 710000;2.西安交通工程學院 電氣工程學院, 陜西 西安 710000)
數(shù)字音樂的出現(xiàn),將音樂藝術與信息技術相結合成為目前音樂市場發(fā)展熱點[1-2]。音樂的本質是潛在的情感,而音樂情感的識別則是根據(jù)音樂特征與情感的映射關系來滿足,對音樂情感識別有效提升人機情感交互[3-5]。目前,音樂情感分類識別更多的是基于音樂文本、音頻信號形式下對數(shù)據(jù)特征的分析,通過相應的學習方法發(fā)現(xiàn)音色、節(jié)奏和韻律等特征來構建音樂特征信號的識別模型[6-8]。如針對音樂歌詞部分,通過Bag of words方式進行識別,獲得不同音樂模式下的情感分類[9-11];針對音樂韻律方面,采用相應的表達式編程算法進行情感類型的劃分[12-14]。但上述方式更多的是基于歌詞、韻律的音樂情感分類采用的是單模態(tài)數(shù)據(jù)分析法,難以完整的反映對象的全部特征。
前項神經(jīng)網(wǎng)絡通過利用不同模態(tài)數(shù)據(jù)形成多模態(tài)數(shù)據(jù)來實現(xiàn)對音樂情感鑒賞的多特征融合,實現(xiàn)從歌詞、律動和節(jié)奏多方位的分類分析,因此具有很強的分類精確度[15]?;诖?,本文基于前向神經(jīng)網(wǎng)絡,通過梯度下降算法來提升模型學習能力,利用多模態(tài)的數(shù)據(jù)特征實現(xiàn)對音樂情感的模型訓練。
音樂情感分類是情感分析的第一步。目前在音樂領域較為常用的模型主要為Thayer模型和Hevner情感環(huán)模型[16]。本文在兩種分類方法的基礎上,通過面向音樂領域專家和網(wǎng)絡調查、訪談,按照Hevner的環(huán)節(jié)結構,針對詞表中67個形容詞進行定量表述,符合中國人習慣,通過修改、刪除,基于不同情感劃分為神圣、悲傷、向往、抒情、輕盈、快樂、熱情和生機8個區(qū)域共47小類情感分類,如表1所示。
表1 基于音樂情感類別劃分
音樂特征包括音高、時長和音色等聲學特征,節(jié)奏、旋律和速度等時空特征以及曲式、調式的語義特征[17]。音樂情感分析需要同時考慮音樂基本信息、節(jié)奏變化和結構形式,將音樂特征分為音符特征和高層特征。音符特征中包括音高、時長和音強;高層特征包括速度、力量、節(jié)奏、旋律和音程信息。
音高、時值和音強作為音樂最基本組成原始,是音樂情感認知的聲學線索。樂曲的音高變化音高的均方差來表征,如式(1)。
(1)
式中,Pi表示第i個音符音高;n表示音符數(shù)量。
音域用來表示樂曲音高廣度,定義音域,如式(2)。
Range=Max(P1,P2,…Pn)-Min(P1,P2,…Pn)
(2)
式中,P1,P2,…Pn表示音符音高值Pitch。
時值時音符的持續(xù)時間。時值的表示方法,如式(3)。
Duration=EedTime-StartTime
(3)
力度是音樂表達情感的重要手段,不同的音樂力度能夠對聽眾造成差異化的情感體驗。對于力度特征,可采用平均力度和力度變化特征來表征,其中平均粒度采用式,如式(4)。
(4)
式中,n、m分別表示樂曲音符數(shù)。針對力度變化程度采用式,如式(5)。
(5)
式中,Di表示第i個樂曲音符力度;N表示總音符數(shù)。通過式(5)以樂曲小節(jié)來對力度變化描述,排除節(jié)拍中輕重變化帶來的影響,更純粹的描述力度變化。
旋律是根據(jù)一定規(guī)律形成的有組織和諧運動,反映了樂音時間和空間上的組織形式。旋律的方向描述了音高走勢變化,對此提出旋律方向的表示方式,如式(6)。
(6)
式中,Di表示第i個音長;D表示音長總和。
節(jié)奏是音樂中交替出現(xiàn)有規(guī)律強度的現(xiàn)象。不同的節(jié)奏賦予音樂不同張力。針對節(jié)奏運動的張力變化,采用發(fā)音點密度來直接反映其基本狀態(tài)。密度越大,緊張度越強。表征節(jié)奏密度的變化,如式(7)。
(7)
式中,BarCapacity(i)表示第i個小節(jié)能量值;MaxCapacity(i)表示該節(jié)最大能量值。
前向神經(jīng)網(wǎng)絡(FFN)是一種多層神經(jīng)網(wǎng)絡結構,用于求解非線性問題[18]。FFN通常由輸入層、輸出層和隱含層構成。隱含層接收到輸出層結構,按照需求進行變化,將結果傳遞到輸出層,作為整個網(wǎng)絡的輸出。當實際輸出與期望輸出不一致時,以計算獲得的誤差作為輸入反饋至輸入層,基于誤差梯度下降來對網(wǎng)絡模型中各層的權值進行修正,直到輸出符合期望值,即完成一次訓練。
假設網(wǎng)絡中每一個神經(jīng)元數(shù)值為ai,將層與層間單元用不同權值連接,利用非線性激活函數(shù)獲得的激活值zi對上一層數(shù)據(jù)計算,將獲得的結果傳遞到下一層數(shù)據(jù)實現(xiàn)逐層向前計算。前向神經(jīng)網(wǎng)絡模型框架圖,如圖1所示。
圖1 FNN模型框架圖
其中,h表示網(wǎng)絡輸入;w和b分別表示輸入層和輸出層參數(shù)權重;z表示神經(jīng)網(wǎng)絡輸出。
神經(jīng)網(wǎng)絡傳遞分為前向傳播和反向傳播[19]。前向傳播根據(jù)給定的輸入進行計算,由底向上傳播。后向傳播根據(jù)前向傳播結果,采用梯度下降算法計算、訓練各神經(jīng)元參數(shù)[20-21]。前向傳播計算傳播,如式(8)、式(9)。
(8)
(9)
對于FNN的訓練樣本,根據(jù)各輸入?yún)?shù)的非線性特征,采用Softmax激活函數(shù)[22]。由于網(wǎng)絡神經(jīng)炎的數(shù)據(jù)值范圍在[0,1]區(qū)間,因此將非線性參數(shù)輸入視為一個概率分布。即假定分類輸出為f(zj),輸入標記為Z,數(shù)組Z中第i個元素為Zi,定義Softmax判斷式,如式(10)。
(10)
相應的損失函數(shù),如式(11)。
loss=-logf(zk)
(11)
(12)
實際計算過程中,首先計算各節(jié)點激活值,通過反向傳播算法傳播獲得各參數(shù)梯度值,對模型參數(shù)進行更新,直到迭代過程收斂。
根據(jù)前向神經(jīng)網(wǎng)絡的傳播方式,確定算法具體流程。模型訓練中,選擇總量為m的樣本集{xj,j=1,2,…,m}作為神經(jīng)網(wǎng)絡的輸入數(shù)據(jù),使用{yj,j=1,2,…,m}作為期望輸出。訓練中,利用算法微調獲得神經(jīng)網(wǎng)絡各個參數(shù),確定算法的具體流程,如圖2所示。
圖2 前向神經(jīng)網(wǎng)絡學習流程
(1) 系統(tǒng)初始化。對每個神經(jīng)元內部閾值和連接權分別隨機賦值(0,1),輸入MIDI音樂片段的特征向量,輸出為向量代表的音樂情感。
(2) 通過輸入樣本,連接權重和閾值計算中間層輸入值,選擇隱含層傳遞函數(shù),計算獲得中間各層單元的計算結果[24];通過中間層輸出,連接權重和閾值計算輸出層各單元的輸入樣本,以simoid作為傳遞函數(shù)計算輸出層單元的響應值。
(3) 將輸出響應值與目標結果比較,獲得一般化誤差,根據(jù)連接權重、輸出層一般誤差和中間層輸出計算中間各單元一般化誤差,通過輸出層各單元誤差修正各層的連接權重和閾值。
(4) 將下一個學習樣本向量作為新的輸入向量,并執(zhí)行步驟(2),直到樣本誤差小于預設誤差極小值,算法結束,網(wǎng)絡結構收斂。
當訓練完成后,需要對神經(jīng)網(wǎng)絡測試來監(jiān)測情感識別的準確度。首先選擇測試樣本來檢驗網(wǎng)絡性能。測試樣本中包括后續(xù)網(wǎng)絡應用中存在的樣本形式,為保證網(wǎng)絡的泛化能力,測試樣本不應該包含相同樣本。
為驗證本文提出的前向神經(jīng)網(wǎng)絡模型的可行性,從QQ音樂、網(wǎng)易等軟件中選擇了五類情感特征明顯的80首MIDI音樂片段進行情感分類。將測試樣本隨機分成5組進行分類測試,給出的部分樣本信息片段,如表2所示。
表2 部分樣本信息表
首先通過音樂鑒賞專家分類后,采用前向神經(jīng)網(wǎng)絡進行樣本訓練。神經(jīng)網(wǎng)絡輸入層輸入8維音樂特征向量,因此設定網(wǎng)絡輸入層節(jié)點數(shù)為8,根據(jù)上節(jié)多模型的分類,確定輸出神經(jīng)元節(jié)點數(shù)為8個,八個情感特征標準形式分別為:神圣(0,0,0,1)、悲傷(0,0,1,0)、向往(0,1,0,0)、抒情(1,0,0,0)、輕盈(0,0,1,1)、快樂(1,1,0,0)、熱情(0,1,1,1)和生機(1,1,1,0)。由Kolmogorov定義,確定隱藏層節(jié)點數(shù)為17,建立8x17x3的前向神經(jīng)網(wǎng)絡,輸入層8個節(jié)點,隱藏層17個節(jié)點,輸出層3個節(jié)點,選擇Sigmoid函數(shù)來保證輸出結果落在(0,1)區(qū)間內。采用traingdx訓練函數(shù)[25],設定最大循環(huán)次數(shù)為2 500次,為保證模型具有較好的泛化能力,設定模型在誤差率期望值小于0.001。
實驗平臺在MATLAB7.1下運行,獲得的運行結果和誤差性能,如圖3所示。
圖3 算法誤差率分析
從圖3中可以看出,算法在初始節(jié)點算法誤差率相對較大,當?shù)螖?shù)達到100次以后,誤差率保持在10-15水平以下,此后保持相對穩(wěn)定,神經(jīng)網(wǎng)絡收斂。
將80個樣本隨機分為五組,分別采用傳統(tǒng)的推理規(guī)則認知系統(tǒng)和前向神經(jīng)網(wǎng)絡對5組測試樣本進行情感認識分類測試,獲得測試樣本識別結果,如表3所示。
表3 部分音樂片段的識別結果
可以看出兩種測試方法在測試相同樣本中獲得的識別結果存在明顯差異。其中前向神經(jīng)網(wǎng)絡分類精度高于基于推理規(guī)則的情感認知系統(tǒng),本文算法的識別準確率平均為86%,而基于系統(tǒng)的識別準確率74%左右。特別是在對神圣、悲傷、熱情情感類型的音樂識別中分類準確率達到了88%以上。
在針對抒情情感的音樂識別中,采用前向神經(jīng)網(wǎng)絡的情感識別率相較于其他類的準確率偏低,這可能是由于抒情類情感的片段訓練樣本在音樂旋律、力度和節(jié)奏感方面相對較為平緩和輕盈,因而相對音樂特征的提取較低。通過實驗,針對旋律特征和節(jié)奏特征對音樂情感識別有較大的影響作用,因此選擇適當?shù)囊魳诽卣髯鳛檩斎胱兞磕軌蛟谝欢ǔ潭壬咸岣咭魳非楦械姆诸惥?。同時比較兩種模型可以看出,兩種模型的訓練時間都較短,其中前向神經(jīng)網(wǎng)絡相對更優(yōu)一些,但二者相差不大。
音樂情感識別和分類對于有效改善音樂檢索服務有重要現(xiàn)實意義。本文基于前向神經(jīng)網(wǎng)絡建立音樂情感認識的分類模型。選擇音色、力度、旋律、節(jié)奏、音高、音域和時域作為音樂特征提取變量,建立輸入層、隱含層和輸出層網(wǎng)絡結構,根據(jù)輸入變量進行前向傳播計算,通過比較實際輸出與期望輸出間的誤差梯度修正隱含層權重,利用Softmax函數(shù)進行反向激活計算,實現(xiàn)預定分類精度下的算法收斂。將建立的算法模型與傳統(tǒng)推理規(guī)則專家識別系統(tǒng)進行算法性能比較,實例驗證結果表明:基于前向網(wǎng)絡的算法模型平均識別準確率提升到86%。對節(jié)奏感、旋律和力度特征量更強的音樂類型分類準確率高于平緩、輕盈特征的溫柔情感音樂類型。算法在保證計算效率的基礎上,具有更高的分類準確率。