楊明極,劉 暢,宋 澤
1(哈爾濱理工大學 測控技術(shù)與通信工程學院,哈爾濱 150080) 2(中國船舶重工集團公司第七〇三研究所 蒸汽事業(yè)動力部,哈爾濱 150010)
伴隨互聯(lián)網(wǎng)技術(shù)的迅速普及,各類信息的數(shù)據(jù)呈現(xiàn)爆發(fā)式地增長.預(yù)計到2025年,全球數(shù)據(jù)總量將是2018年的5.3倍,高達到175ZB[1],即產(chǎn)生信息爆炸.面對如此龐大的信息總量,如何快速、準確地為用戶提供最感興趣的內(nèi)容就成為一個非常有意義的研究課題.為此,諸多推薦技術(shù)應(yīng)運而生[2],數(shù)字音樂領(lǐng)域中的個性化音樂推薦已然成為各類線上音樂服務(wù)中的必備服務(wù),例如Spotify、QQ音樂、網(wǎng)易云音樂等都嵌入了各自的推薦算法,極大地增強了用戶對該產(chǎn)品的依賴程度,同時縮短了用戶找到喜愛音樂的時間.
傳統(tǒng)的音樂推薦算法隨著可感知數(shù)據(jù)的不斷增多,無法充分利用用戶和音樂之間的深層次特征,導(dǎo)致推薦質(zhì)量下降.使用深度學習的方法可以從每一層中自動抽取特征,從而提升分類的精度[3].深度神經(jīng)網(wǎng)絡(luò)(Deep Neural Network,DNN)的出現(xiàn),解決了音樂數(shù)據(jù)難以處理的問題[4],但DNN以向量為輸入,并且不能捕捉音頻數(shù)據(jù)在時間序列上的關(guān)系,而這種關(guān)系對于音樂推薦十分重要.循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Network,RNN)理論上可以對任意長度的序列數(shù)據(jù)進行建模,并對過去的信息進行記錄.由于音頻的上下文是相關(guān)聯(lián)的,并且這種聯(lián)系直接影響到音樂推薦的準確度.因此,RNN更適合應(yīng)用于音樂推薦領(lǐng)域.
Okura等人使用RNN從用戶的歷史行為列表中學習用戶偏好[5].Liu等人采用RNN建模用戶行為并提出一種循環(huán)Log雙線模型,實現(xiàn)對用戶下一時刻的行為類型預(yù)測[6].Van等人通過將用戶歷史收聽數(shù)據(jù)和音頻信號組合卷積神經(jīng)網(wǎng)絡(luò),將用戶和音樂映射到一個隱空間,得到用戶和歌曲的隱表示,從而較好解決音樂推薦系統(tǒng)中的冷啟動問題[7].盡管上述研究已經(jīng)取得一定的成果,但由于RNN在序列上共享參數(shù),會產(chǎn)生梯度消失或梯度爆炸的問題[8].而長短時記憶網(wǎng)絡(luò)(Long Short-term Memory,LSTM)模型可以較好的解決該問題[9].Jia等人提出一種基于特征分割的LSTM模型,推薦的精確度比基于RNN模型提高4%[10].但由于音樂領(lǐng)域音頻特征序列較長,LSTM無法捕捉較長的序列,同時存在著梯度衰減的問題.獨立循環(huán)神經(jīng)網(wǎng)絡(luò)(Independent Recurrent Neural Network,IndRNN)可以通過調(diào)整反向傳播梯度和使用Relu非飽和激活函數(shù)解決梯度消失問題,并且增強模型的魯棒性,比LSTM更適合分析長時序特征[11].同時IndRNN將RNN層內(nèi)的神經(jīng)元進行解耦,使每個神經(jīng)元之間相互獨立,增加可解釋性.但由于音頻信號特征較多且時間尺度較長,使用IndRNN網(wǎng)絡(luò)會將時間大量消耗在計算相關(guān)性較小的特征上.
近幾年一些學者為更好地學習用戶數(shù)據(jù)信息表征量大的部分,借鑒人類視覺機制提出了注意力機制.注意力機制的核心目標是從眾多信息中選擇對當前目標更重要的信息,被廣泛應(yīng)用與圖像識別[12],自然語言處理和機器翻譯[13]等領(lǐng)域.在推薦領(lǐng)域注意力機制也取得了不錯的成果,張全貴等人提出了一種基于注意力機制的音樂深度推薦算法,使深度學習對用戶興趣偏好分析的可解釋性增強[14].Zhang等人使用注意力機融合深度神經(jīng)網(wǎng)絡(luò)來預(yù)測用戶轉(zhuǎn)發(fā)行為[15].但目前推薦領(lǐng)域引入注意力機制的研究還比較少.
針對上述IndRNN耗時較長且準確率較低的不足,受到注意力機制的啟發(fā),給出一種混合注意力機制的獨立循環(huán)神經(jīng)網(wǎng)絡(luò)音樂推薦算法,通過使用注意力機制實現(xiàn)對用戶歷史收聽音樂分配動態(tài)權(quán)重,從而學習用戶的個性化喜好,此外還結(jié)合使用散射變換(Scattering Transform,ST)對音頻數(shù)據(jù)進行預(yù)處理,以減少音頻信息的損失.
音樂推薦算法的任務(wù)是為用戶推薦喜愛的歌曲,將音樂分為用戶喜愛與不喜愛兩類,因此,該任務(wù)可以歸結(jié)為二分類問題.混合注意力機制的獨立循環(huán)神經(jīng)網(wǎng)絡(luò)音樂推薦算法(Attention Independent Recurrent Neural Network,AIRNN)是在深度學習RNN的基礎(chǔ)上給出的.AIRNN整體混合算法框架如圖1所示.
圖1 AIRNN混合模型框架圖Fig.1 AIRNN model frame diagram
該模型將預(yù)測集中的音樂作為輸入,輸出是預(yù)測該音樂是否符合用戶的喜好.在訓練階段,首先將訓練集分為用戶歷史收聽音頻和用戶畫像兩個子部分.其中用戶畫像由用戶收聽歌曲語言、用戶年齡、收聽歌曲類型三部分組成.先將用戶歷史收聽音頻通過散射變換得到具有代表性的音頻特征,隨后將它輸入到AIRNN模型中進行特征提取,接著將上述特征池化為單一向量,并同時將訓練集的另一部分用戶畫像通過DNN模型抽取用戶特征,同樣將上述特征池化為單一向量.將上述AIRNN模型中得到的最終音頻抽取特征使用單層網(wǎng)絡(luò)并通過注意力機制和DNN模型得到的池化后的用戶特征相結(jié)合,其中注意力機制(Attention)將用戶對歌曲的收聽次數(shù)表征用戶對歌曲特征的喜好程度,從而學習用戶的個性化權(quán)重.最后再次通過歸一層(softmax)得到混合音樂推薦模型.
音頻作為一種語音信號無法直接被深度學習網(wǎng)絡(luò)所使用,且人耳對不同頻率的聲波有不同的聽覺靈敏度,較之高頻,人更喜歡低頻.針對上述客觀事實,學術(shù)界通常使用預(yù)加重、分幀、加窗、快速傅里葉變換、梅爾濾波器等步驟提取音頻信號的梅爾倒譜系數(shù),對音頻進行預(yù)處理.梅爾倒譜系數(shù)(Mel-Frequency Cepstral Coefficient,MFCC)廣泛的應(yīng)用于語音情感識別和音樂推薦算法中.式(1)為MFCC計算公式:
(1)
ψλ(ω)為梅爾濾波器,λ為每一個濾波器的中心頻率.
然而,MFCC只有在提取時間尺度為25ms以下的特征時才有效.但500ms以上的信號特征,例如節(jié)奏、音色等,對于音樂推薦算法同樣重要.因此,使用一種改進的MFCC算法——散射變換(Scattering Transform,ST)提取音頻的長時特征,Joakim證明散射變換在音樂推薦算法的預(yù)處理階段中十分有效[16].
散射變換通過小波卷積和模算子級聯(lián)計算多階調(diào)制譜系數(shù),修復(fù)由MFCC產(chǎn)生的信息損失[16].信號x的散射系數(shù)為snx,x時不變局部變換為:
s0x(t)=x*φ(t)
(2)
φ(t)為低通濾波器,由于式(2)濾除了所有的高頻信號,可以由式(3)小波模組變換修復(fù).
|W1|x=(x*φ(t),|x*ψλ1(t)|)t∈R,λ1∈σ1
(3)
對于連續(xù)音頻信號,散射變換設(shè)定小波和原有的梅爾濾波器具有相同的頻率分辨率.由于音頻信號在低頻時能量極低,因此可以忽略不計.推出一階散射系數(shù)為:
S1x(t,λ)=|x*ψλ1|*φ(t)
(4)
一階散射系數(shù)是由另一個小波模組變換W2計算得出,它補充了高頻的小波系數(shù):
|W2||x*ψλ1|=(|x*ψλ1|*φ,|x*ψλ1|*ψλ2)
(5)
通過小波模組系數(shù)ψλ2恢復(fù)高頻信息.這些系數(shù)由相同的低頻濾波器進行均值得出,由于有第一階時移不變性作為保證,第二階散射系數(shù)為:
S2x(t,λ1,λ2)=||x*ψλ1|*ψλ2|*φ(t)
(6)
散射系數(shù)就像卷積神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu),可以不停的拓展至第n層[17].
為解決在音樂推薦領(lǐng)域使用RNN算法產(chǎn)生的梯度消失和梯度爆炸問題,在RNN算法的基礎(chǔ)上進行改進,得到IndRNN:
ht=σ(Wxt+u⊙ht-1+b)
(7)
ht是時間t時的隱狀態(tài),與RNN不同,IndRNN的權(quán)重系數(shù)由矩陣U變成向量u,權(quán)重系數(shù)和上一個時刻隱狀態(tài)的運算變?yōu)椤?,即矩陣元素積.式(7)表示在t時刻,每個神經(jīng)元只接受此刻輸入以及t-1時刻的自身狀態(tài)作為輸入,由此可以推導(dǎo)出第n層網(wǎng)絡(luò)的隱狀態(tài):
hn,t=σ(WnXt+unhn,t-1+bn)
(8)
其中,Wn是n維向量的輸入權(quán)重,un是遞歸權(quán)重.由式(8)可以看出,IndRNN中的每個神經(jīng)元都可以疊加兩層或多層使用,即后一層的每個神經(jīng)元可以處理前一層所有神經(jīng)元的輸出.Li等人提出的兩層IndRNN模型相當于一層激活函數(shù)為線性函數(shù)、遞歸權(quán)重為可對角化矩陣的傳統(tǒng)RNN[18].
通常,RNN是一個參數(shù)共享的多層網(wǎng)絡(luò),RNN在t時刻每一個神經(jīng)元都接受t-1時刻所有神經(jīng)元的狀態(tài)作為輸入[19].與傳統(tǒng)的神經(jīng)網(wǎng)絡(luò)不同,IndRNN中的每個神經(jīng)元都可以獨立地處理.
(9)
式(9)為IndRNN在t-1時刻反向傳播梯度.σ′n,k+1是激活函數(shù)的導(dǎo)數(shù),對于第n層神經(jīng)元,假設(shè)目標在是在T時刻的最小化,偏置為0.由于IndRNN中神經(jīng)元之間相互不起作用,所以IndRNN可以獨立計算每個神經(jīng)元的梯度.與RNN相比,IndRNN的梯度直接由遞歸的權(quán)重決定,而不是矩陣的乘積,并且將激活函數(shù)的導(dǎo)數(shù)與遞歸權(quán)重系數(shù)相互獨立.神經(jīng)元之間的相互連接依賴層間交互來完成,下一層的神經(jīng)元將會接受上一層所有神經(jīng)元的輸入作為輸出.
本文通過疊加IndRNN的基礎(chǔ)結(jié)構(gòu)構(gòu)建一個深度的IndRNN網(wǎng)絡(luò),并將網(wǎng)絡(luò)輸入的處理方式由全連接改為殘差連接并引入注意力機制,給出一種混合注意力機制的AIRNN音樂推薦算法.算法結(jié)構(gòu)圖如圖2所示.在每一個時間步長內(nèi),借助Relu非飽和激活函數(shù),梯度可以恒等映射并直接傳播到其他層.
圖2 AIRNN推薦算法結(jié)構(gòu)圖Fig.2 AIRNN Recommended algorithm structure diagram
問題定義:給定一首歌曲的音頻序列M={S1,S2,S3,…,St},t為音頻特征序列的長度.模型的預(yù)測問題是給出用戶的歷史收聽列表,并為該用戶推薦可能喜歡的歌曲.
用戶對這首歌音頻序列中第t個音頻的喜好函數(shù)為ft:
(10)
其中wt為該音頻特征對下一首待預(yù)測的音樂音頻所起作用的權(quán)重參數(shù),bt為偏置參數(shù).利用softmax函數(shù)將tanh函數(shù)所求的f非線性關(guān)系進行歸一化,得到用戶的個性化喜好權(quán)重wt:
(11)
音頻上下文關(guān)系的參數(shù)是在訓練過程中隨機初始化和共同學習得到的.
將用戶對整個音頻特征序列的個性化喜好權(quán)重求和得到權(quán)重向量:
H=∑tfuWt
(12)
最后,使用一個二分類器預(yù)測下一首歌是否符合用戶的喜好.使用一個交叉熵損失函數(shù)作為softmax層,將與注意力層結(jié)合的音頻特征權(quán)重向量作為輸入,得到預(yù)測的結(jié)果:
(13)
(14)
Wf和bf為學習參數(shù).通過式(13)、式(14)可以得到一個排名列表,并且將符合用戶喜好的音樂推薦給他們.p=[0,1],將似然函數(shù)定義為:
(15)
對式(15)取似然負對數(shù)作為損失函數(shù)可得的交叉熵損失函數(shù)為:
(16)
圖3 AIRNN算法流程圖Fig.3 AIRNN algorithm flow diagram
AIRNN算法流程圖如圖3所示.首先按照順序從歌曲列表中取出數(shù)據(jù),并將數(shù)據(jù)分為音頻數(shù)據(jù)和用戶畫像兩部分,隨后把用戶歷史音樂音頻數(shù)據(jù)進行散射變換,并將從中提取的特征作為AIRNN算法的輸入,同時將用戶畫像數(shù)據(jù)輸入到DNN模型中,將音頻數(shù)據(jù)分析結(jié)果通過注意力機制和用戶畫像抽取出的特征融入相同的歸一化層生成列表并記錄數(shù)據(jù),并判斷當前是否將歌曲列表完全遍歷.如果記錄數(shù)量等于歌曲列表數(shù)量,便將所得列表排序并推薦給用戶;否則返回第一步繼續(xù)進行上述步驟,直至結(jié)束.
本文在表1的仿真環(huán)境下驗證了所給出的混合注意力機制的獨立循環(huán)神經(jīng)網(wǎng)絡(luò)算法(AIRNN),并將AIRNN算法與IndRNN[11]、LSTM[20]推薦算法從不同角度進行對比、仿真結(jié)果的分析.
表1 仿真環(huán)境Table 1 Lab environment
仿真所使用的數(shù)據(jù)集是包含100多萬首歌曲元數(shù)據(jù)和預(yù)處理音頻特征的集合——百萬音樂數(shù)據(jù)集(Million Song Datasets,MSD),是目前音樂推薦領(lǐng)域使用最頻繁的公開數(shù)據(jù)集.對比試驗主要使用MSD核心數(shù)據(jù)集中的音樂音頻特征和子集Taste Profile所提供的評分數(shù)據(jù).
鑒于所選數(shù)據(jù)集數(shù)據(jù)較多,為提高模型訓練速度,首先按照收聽歌曲數(shù)目大于200次進行篩選,得到70327名用戶數(shù)量和283293首歌曲.接著將篩選數(shù)據(jù)中每一個用戶歷史收聽記錄數(shù)據(jù)分為10份,采用十折交叉驗證(5-Fold Cross Validation)將其中的九份作為訓練集,其余作為測試集.對比仿真將訓練模型的過擬合參數(shù)設(shè)為0.5,學習率設(shè)為設(shè)為0.0005.當精度曲線收斂范圍穩(wěn)定時,停止訓練并保存模型.
推薦系統(tǒng)的評價指標不同于分類算法,較為多元化,有歸一化折損累計增益、準確率、滿意度等.過高的準確度會使得推薦列表多樣性變低,過高的驚喜度和新穎度會使得準確率有所下降,但用戶滿意度可以直觀綜合多方面評價推薦系統(tǒng)性能.因此,選取歸一化折損累計增益、準確率和用戶滿意度來對算法進行仿真驗證[20].
將算法得出的排名列表取前k,通過準確率可以直觀的判斷預(yù)測結(jié)果.準確率定義如式(17)所示.
(17)
歸一化折損累計增益(Normalized Discounted cumulative gain,NDCG)通過計算高關(guān)聯(lián)度的排序位置得分情況評價算法,是一個衡量推薦系統(tǒng)性能的重要指標.NDCG定義見式(18).
(18)
其中reli表示第i個結(jié)果產(chǎn)生的效益,|rel|表示按最優(yōu)的方式對結(jié)果進行排序.
用戶滿意度采用問卷調(diào)查的方式.其中對指標的重要程度通過使用主觀賦權(quán)法李斯特量表進行評價,所得的重要性得分作為權(quán)重計算的數(shù)據(jù),使用得分均值作為原始相對影響系數(shù).問卷共有準確度和驚喜度兩個指標,打分等級從1-10,共有10個等級.
調(diào)查30名志愿者分別體驗基于IndRNN、AINRNN、LSTM三種不同音樂推薦算法,并對其進行打分,取加權(quán)和作為每個用戶滿意度的分數(shù),并取30名志愿者滿意度分數(shù)的平均值作為算法整體的滿意度分數(shù).
首先設(shè)置兩個仿真實驗組對照MFCC和ST預(yù)處理對算法的影響,兩組使用相同的5層AIRNN網(wǎng)絡(luò).從圖4中可以看出,在訓練達到70個epoch時,使用散射變換預(yù)處理的仿真組比使用梅爾倒譜系數(shù)的仿真組準確度高15%.這是由于使用梅爾倒譜系數(shù)預(yù)處理會使音頻信息缺失時間尺度為25ms以上的特征,而散射變換可以將損失的特征恢復(fù).因此證明隨著可提取音頻特征數(shù)量的增多,預(yù)測的效果也越好,散射變換恢復(fù)的長時音頻特征捕獲到影響用戶是否喜歡該歌曲的相關(guān)潛在特征.
圖4 不同數(shù)據(jù)預(yù)處理方式對算法準確度的影響Fig.4 Effects of data preprocessing methods on theaccuracy of algorithm
圖5 k值對算法準確度的影響Fig.5 Effect of value k on algorithm accuracy
圖5展示三種典型神經(jīng)網(wǎng)絡(luò)算法AINRNN、IndRNN、LSTM不同k值對算法準確度的影響.當k值小于5時,三個算法的準確度都較低,隨著k值增加,LSTM算法準確度始終最低,而IndRNN為65.3%,AINRNN為67.8%,兩個算法準確度相差較小.但是在圖6中AINRNN的歸一化折損累計增益要比IndRNN高7.3%.說明AINRNN可以較好提取音頻序列潛在特征,解決了RNN和LSTM梯度爆炸問題,證明該算法應(yīng)用于音樂推薦領(lǐng)域具有良好的表現(xiàn).
圖6 k值對歸一化折損累計增益的影響Fig.6 NDCG effect of value k on algorithm accuracy
同時,隨著k值的增大,3個算法準確度的增長趨勢為先上升后下降最后趨于平穩(wěn).可以看出k值為8-10的時候算法精確度最高.Spotify、QQ音樂等線上音樂服務(wù)每日推薦為15首,除去由于商業(yè)環(huán)境影響一部分歌曲推薦不由音樂推薦算法決定,剩余的歌曲與仿真結(jié)果相似.
圖7 不同算法之間的訓練時間Fig.7 Training time between different algorithms
圖7中對比AINRNN、IndRNN、LSTM三種算法在音樂推薦系統(tǒng)中的迭代時間.LSTM訓練時間最長但效果也最差.IndRNN算法每次迭代的訓練時間最短,但是它在圖6中的NDCG指標只有50.3%.而引入了注意力機制的AINRNN較
圖8 不同算法用戶滿意度對比Fig.8 Satisfaction on effect of different algorithms
IndRNN損失了1.1s的時間但NDCG指標提升了7.8%.由于目前商業(yè)音樂服務(wù)的音樂推薦主要為線下推薦,犧牲少量運行速度來換取更高的推薦性能是可接受的.此外,圖8顯示混合注意力機制的AINRNN算法的用戶滿意度也最高.由此可以表明所改進的混合注意力機制的獨立循環(huán)神經(jīng)網(wǎng)絡(luò)算法可以很好的應(yīng)用于音樂推薦領(lǐng)域.
圖9 歷史收聽歌曲數(shù)量對算法性能的影響Fig.9 Influence of history songs listened on algorithm performance
探究完k值對算法性能的影響,還要考慮歷史收聽列表中的歌曲數(shù)量是否會影響仿真結(jié)果.因此設(shè)置了融入注意力機制的AIRNN算法與未融入注意力機制的IndRNN算法作對比仿真,其中k值取10,仿真結(jié)果如圖9所示.對于MSD數(shù)據(jù)集,混合注意力機制的AIRNN音樂推薦算法可以在用戶歷史音樂收聽記錄僅有16首歌曲時,便很有效地學習用戶的個人音樂偏好,與此對照,未融入注意力機制的IndRNN推薦算法只有獲取更多的用戶歷史音樂收聽記錄(25首歌曲)才能更好地學習用戶個性化信息.證明AIRNN推薦算法可以在用戶歷史收聽記錄較少時,便可以達到較好的學習效果,從而降低計算復(fù)雜度,并且較好的解決冷啟動問題.
本文給出一種混合注意力機制的獨立循環(huán)神經(jīng)網(wǎng)絡(luò)算法,并在數(shù)據(jù)預(yù)處理階段對用戶收聽歷史記錄的音頻使用改進的梅爾倒譜系數(shù)進行預(yù)處理.通過在MSD數(shù)據(jù)集上仿真,結(jié)果表明,該算法較比INDRNN算法提升了7.8%推薦準確度和4%用戶滿意度.與現(xiàn)有模型相比,仿真結(jié)果具有較強的競爭力.因此,結(jié)合散射變換和AINRNN可以很好地實現(xiàn)在MSD數(shù)據(jù)集上處理個性化音樂推薦任務(wù).在今后的工作中,將考慮使用內(nèi)部注意力機制(Intr-attention)有效地利用遠距離依賴特征,并平衡驚喜度、新穎性和多樣性之間的權(quán)重,使推薦性能進一步提升.