李 欣,米紅娟,吳雪君
(蘭州財經大學信息工程學院,甘肅蘭州730020)
音樂流派(Music genre)是由音樂作品中獨特的節拍、音色、曲調等要素形成的各種音樂風格,比如流行樂、古典樂和爵士樂等.目前大多數音樂網站所應用的分類檢索條目之一是音樂流派,同時音樂流派在管理和存儲數字音樂數據庫中也是重要的分類屬性,因此,音樂流派自動分類具有重要的研究意義與實際價值.音樂流派分類識別[1]作為音樂信息檢索(Music Information Retrieval,MIR)領域里的一項重要分支被深入研究,是多媒體應用中非常重要的一部分內容,主要包括音樂的檢索、欣賞、創作、教學以及數字娛樂[2].
音樂流派的自動分類技術研究已成為近年的研究熱點.Tsunoo 等[3]對10 種不同風格的音樂流派提取音色、節奏、低音線3個特征集,取得63.1%的識別率;楊翠麗等[4]建立了神經網絡投票機制結合高層音樂節奏特征的流派分類模型,對7 個音樂流派分類識別總精度可達68.9%;Tan 等[5]提取小軍鼓和低音鼓的節拍并合成循環節拍來分析音樂節奏,該方法主要對含有節奏型R&B 和Hip?Hop 等流派進行仿真驗證,具有一定的限制性.因此,本文首先對決策樹(Decision Tree, DT)、邏輯回歸(Logistic Re?gression, LR)、隨機森林(Random Forest, RF)、支持向量機(Support Vector Machine,SVM)、反向傳播神經網絡(Back?ProPagation Network, BP)以及全連接網絡模型(Full Connected Net, FCN)這六種分類模型進行訓練,然后把公開的音頻數據集GTZAN 中的音頻文件轉換為頻譜圖(spectrogram),從中提取特征,將這些特征數據集進行預處理后作為各模型的輸入,構建各個模型,輸入數據,最后對各模型的結果進行比較,以期找出最優分類方法.
CART 決 策 樹(Classification And Regression Tree)算法是由Breiman 等在1984 年提出的一種經典的決策樹算法[6],主要思想是把訓練數據集進行循環分析,形成一種二叉樹形式的分類模型.通過選擇數據集中基尼指數(gini)最小的屬性,將數據集進行劃分.
數據集的基尼指數的計算如(1)式所示:

其中pk是類別k的概率或比例.
數據集中特征的基尼指數的計算如下:

其中Dv是分支的節點.
CART決策樹達到以下任何一個條件時會停止建樹:①所有葉節點中的樣本屬于同一類;②樹的高度達到所設置的閾值.
基本步驟如下:
(1)輸入數據集;
(2)若數據集中樣本個數少于閾值或者特征為空時,則返回決策子樹,當前節點停止遞歸;
(3)計算數據集的基尼指數,若基尼指數小于閾值,則返回決策子樹,當前節點停止遞歸;
(4)計算所有特征的屬性值對數據集的基尼指數.選擇基尼指數最小的特征及其切分點作為最優特征與最優切分點,根據樣本點是否為切分點將訓練數據集劃分成兩部分,即建立當前節點的左節點和右節點;
(5)對左右兩個子節點遞歸地調用步驟(2)-(4),直至滿足條件;
(6)生成CART決策樹,輸出結果.
在CART 決策樹的分類模型訓練過程中,從scikit?learn 庫中調用cart 函數,將各參數為默認值,對音樂流派進行分類.
隨機森林是在構建Bagging集成的基礎上,進一步訓練決策樹,并且引入了隨機屬性的選擇,它的隨機性主要表現在兩個方面:隨機選取數據樣本與隨機選取待選特征,從待選取的特征中再進一步選取最優的特征[7].
隨機森林是以決策樹(一般為CART 決策樹)為基學習器,從某節點的每個屬性集合中隨機地選擇一個子集(包含k 個屬性),再從其中選擇最優的一個屬性進行劃分.
基本步驟如下:
(1)輸入數據集;
(2)有放回地隨機抽取樣本;
(3)隨機抽取部分特征作為待選特征;
(4)用gini指數在待選特征中確定測試特征;
(5)確定產生節點;
(6)判斷是否可以成為葉節點,若可以為葉節點,判斷決策樹是否停止生長,若停止生長則保存樹,進行下一步,若不停止則進行分支,返回第三步;若不是葉節點,則進行分支,返回第三步;
(7)保存為樹后,決策樹數目如果達到要求則生成隨機森林,否則返回第二步.
在隨機森林模型構建過程中,不斷地訓練分類模型,將森林的深度設為20,衡量標準設為gini,迭代次數設為500,其他參數設為默認值,以此為基礎在數據集上進行多次實驗.
LR 是一種類似于線性回歸的模型,用于目標變量是分類變量的二元分類(最常用)以及多元分類問題.通過擬合一個邏輯函數來預測一個事件發生的概率,一般將sigmoid函數用作預測函數[8],即:

其中z=w0x0+w1x1+…+wnxn.輸出的值被規劃到(0,1)區間,中間值是0.5,若f(z)≤0.5,則將數據預測為A類,若f(z)>0.5,則將數據預測為B類.
通常設置一個懲罰項L2,以避免模型參數過大而導致模型的過擬合現象,加入L2懲罰項后,對高維數據有收斂更快的特性,懲罰項的系數C 為懲罰因子,作用是調節懲罰項與目標函數之間的關系,C越大越能體現模型特征,C越小參數向量越稀疏.對于優化問題,通過二元類L2懲罰邏輯回歸來最小化代價函數,如(4)式所示:

其中w是權重向量.
在邏輯回歸模型訓練中,采用L2正則懲罰項,經過多次訓練,將懲罰參數設為6,其他參數設為默認設置,對音樂流派進行分類.
SVM 的基本原理[9]是通過建立一個最優的決策超平面wTx+b=0,把兩種類別的樣本分開,使得離超平面最近的兩類樣本之間的距離最大,以提高分類模型的泛化能力.在N 維特征空間中,SVM 的基本型如(5)式所示:

對于訓練樣本線性不可分時的線性支持向量機模型[10]如(6)式所示:

其中:c是懲罰參數,εi是松弛變量.
對于非線性的問題可以使用非線性支持向量機,通過利用核函數,把原始特征映射到高維空間,再將映射后的數據進行劃分.引入核函數后的分類決策函數如(7)式所示:

其中核函數k(xi,xj)=( φ( xi),φ( xj)).實驗中選取的核函數為高斯核函數,如(8)式所示:

其中:σ2是高斯函數的方差,σ代表了函數的徑向范圍,σ過小容易出現“過擬合”,過大易出現“欠擬合”.
基本步驟如下:
(1)將原始問題進行變形,變換為凸優化問題;
(2)求解凸優化問題:
①原始問題對偶化.先構建拉格朗日函數,再對偶化并選擇核函數(主要有線性核函數、高斯核函數、sigmoid 核函數、多項式核函數以及拉普拉斯核函數);
②利用KKT 條件求解.先求出拉格朗日乘子α(常用序列最小優化算法求解),然后求出偏置b,從而求出分類決策函數;
(3)由決策函數構成的分類超平面進行數據集的分類;
(4)輸出結果.
實驗中根據非線性支持向量機算法訓練模型,將SVM 的核函數選為高斯函數,經過此次訓練,懲罰因子設為6,其他參數為默認參數,在此基礎上對音樂數據集進行實驗.
BP 神經網絡是一種多層前饋神經網絡,主要特點是前向傳播信號,反向傳播誤差[11],激活函數常選sigmoid函數.神經元的輸出如式(9)所示:

在訓練樣本上,均方誤差的計算為:

基本步驟如下:
(1)初始化權值和閾值,并輸入訓練數據;
(2)根據式(9)計算樣本輸出,每一層都把信號向前傳播,直到輸出結果;
(3)根據式(10)計算輸出層誤差;
(4)將誤差反向傳播給隱層,根據式(11)計算其梯度項:

(5)根據式(12)更新權值和閾值,循環此過程:

式中η為學習率,實驗中設為默認值.
(6)達到停止條件時訓練結束.
在訓練過程中,將BP神經網絡模型的隱藏層設為兩層,經過多次訓練,將第一層隱藏層神經元個數設為700,第二層隱藏層神經元個數設為600,迭代次數設為50,其他參數為默認值,以此對音樂數據集進行實驗.
全連接神經網絡各層之間的節點都是互相連接的.實驗中采用基于Keras深度學習框架[13]的全連接神經網絡,使用Keras 中的模型Sequential(),通過設置各層的參數來構建模型.
Keras 是一個高層神經網絡API,它的兩種模型類型:序貫模型(Sequential)與函數式模型(Model),Model 應用范圍更廣,Sequential 是Model 特殊形式.其中,序貫模型是單輸入單輸出,每層之間相鄰,不但操作簡單,而且編譯速度也比較快,而函數式模型是多輸入多輸出,每層之間都是任意互相連接的,雖然這種模型編譯速度會比較慢,但是可以設計拓撲結構非常復雜的神經網絡,相比Sequential,Model能夠靈活地構造網絡結構,設定各層級的關系.
基本步驟如下:
(1)選擇模型.在實驗中選擇的是序貫模型;
(2)構建網絡層.第一層為輸入層,輸入提取的一維特征數據集,運用激活函數,輸出高維的數據流,第二層隱藏層選取激活函數,輸出數據流,第三層選擇激活函數,輸出數據流,最后一層選擇激活函數,輸出數據流;
(3)編譯.損失函數選為交叉熵,性能評估可用準確率(accuracy)來評價;
(4)訓練.把數據集進行劃分,80%進行訓練,20%進行測試評估,選擇最佳的batch_size 與迭代次數;
(5)預測結果.
基于Keras 的神經網絡模型的訓練,經過實驗,搭建了4個網絡層,將前三層的激活函數選為relu函數,最后一層選softmax 作為激活函數,為了避免過擬合,每一層采用50%的dropout.優化函數選用Adam 函數,損失函數選用交叉熵,性能評估使用測試集上的準確率(accuracy),經過多次訓練,batch_size 選定為128,迭代次數設為20,以此為基礎在音樂數據集上進行實驗.
研究用的數據集是開源音樂數據集GTZAN,在IEEE Transactions on Audio and Speech Processing 2002 中,Tzanetakis 和Cook 將此數據集用于“音頻信號的音樂類型分類”.GTZAN 數據集中包含了10種音樂流派,分別是Blues、Classical、Country、Disco、Hiphop、Jazz、Metal、Pop、Reggae、Rock,每種流派有100個30 s的音頻,實驗中,把這1 000個音頻轉換為如圖1所示的頻譜圖(spectrogram),然后從頻譜圖中提取各音頻信號特征.

圖1 頻譜圖
每一個音頻信號都包含很多特征,運用Python的Librosa 工具提取特征,選取的特征有chroma_stft、chroma_cqt、rmse、spectral_centroid、spectral_band?width、rolloff、zero_crossing_rate、tonnetz、tempogram、contrast、poly_features、chroma_cens 以及20 組梅爾頻率倒譜系數(Mel Frequency Cepstrum Coefficient,MFCC)[14],共33 000 個特征數據,然后將數據集保存到.csv 文件中,作為分類算法的輸入,表1 是特征數據集的一部分數據.
其中主要的幾種特征是:
(1)過零率(zero_crossing_rate):是指信號符號的變化比率,即每幀語音信號從正變為負或從負變為正的次數,在音樂檢索和語音識別中被大量應用.
(2)頻譜質心(spectral_centroid):指的是聲音的“質心”所在位置,它按照聲音的頻率的加權平均值進行計算,通過調用音頻工具包librosa.feature.spec?tral_centroid來計算每幀信號的頻譜質心.

表1 部分特征數據
(3)譜滾降(spectral_rolloff):表示的是譜能量在特定百分比時的頻率,它是對數據信號形狀的測量.
(4)梅爾頻率倒譜系數(Mel Frequency Ceps?trum Coefficients, MFCC):是由10 到20 個特征構成的集合,簡單地描述了頻譜的總體形狀,模擬了人聲的特征.實驗中MFCC用了20組特征集對語音特征進行建模,并將漢明窗n_fft 的大小設為2 048,鄰窗hop_length的距離設為512.
(5)色度頻率(chroma_stft):是在音頻中非常有趣的一種表示,它的整個頻譜會被投影到12 個區間,代表著音樂八度音的12個不同的色度.
前五種分類模型,實驗中采用了10 折交叉驗證法對各模型進行訓練,構建過程如下:
(1)CART 決策樹模型的構建用scikit?learn 庫調用函數cart=DecisionTreeClassifier(),將衡量分類的標準criterion 設為信息增益entropy,其他參數設為默認值.按照CART 決策樹算法訓練模型,模型分類的平均準確率為50%.
(2)LR 分類模型采用L2 正則懲罰項,當懲罰參數選為6 時,分類模型的結果最好,其準確率為69.8%.
(3)RF 分類模型實驗中將森林的深度設為20,衡量標準criterion 設為gini,迭代次數設為500,按照隨機森林算法訓練模型,模型分類的平均準確率為68.3%,和決策樹模型的準確率相比,提高幅度較大.
(4)對于SVM 分類模型,由于數據的分布線性不可分,因此通過核函數以及懲罰項的選擇來構造約束優化問題[15],實驗中,核函數選擇高斯核函數,懲罰因子設為6,按照非線性支持向量機算法訓練模型,模型分類的平均準確率為73.7%.
(5)BP 神經網絡模型搭建過程中,通過多次實驗進行最優選擇,將隱藏層設為兩層,第一層隱藏層神經元個數設為700,第二層隱藏層神經元個數設為600,迭代次數設為50,其他參數為默認值,按照BP 神經網絡算法訓練模型,模型分類的平均準確率為75.3%.
(6)基于Keras的神經網絡模型,經過多次實驗,搭建4個網絡層的效果最好.第一層為輸入層,接收所提取的一維特征數據集的輸入(隨機劃分80%用于訓練,20%用于測試評估),激活函數采用relu 函數,輸出256 維的數據流;第二層(隱層)也選擇relu作為激活函數,輸出128 維的數據流;第三層(隱層)仍然把relu作為激活函數,輸出64維的數據流;最后一層用softmax 選作激活函數,輸出10 維數據流(由于輸出結果是10 種輸出類型).為了避免過擬合,每一層采用50%的dropout.優化函數選用Adam 函數,損失函數選用交叉熵,性能評估使用測試集上的準確率(accuracy),batch_size 選為128,迭代次數設為20,按照該算法訓練模型,模型分類的平均準確率為72%.
經過多次實驗,前五種分類模型采用了10 折交叉驗證法,模型的準確率與標準差取10 次交叉驗證所得準確率與標準差的平均值.實驗的前五種算法均從sklearn庫中直接調用,部分參數是默認值,部分參數經過多次實驗擇優選擇,最后一種算法基于Keras的全連接神經網絡設置了四層網絡層.經過多次實驗,各模型的運行結果如表2所示.

表2 各模型實驗結果對比
從表2 可以看出:針對本文的實驗數據集,BP神經網絡的分類結果最好,平均準確率達到75.3%,其次是SVM,平均準確率是73.7%,LR 模型、RF 模型、DT 模型的平均準確率分別是69.8%、68.3%、50%.采用基于Keras 的神經網絡模型對特征數據集進行分類時,在沒有設置Dropout 的情況下,數據集在訓練集上的準確率為89.5%,在測試集上的準確率為68.5%,由于準確率在訓練集與測試集上的差異以及數據量不夠大的原因,出現過擬合現象,多次實驗表明,在隱層設置Dropout 為0.5 時,結果最好,訓練集上的平均準確率為73.3%,測試集上的平均準確率為72%,雖然分類效果沒有SVM 與BP 神經網絡好,但是可以看出過擬合現象得到改善.
目前一些音樂流派的分類研究提取了很多不同類型的聲學特征,研究表明,不同的聲學特征對分類結果有著顯著的影響.本文研究了音頻特征數據集基于傳統的多種機器學習算法與深度學習中基于Keras 的深度神經網絡的分類效果,并對實驗結果進行比較,探討了十大音樂流派音頻數據集的各特征向量的提取以及分類模型的選擇問題.
本研究仍有不足之處.首先,實驗中使用的前五種算法是傳統的機器學習分類算法,其分類結果會受到各分類器自身局限的影響,基于Keras框架的神經網絡的分類方法,其結果也會受到各參數以及數據集大小的影響;其次,在提取的33 種音頻特征中,一些特征的貢獻率不大,但考慮到相對深度學習而言,數據集較小這個因素,并沒有進行特征數據的降維處理.因此,在之后的研究中,會選取數據量更大的音頻數據集并對分類算法繼續優化,進行進一步的實驗對比和分析.