神奇的推薦系統(tǒng):6億用戶(hù)音樂(lè)場(chǎng)景下的AI思考
原創(chuàng)【51CTO.com原創(chuàng)稿件】網(wǎng)易云音樂(lè)是音樂(lè)愛(ài)好者的集聚地,云音樂(lè)推薦系統(tǒng)致力于通過(guò) AI 算法的落地,實(shí)現(xiàn)用戶(hù)千人千面的個(gè)性化推薦,為用戶(hù)帶來(lái)不一樣的聽(tīng)歌體驗(yàn)。
圖片來(lái)自 pexels
2019 年 6 月 21 日-6 月 22 日,由 51CTO 主辦的 WOT 全球人工智能技術(shù)峰會(huì)在北京粵財(cái) JW 萬(wàn)豪酒店隆重舉行。
在機(jī)器學(xué)習(xí)實(shí)踐專(zhuān)場(chǎng), 網(wǎng)易云音樂(lè)的音樂(lè)推薦算法負(fù)責(zé)人肖強(qiáng),給大家介紹了《AI 算法在音樂(lè)推薦中的實(shí)踐》。
本次分享重點(diǎn)介紹 AI 算法在音樂(lè)推薦中的應(yīng)用實(shí)踐,以及在算法落地過(guò)程中遇到的挑戰(zhàn)和解決方案。
將從如下兩個(gè)部分展開(kāi):
- AI 算法在音樂(lè)推薦中的應(yīng)用
- 音樂(lè)場(chǎng)景下的 AI 思考
從 2013 年 4 月正式上線(xiàn)至今,網(wǎng)易云音樂(lè)平臺(tái)持續(xù)提供著:樂(lè)屏社區(qū)、UGC(User Generated Content)歌單、以及精準(zhǔn)推薦等服務(wù),孵化出了音樂(lè)人計(jì)劃、LOOK 直播、以及主播平臺(tái)等版塊。
目前云音樂(lè)的注冊(cè)用戶(hù)有 6 個(gè)億,而且持續(xù)在音樂(lè)類(lèi) App 排行榜里蟬聯(lián)著第一的位置。
AI 算法在音樂(lè)推薦中的應(yīng)用
在音樂(lè)推薦的實(shí)際應(yīng)用場(chǎng)景中,我們采用了 AI 技術(shù)來(lái)分發(fā)歌曲與歌單。其中比較典型的應(yīng)用是:每日歌曲和私人 FM,它們能夠根據(jù)個(gè)性化的場(chǎng)景,進(jìn)行相關(guān)曲目的推薦。
上圖是我們整個(gè)音樂(lè)推薦系統(tǒng)的邏輯圖,包括各種日志流、ETL、特征、召回、排序和最后的推薦。
對(duì)于該推薦系統(tǒng)而言,最主要的是如何理解用戶(hù)的畫(huà)像,也就是通過(guò)對(duì)前端數(shù)據(jù)進(jìn)行整合,了解用戶(hù)具體喜歡什么樣的音樂(lè)。
如上圖所示:
- 在數(shù)據(jù)層,我們主要用到了 Hive、Hadoop、Flink、SparkSQL 和 Mammut。
- 在機(jī)器學(xué)習(xí)層,我們則用到了 SparkML、Tensorflow、Parameter Server 和 Caffe。
上面是數(shù)據(jù)體系建設(shè)的對(duì)比圖,其中,算法體系建設(shè)包括了針對(duì)用戶(hù)體系的建設(shè),這是云音樂(lè) AI 算法的應(yīng)用環(huán)境。
而我們的團(tuán)隊(duì)則主要分為:
- 數(shù)據(jù)體驗(yàn)團(tuán)隊(duì)
- 人工智能算法團(tuán)隊(duì)
- 中臺(tái)團(tuán)隊(duì)
- 業(yè)務(wù)相關(guān)的成員
說(shuō)到采用人工智能的推薦方式,音樂(lè)類(lèi)推薦與其他商品有著不同的地方。例如:
- 由于我們能夠在很短的時(shí)間分辨出自己的喜好,所以我們可以做到在 10 秒鐘內(nèi)瀏覽十來(lái)?xiàng)l連衣裙。
但是音樂(lè)是需要花時(shí)間去體驗(yàn)的,往往一首曲子我們聽(tīng)了 10 秒鐘或者更長(zhǎng)的時(shí)間后,才發(fā)現(xiàn)它并非我們所喜好的。
所以說(shuō),音樂(lè)不是通過(guò)直接看就能被理解的,我們?cè)谥谱魍扑]產(chǎn)品的過(guò)程中,應(yīng)該以用戶(hù)的體驗(yàn)為導(dǎo)向,真正去理解音樂(lè)的本身。
- 連衣裙往往在單位時(shí)間內(nèi)只能被消費(fèi)一次,但是人們可以通過(guò)循環(huán)播放列表、以及單曲循環(huán)的方式,在單位時(shí)間內(nèi)反復(fù)欣賞音樂(lè)。因此,這是一種可重復(fù)消費(fèi)的行為,我們?cè)谧鐾扑]時(shí)應(yīng)當(dāng)把握此規(guī)律。
- 由于音樂(lè)消費(fèi)的成本比較高,我們更需要重視用戶(hù)的體驗(yàn),以及用戶(hù)在其消費(fèi)過(guò)程中存在的、較強(qiáng)的時(shí)間先后關(guān)聯(lián)性。
- 同時(shí),是否給讓用戶(hù)收聽(tīng)一首歌曲的 10 秒、30 秒、以及 60 秒,對(duì)他們來(lái)說(shuō)其表達(dá)的含義是截然不同的。
- 因此,我們需要提供的是真正有意義的消費(fèi),從而讓這些關(guān)聯(lián)性體現(xiàn)出有效的行為含義。
- 怎么去衡量音樂(lè)推薦系統(tǒng)的優(yōu)劣呢?是考察用戶(hù)使用該平臺(tái)的時(shí)長(zhǎng)?還是看他在收藏夾內(nèi)收藏的音樂(lè)曲目數(shù)?當(dāng)然,我們?cè)?jīng)發(fā)現(xiàn)有些用戶(hù)從來(lái)不以點(diǎn)擊紅心的方式去收藏任何歌曲。
后期通過(guò)交流,我們才發(fā)現(xiàn)他其實(shí)只是直接把自己碰到的不喜歡的歌曲拉黑了而已??梢?jiàn),我們很難用單一目標(biāo)去衡量音樂(lè)推薦系統(tǒng)的效果。
下面我們來(lái)看看,云音樂(lè)平臺(tái)是如何應(yīng)用各種 AI 技術(shù)的:
①音樂(lè)的復(fù)雜性
鑒于上面提到的有關(guān)音樂(lè)的復(fù)雜性問(wèn)題,我們?cè)撊绾稳ダ斫庖魳?lè)呢?在我們的平臺(tái)上,針對(duì)不同的音樂(lè),有著豐富的 UGC、以及各式各樣有質(zhì)量的用戶(hù)評(píng)論。
因此,我們可以運(yùn)用這些針對(duì)歌單的評(píng)論與認(rèn)知,采用雙向的 bi-Istm,來(lái)針對(duì)音樂(lè)生成一些描述性的語(yǔ)句。
那么,當(dāng)有新的音樂(lè)被輸入時(shí),我們便可以基于與之相關(guān)的較少的語(yǔ)言,來(lái)制定出一個(gè)新的解釋性描述。
如上圖所示,例如有一首《逆流之河》的歌曲,其下方有著許多相關(guān)的歌單標(biāo)題和描述信息。
我們可以通過(guò)新增關(guān)鍵詞,來(lái)還原各種標(biāo)記詞,進(jìn)而產(chǎn)生對(duì)于該音樂(lè)人的相關(guān)特征描述。
在此基礎(chǔ)上,我們?cè)俑鶕?jù)人工過(guò)濾的詞匯表,自動(dòng)生成諸如:“網(wǎng)絡(luò)的華語(yǔ)女聲”、“香港民謠歌曲”等短語(yǔ)。
因此,憑借著該 NLP(自然語(yǔ)言處理)系統(tǒng),我們最終能夠?qū)崿F(xiàn)歌曲短語(yǔ)的可視化。
籍此,對(duì)于社區(qū)里的用戶(hù)來(lái)說(shuō),他們甚至可以不用點(diǎn)開(kāi)某個(gè)歌曲收聽(tīng),就能夠大致獲悉該歌曲所歸屬的類(lèi)型。
其次,我們可以利用比較簡(jiǎn)單的“視頻+圖像+卷積”技術(shù),來(lái)理解音樂(lè)。
例如,對(duì)于一些比較熱門(mén)的歌曲,我們利用已生成的表達(dá)、以及現(xiàn)有的關(guān)聯(lián)性,進(jìn)而獲取相關(guān)的音頻,識(shí)別歌曲的響度、節(jié)奏、風(fēng)格、以及音樂(lè)之間的相似性,給音樂(lè)進(jìn)行“畫(huà)像”。
②音樂(lè)中的重復(fù)消費(fèi)價(jià)值
這里主要體現(xiàn)的是音樂(lè)推薦中的 CF。如上圖所示,我們通過(guò)跟蹤發(fā)現(xiàn):某個(gè)用戶(hù)將 A 歌曲聽(tīng)了 10 次,將 B 歌曲聽(tīng)了 9 次,而 C 歌曲只聽(tīng)了 1 次。
那么我們就可以對(duì) A、B、C 的相似關(guān)聯(lián)性理解為:該用戶(hù)偏好 A 和 B 類(lèi)歌曲更多一些,而且 A、B 之間的關(guān)聯(lián)性也更大一些。
因此,基于用戶(hù)的此類(lèi)重復(fù)消費(fèi)頻次,我們可以通過(guò)設(shè)置 X、Y、Z 坐標(biāo)軸的關(guān)系,來(lái)表達(dá)它們之間的空間位置、以及空間方向的差異性。
顯然,有了此類(lèi)相似度的計(jì)算,我們對(duì)于各種音樂(lè)的推薦效率會(huì)有大幅的提升。
③音樂(lè)的高消費(fèi)成本、前后高關(guān)聯(lián)特性,更加要求有合適的模型去表達(dá)用戶(hù)的需求
如上圖所示,我們經(jīng)歷了從一開(kāi)始的線(xiàn)性模型、到樹(shù)模型、到大規(guī)模 FTRL、再到深度神經(jīng)網(wǎng)絡(luò)、最后到深度時(shí)序網(wǎng)絡(luò),這么一個(gè)音樂(lè)推薦方面的迭代過(guò)程。
首先,我們從 LR 模型入手。該 LR 模型的解釋性較強(qiáng),便于我們進(jìn)行選擇。不過(guò),雖然它的解釋性較強(qiáng)、且迭代的速度較快,但是它的表達(dá)能力是非常有限的。
后來(lái),我們轉(zhuǎn)到了樹(shù)模型。該模型中的 RF 和 LGB 等模型具有:能夠解決部分非線(xiàn)性可解釋的優(yōu)點(diǎn),當(dāng)然其缺點(diǎn)在于擬合能力有待加強(qiáng)。
接著,我們上馬了適合表達(dá)的大規(guī)模 FTRL。其優(yōu)點(diǎn)在于:可以通過(guò)記憶類(lèi)特征,基于之前的學(xué)習(xí)和時(shí)序訓(xùn)練,表達(dá)并刻畫(huà)出所有的特征與關(guān)聯(lián)性。
而缺點(diǎn)則是特征緯度比較大,即:對(duì)于來(lái)自不同公司的不同需求,需要的樣本量會(huì)比較多,計(jì)算量也會(huì)比較復(fù)雜。
為了增加后續(xù)的表達(dá)能力,我們采用了深度神經(jīng)網(wǎng)絡(luò),包括:DNN、DeepFM 以及 Wide&Deep 等模型。
它們的優(yōu)點(diǎn)是理論性非常強(qiáng),而缺點(diǎn)是:由于本身神經(jīng)網(wǎng)絡(luò)的復(fù)雜性,因此它們的可解釋性比較差,也不能學(xué)習(xí)到各種隱含的時(shí)序關(guān)系。
最后,我們采用了深度時(shí)序網(wǎng)絡(luò),其對(duì)應(yīng)的模型包括:LSTM、GRU Transformer、DIN 以及 DEIN,它們的優(yōu)點(diǎn)是能夠?qū)W習(xí)到不同的時(shí)序特征,進(jìn)而具有刻畫(huà)+泛化的能力。
當(dāng)然,它們同樣帶有上述提到的深度神經(jīng)網(wǎng)絡(luò)的缺點(diǎn),即:網(wǎng)絡(luò)比較復(fù)雜,而且可解釋性比較差。
我們下面來(lái)看看 LR 以及樹(shù)的模型。前面我們說(shuō)過(guò),線(xiàn)性與樹(shù)模型的特點(diǎn)是:統(tǒng)計(jì)類(lèi)/泛化類(lèi)特征很豐富,但是泛化能力比較差。
在歌曲應(yīng)用場(chǎng)景中,我們可以直接把與歌曲相關(guān)的、由用戶(hù)行為所產(chǎn)生的豐富數(shù)據(jù),提供給該模型。
通過(guò)算法,我們需要將各種音樂(lè)指標(biāo)抽象成標(biāo)簽??墒?,雖然我們有足夠多的音樂(lè)資源和行為樣本,但是由于行為序列往往不是線(xiàn)性的,因此我們反而遇到了過(guò)擬合、以及特征時(shí)間穿梭(即特征記憶)方面的問(wèn)題。
我們亟待通過(guò)線(xiàn)下與線(xiàn)上的特征一致性,來(lái)有效地利用數(shù)據(jù),學(xué)習(xí)不同行為的前后關(guān)聯(lián)性,進(jìn)而提升模型的擬合能力。
因此,為了提升擬合能力,我們首先嘗試的是 DNN 模型。DNN 在結(jié)構(gòu)上是通過(guò) ReLU 來(lái)保證對(duì)于低階特征組合和高階特征組合的全連接,但是這也導(dǎo)致了整體數(shù)量的膨脹。
于是,我們改進(jìn)為 DeepFM,它能夠同時(shí)對(duì)低階特征組合和高階特征的組合進(jìn)行建模,從而能夠?qū)W習(xí)到各階特征之間的組合關(guān)系。如上圖所示,我們?cè)诤笃谶€引入了 DCN。
DCN 可以顯式地學(xué)習(xí)高階特征的交互。我們可以籍此來(lái)有效地捕獲高度非線(xiàn)性的交叉特征。
由于仍保持了 DeepFM 模型,我們可以有效地控制向量的擴(kuò)張,從而讓參數(shù)的空間得以縮小。
在前文中,我們也提及了時(shí)序關(guān)聯(lián)表達(dá)的問(wèn)題。對(duì)此,我們?cè)?jīng)采用過(guò)針對(duì)點(diǎn)擊率的 DIN(Deep Interest Network)。
在用戶(hù)的多樣化興趣點(diǎn)中,DIN 重點(diǎn)關(guān)注的是那些會(huì)影響到當(dāng)前推薦的歷史行為。不過(guò),DIN 無(wú)法捕獲用戶(hù)對(duì)于音樂(lè)興趣類(lèi)型的動(dòng)態(tài)變化。
例如,某個(gè)用戶(hù)以前喜歡電聲類(lèi)音樂(lè),后來(lái)改為喜歡民謠了。那么此類(lèi)“演進(jìn)”正是 DIN 所無(wú)法捕獲的。
在此基礎(chǔ)上,我們改用到了深度興趣演化網(wǎng)絡(luò)(DIEN)模型。該模型的主要特點(diǎn)是:通過(guò)關(guān)注用戶(hù)在系統(tǒng)中的興趣演化過(guò)程,設(shè)計(jì)了興趣抽取層與進(jìn)化層。
它采用新的網(wǎng)絡(luò)結(jié)果和建模形式,來(lái)更精確地表達(dá)用戶(hù)興趣的動(dòng)態(tài)變化,以及時(shí)序演進(jìn)的過(guò)程。
為了更加細(xì)粒度地掌握用戶(hù)的興趣變化,我們還運(yùn)用了 DSIN 模型。DSIN 主要由兩部分構(gòu)成:一個(gè)是稀疏特性,另一個(gè)是處理用戶(hù)行為序列。
該模型能夠發(fā)現(xiàn)某個(gè)用戶(hù)在同一個(gè) Session 中,所瀏覽商品的相似性;以及在不同 Session 中,所瀏覽商品的差異性,進(jìn)而抽取用戶(hù)的時(shí)序興趣。
④在音樂(lè)消費(fèi)中,鑒于用戶(hù)需求的復(fù)雜性,很難用單一目標(biāo)去衡量音樂(lè)推薦系統(tǒng)的優(yōu)劣
雖說(shuō)推薦系統(tǒng)是一個(gè)典型的統(tǒng)計(jì)學(xué)應(yīng)用,但是統(tǒng)計(jì)學(xué)只能解決 95% 的問(wèn)題,剩下的 5% 是有關(guān)個(gè)人偏好方面的。
我們?cè)趯?shí)際應(yīng)用中往往會(huì)遇到各種問(wèn)題,其中包括:CTR(Click-Through-Rate,點(diǎn)擊率)與消費(fèi)時(shí)長(zhǎng)的關(guān)系并非同步提升,有時(shí)候甚至呈現(xiàn)出此消彼長(zhǎng)的趨勢(shì)。那么我們?cè)撛趺唇鉀Q多目標(biāo)的問(wèn)題呢?
針對(duì)多目標(biāo)問(wèn)題,我們有許多種解決方法可供選擇。如上圖所示,有:樣本加權(quán)、Weight Loss、以及部分網(wǎng)絡(luò)共享。因此,我們采用了多目標(biāo)聯(lián)合訓(xùn)練,這種簡(jiǎn)單的實(shí)現(xiàn)方式。
在上圖中,我們首先在網(wǎng)絡(luò)層保證了各項(xiàng)輸出,并實(shí)現(xiàn)了淺層共享表示。因此,在訓(xùn)練效果上,雖然目標(biāo)之間也存在一定的差異性,但是隨著我們引入了差異網(wǎng)絡(luò)進(jìn)行訓(xùn)練,收藏率和消費(fèi)時(shí)長(zhǎng)都得到了明顯的提升。
可見(jiàn),聯(lián)合訓(xùn)練的優(yōu)勢(shì)在于:
- 通過(guò)多個(gè)目標(biāo)任務(wù)在淺層共享表示,我們?cè)谌蝿?wù)之間加入了噪音數(shù)據(jù)。此舉既降低了網(wǎng)絡(luò)過(guò)擬合,又提升了泛化的效果。
- 在多目標(biāo)任務(wù)的學(xué)習(xí)中,我們通過(guò)讓不同任務(wù)的局部極小值處于不同的位置,并能夠相互作用,以協(xié)助逃離局部的極小值。
- 通過(guò)多目標(biāo)任務(wù)的聯(lián)合訓(xùn)練,讓模型盡可能地去求解多任務(wù)的共同最優(yōu)解。
- 使用類(lèi)似于“竊聽(tīng)”的方式,跟蹤用戶(hù)對(duì)于音樂(lè)的收藏等操作,進(jìn)而做出相應(yīng)的判斷。
回顧我們?cè)谇拔闹兴岬降囊魳?lè)推薦與其他類(lèi)型推薦的差異點(diǎn),我們實(shí)現(xiàn)了如下點(diǎn)對(duì)點(diǎn)式的解決方案:
- 差異:基于音樂(lè)本身的復(fù)雜性,我們?cè)撊绾卫斫庖魳?lè)資源呢?解決:利用 NLP、視頻、以及圖像技術(shù)去更好地理解音樂(lè)。
- 差異:可重復(fù)消費(fèi)與不可重復(fù)消費(fèi)的不同之處。解決:利用音樂(lè)的消費(fèi)特性,去智能地分析不同歌曲之間的關(guān)聯(lián)性。
- 差異:各種音樂(lè)不但消費(fèi)的成本較高,而且前后有著明顯的關(guān)聯(lián)性。另外,有效行為的含義往往會(huì)更加豐富。解決:利用復(fù)雜的 AI 模型,去探究用戶(hù)聽(tīng)歌的序列關(guān)聯(lián)性。
- 差異:很難采用單一的目標(biāo),去衡量音樂(lè)推薦系統(tǒng)的效果。解決:利用 MTL 技術(shù),去解決用戶(hù)的多樣性需求。
音樂(lè)場(chǎng)景下的 AI 思考
那么,音樂(lè)場(chǎng)景為什么一定需要 AI 呢?顯然,如今已經(jīng)不是過(guò)去那種靠買(mǎi) CD、唱片聽(tīng)歌的端到端時(shí)代了。
在我們的音樂(lè)推薦平臺(tái)上有著億萬(wàn)個(gè)用戶(hù)。他們?cè)诓煌男那闋顟B(tài)下,面對(duì)由十萬(wàn)多個(gè)音樂(lè)人產(chǎn)生的千萬(wàn)多首音樂(lè)作品,需要通過(guò)美好的音樂(lè)來(lái)獲取良好的心情。
我們可以毫不夸張地說(shuō):“耳機(jī)是互聯(lián)網(wǎng)時(shí)代的輸氧管,而音樂(lè)則是氧氣。”
因此,我們需要在一個(gè) 4 維的空間內(nèi),解決復(fù)雜的匹配問(wèn)題。而這正是人工智能的用武之地。
通過(guò)基于 AI 的推薦系統(tǒng),我們能夠不斷提供強(qiáng)大的長(zhǎng)尾發(fā)掘能力和精準(zhǔn)的匹配能力,進(jìn)而在不斷提升用戶(hù)體驗(yàn)的同時(shí),來(lái)促進(jìn)他們自愿分享和發(fā)掘網(wǎng)易云音樂(lè)平臺(tái)上更多的歌曲資源。
為了達(dá)到上述目的,我們建立了一個(gè)如上圖所示的體系結(jié)構(gòu)。具體包括如下方面:
- 用戶(hù)心智模型體系。包括:行為、認(rèn)知、態(tài)度等。
- 用戶(hù)調(diào)研體系。包括:調(diào)研問(wèn)卷等。
- Case 分析體系。包括:分析用戶(hù)、及用戶(hù)群的使用行為。
- 評(píng)估指標(biāo)體系。包括:收藏率、切歌率、以及使用時(shí)長(zhǎng)等。
- 數(shù)據(jù)反饋體系。包括:收藏、切歌、離開(kāi)等正負(fù)向反饋。
通過(guò)這些定性和定量的用戶(hù)體驗(yàn)評(píng)估體系,我們采用知識(shí)圖譜、統(tǒng)計(jì)學(xué)習(xí)、以及強(qiáng)化學(xué)習(xí)相結(jié)合的方式,構(gòu)建出了如下的三層模型體系:
- 排序體系。包含:排序模型、ee 模型、以及流行趨勢(shì)模型。
- 匹配體系。包含:行為推薦模型、以及新內(nèi)容發(fā)現(xiàn)模型。
- 數(shù)據(jù)體系。包含:行為數(shù)據(jù)、用戶(hù)畫(huà)像、以及內(nèi)容畫(huà)像。
通過(guò)上述這些,我們不斷掌握與用戶(hù)相關(guān)的數(shù)據(jù)知識(shí)、乃至專(zhuān)家知識(shí),從而更好地提升了平臺(tái)的針對(duì)性和用戶(hù)的接受程度。
【51CTO原創(chuàng)稿件,合作站點(diǎn)轉(zhuǎn)載請(qǐng)注明原文作者和出處為51CTO.com】