摘要
傳統的音樂推薦算法往往是根據用戶的聽歌記錄來對其進行推薦,但是對於一個新用戶傳統的推薦算法就無能為力了。在本文中,我們使用機器學習中典型關聯分析(CCA)技術期望能夠通過加入用戶的社會屬性(微博)來改進原始的推薦算法,從而更加精準的推薦給用戶他們喜歡聽的音樂,另外,相較於其他推薦算法,我們能夠實現推薦的冷啟動。即使用戶之前沒有聽過任何音樂,我們也能夠從他的微博數據中挖掘出他喜歡聽的音樂類型。
關鍵詞:
跨平臺 音樂推薦 機器學習
1. 簡介
21世紀是網際網路時代,人們已不可避免的被捲入了這樣一場網際網路全球化的浪潮中。人們利用網際網路買到自己心儀的東西,收聽自己喜歡的音樂,觀看自己欣賞的視頻等等。然而,與線下的世界不同,網際網路世界是一個信息過載的世界,這就增大了每個人從中獲取到對自己有用信息的難度。隨著時代的演變和技術的成熟,人們期望將計算機當作一個「服務員」的角色,通過推薦的手段幫助人們找到合適自己的信息,從而避免將時間浪費在從龐大繁雜的數據中尋找信息的過程中。這就要求我們計算機從業者尋找更好的算法以推薦給用戶更合適的信息。
實際上,推薦算法作為一個機器學習的分支出現要追溯到1995年,而它的蓬勃發展則是在2000年之後,因此它是一個相對比較創新的理論,由於用戶的喜好是一種感性的偏好,隨著時間、心情甚至周圍的環境不同而不同,因此現階段推薦算法的準確率並不高。然而,據美國巨頭Amazon公司的估計,推薦算法將每年為它們帶來多達20%的利潤,因此,對於推薦算法的研究和改進是十分有必要的,是能夠產生巨大的社會效益的。
本文的主要研究工作是跨平臺的音樂推薦。考慮到推薦系統無法獲知到一個新用戶的聽歌記錄,即所謂的「冷啟動」問題,我們期望通過跨平臺的技術來獲取用戶的偏好。在本實驗中,我們選用了微博平臺作為系統獲取用戶喜好的來源,通過跨平臺的信息來為用戶進行更好的音樂推薦。本文的主要貢獻點有:首先使用網易雲音樂和微博的數據建立了一套用於進行跨平臺音樂推薦的數據集,第二使用了CCA算法進行音樂推薦,並在一定程度上提升了推薦結果。
在接下來的部分,第2部分主要是對推薦算法的一些相關工作進行了描述,第3部分主要講述本文的主要算法,第4部分主要是對實驗的一些描述,第5部分是對本文的總結以及我們對未來的音樂推薦系統的展望。
2. 相關工作
2.1 傳統音樂推薦算法概述
傳統推薦算法主要分成兩類,一種是基於歷史數據的推薦算法[11],另一種是協同過濾算法[6]。基於歷史數據的推薦算法也是推薦算法的萌芽,我們將目標信息通過特徵提取作為輸入,用戶的喜好作為輸出構造一個分類器或者回歸器,然後預測時我們可以根據結果(可以是0/1的二分類,也可以是一個實數)選取排在前面的信息推薦給用戶,這種方法實際上是一個傳統機器學習的過程,這裡不再贅述。
這裡重點說一下協同過濾算法(Collaborative Filtering, CF),這是推薦系統中很有創新性的一個算法。我們以基於用戶的協同過濾算法為例,算法的思想很簡單,我們認為,如果兩個用戶興趣相似,則可以把這個用戶的信息偏好推薦給另一個用戶。計算兩個用戶的相似程度可以把他們在全部信息集上的偏好量化後定義一種距離(點積,歐幾裡得距離等),推薦時可以用最近鄰算法找到每個用戶鄰近的幾個與他興趣相似的用戶,把他們的信息偏好加權推薦給這個用戶。與之相對應的是基於物品(item)的協同過濾算法,只是將定義用戶的相似度變成了定義物品的相似度而已。
協同過濾相較於基於歷史數據的推薦算法而言優點在於它能更多的挖掘到用戶的隱藏屬性,也就是說,通過用戶的歷史數據挖掘不出來的屬性,不過,由於協同過濾涉及到構造一個全用戶數量乘以一個全信息數量的矩陣,對於大數據而言要求更高的計算速度,因此需要用到更多的計算資源和更好的矩陣運算優化策略,另外,協同過濾算法的另一個問題是矩陣的稀疏性,比如我們在做音樂推薦時,一個用戶聽過的歌曲畢竟是有限的,因此得到的用戶-音樂矩陣會十分稀疏,這不利於計算用戶之間的相似程度。
然而,無論是基於歷史數據的推薦算法還是協同過濾,都涉及到一個無法解決的問題,我們稱之為冷啟動問題。冷啟動問題是指,如果我們並不知道用戶曾經的數據,換句話說,該用戶是一個新用戶,沒有任何的先驗知識,那我們的預測過程就沒有辦法進行,推薦信息也就只能是隨機推薦了。基於上面這一些不足,在目前推薦算法的20年發展中,研究者們不斷提出了更準確,涉及特徵更廣,適用面更廣的算法,它們或是基於現有算法的改進,或是完全新的算法。我們在下一講中進行敘述。
2.2 跨平臺音樂推薦算法概述
2.2.1協同過濾衍生算法——空間分解算法[9,10,12]
與協同過濾一樣,我們要分析的是一個用戶×音樂的矩陣A,矩陣的每一項表示某用戶對某音樂的偏好程度,可以用0/1二分類表示,也可以是一個實數,之前提及過,這個矩陣是一個稀疏矩陣,大約只有0.1%左右的元素是被確認的。那麼,最簡單直接能被想到的方法是引入一個隱空間,將這個矩陣拆分成描述用戶特性和隱空間關係的矩陣U及隱空間和音樂特性關係的矩陣V,這個隱空間可以被理解為情感因素。我們要做的是讓矩陣積UV^T儘可能接近於原矩陣A,這個過程可以用最小二乘和梯度下降的方法解決。這樣,我們就可以用矩陣積UV^T去估計原矩陣A,從而也就能夠知道矩陣A中那些未知的元素。
當然,上面描述的只是這類方法中最基本的架構。在算法的實際應用中,為了增加算法的準確程度,我們往往利用「多媒體」這一因素,引入用戶-用戶關係(好友關係),音樂-音樂關係(音樂近似程度),擴展原來的用戶-音樂關係(用戶偏好),以運用更多的信息,那麼很自然的,可以用UU^T來估計用戶-用戶關係,VV^T來估計音樂-音樂關係,最終要達到的目標變成了使得這三個矩陣積分別近似於相對應的三種關係矩陣。當然,在這類方法的發展中,還有另外的一些變種,比如由單一的隱空間擴展為用戶隱空間和音樂隱空間等等,這些算法也在實際的應用中取得了非常不錯的推薦成功率。
而這類算法相對於傳統的協同過濾也解決了冷啟動等諸多問題,這些問題都可以用矩陣的形式化描述通過數學方法來解決,因此是一類前景非常不錯的算法。
2.2.2 基於知識圖譜的聯合超圖算法(Unified Hypergraph Algorithm)[8]
一個好的推薦算法不能只考慮到用戶的喜好,因為每個用戶都是社會人,他們的喜好或厭惡都或多或少的受到身邊人的影響,而這種社交網絡的引入會增加推薦算法的正確率。因此,如果我們在推薦算法中引入圖來描述這一過程,是最好不過的選擇。
在本算法中,我們用點表示一個信息的發出者,它可以是一個用戶,可以是一首音樂,可以是一位藝術家,亦可以是一張專輯等等,而我們用邊來表示信息發出者之間的關係。值的注意的是,這些邊不是普通的邊,而是一個超邊,它可能不止兩個端點,舉例來說,如果有N個用戶屬於同一個音樂群(或者說有著相同的音樂愛好),那麼我們會用一條超邊將這N個用戶相連,這些邊可以描述幾乎跟推薦相關的所有信息關聯,比如用戶好友關係,音樂相似程度,音樂與藝術家的關係,音樂與專輯的關係等等共9類關係。我們將每個節點都賦上一個實數權重,那麼應該會有如下兩個關係:
(1)同一條邊的端點權重應該趨於相同。
(2)端點權重應該與已知信息保持一致。
基於這兩點,我們可以用數學的方式來解這個圖模型,從而獲取到所有點的權重。完成了整個的推薦過程。
這個算法的優勢在於它不僅能夠向用戶推薦音樂,還能完成其他多種多樣的功能,比如像用戶推薦藝術家,專輯,還可以向用戶推薦相似的用戶等等,甚至還可以預測一首音樂會被哪些用戶所喜歡,這些信息通過圖模型完全的展示了出來,這也是它相較傳統推薦算法最為突出的一點。
2.2.3 多觀點學習算法(Multi-View Learning)[1]
這類推薦算法的最大特點是依託於除音樂本身的社交平臺,比如微博數據,用戶發過的圖片數據等等,這類方法跳出了音樂推薦這個相對狹窄的領域,它的基本觀點是:用戶的社交數據能夠體現用戶的性格或是一些內在的東西,從而我們可以跨平臺的了解一個用戶收聽音樂的行為,從而能夠更精準的推薦歌曲。這類算法通常會構造幾組不同平臺用戶的特徵向量,然後聯合學習這幾組特徵空間來推薦音樂,因此叫做多觀點學習算法,它探究的是不同特徵空間之間的關聯。
這類學習算法比較繁多,我們主要介紹CCA,HENN[5]和Corr-AE[2]算法,而前兩個算法正是本實驗中使用的算法,為簡化起見,在後文中我們都用兩組特徵來描述,一組是用戶的社交平臺數據(如微博文本特徵),另一組是用戶偏好的音樂特徵。
典型關聯分析(Carnonical Correlation Analysis, CCA)是一個十分經典的算法,它的思想是找到兩組變換,分別針對兩組特徵向量,把它們投影到同一預先定義好維度的隱空間中去,然後通過在隱空間中使用最近鄰算法做推薦。衍生算法有KCCA和DCCA[3],它們分別通過核變換方法和深度神經網絡方法將線性CCA變成非線性CCA。
HENN算法(Heterogeneity-Entropy based Neural Network)分為三個部分:降維-編碼-降維過程,第一個降維過程是利用信息熵,降低兩組向量的維度,保證降維後的兩組新向量儘可能相關,編碼過程是將兩組新向量通過神經網絡合成為一組向量,從而實現將兩組向量投影到同一空間中去。如果這個空間的維度依然很大,那麼會通過第二次降維過程把這一組向量降到一個更合適的維度,完成整個算法的運行。
Corr-AE算法利用了神經網絡中經典的AutoEncoder三層模型,它將兩組向量分別放進兩組AutoEncoder中,然後學習出兩組AutoEncoder的參數,保證兩組AutoEncoder的隱層關聯繫數最大。
總而言之,這三類辦法都是期望將兩組向量投影到同一空間或是可互相變換的兩組空間中去,然後基於這個空間做推薦。這個空間我們可以理解為用戶的內在因素。
這類算法最大的特點就是完美解決了冷啟動的問題,因為它們甚至不需知道用戶之前的音樂數據,只需知道用戶的社交平臺數據就可以輕鬆完成推薦。
3. 算法描述
另外,如果我們發現兩組向量的關係不是簡單的線性關係的時候,可以引入核函數的方法,這就是KCCA算法,而同樣如果訓練參數時使用了深度神經網絡的技術,就進階成為DCCA[3]算法。在本次實驗中我們所用的均為線性CCA算法。
(責編:溫靜、趙光霞)