「網(wǎng)易云音樂」歌單推薦算法:技術(shù)同學(xué)體驗(yàn)反推
推薦算法可以通過APP表現(xiàn)進(jìn)行反推,不會(huì)100%準(zhǔn)確,但應(yīng)該也八九不離十。
推薦依據(jù)
推薦算法不是無根之水,它必須借助用戶的數(shù)據(jù)才可以進(jìn)行推薦。即使是冷啟動(dòng),也需要獲得你的微博、微信(你的登錄方式)或其他已注冊(cè)用戶的熱門喜好。
具體的數(shù)據(jù)包括:
- 瀏覽記錄
- 頁面停留時(shí)間
- 歌曲播放次數(shù)
- 點(diǎn)擊歌曲但未播放記錄
- 點(diǎn)擊歌曲且播放完成記錄
- 歌曲、歌單、歌手的收藏記錄
- 歌單播放次數(shù)和歌曲所屬標(biāo)簽
- 個(gè)人屬性(性別,年齡,地理位置等)
……
這樣的數(shù)據(jù)在算法模型里叫做特征,也就是通過這些歷史行為數(shù)據(jù)中的特征,推薦算法可以進(jìn)行非常精準(zhǔn)的個(gè)性化推薦。在幾年前,網(wǎng)易云音樂其實(shí)還沒有那么“神”,很多推薦莫名其妙,但是現(xiàn)在的算法相對(duì)來說已經(jīng)非常精準(zhǔn)了。
推薦算法
在說歌單的同時(shí),也會(huì)給大家看看網(wǎng)易云音樂這個(gè)APP里一共有哪些地方用到了推薦算法:
- 場(chǎng)景一:開屏廣告(按用戶畫像推薦/全量發(fā)布)
- 場(chǎng)景二:私人FM(實(shí)時(shí)推薦)
- 場(chǎng)景三:主頁推薦-每日推薦、歌單推薦、電臺(tái)推薦(搜索召回排序、多因素加權(quán))
- 場(chǎng)景四:云村推薦-云村廣場(chǎng)、好友動(dòng)態(tài)(搜索召回排序、多因素加權(quán))
- 場(chǎng)景五:視頻推薦(根據(jù)歷史行為精準(zhǔn)推薦)
場(chǎng)景一:開屏廣告(按用戶畫像推薦/全量發(fā)布)
算法:有時(shí)候打開的廣告會(huì)不一樣,有時(shí)候會(huì)重復(fù)。全屏廣告費(fèi)用很高,假如不是獨(dú)占類型的,那這塊用到的可能有一些簡(jiǎn)單的人群匹配或者用戶畫像。如果是單次廣告獨(dú)占,則有可能是按照廣告商的要求投放。18年之前沒有這個(gè)廣告功能,但是網(wǎng)易要恰飯的,能理解。
場(chǎng)景二:私人FM(實(shí)時(shí)推薦)
私人FM和電音位于個(gè)人主頁的頭部位置,用戶點(diǎn)擊率非常高。因?yàn)槎弑举|(zhì)上很相似,這里只談FM的算法。
私人FM和單曲、歌單推薦的最大區(qū)別是,歌單推薦是一次性生成一個(gè)歌曲/歌單列表,但FM只推薦下一首,沒有“上一首”功能,這意味著推薦算法會(huì)更關(guān)注你的瞬時(shí)興趣。因?yàn)镕M只有喜歡、聽完、切歌三種反饋,相對(duì)來說比歌單推薦要簡(jiǎn)單很多,但相對(duì)的,信息也少了很多。
可以推算,F(xiàn)M用到的具體方式是由“播放、喜歡、切歌”來判斷用戶對(duì)推薦結(jié)果的喜好程度。使用的算法應(yīng)該是相似性召回和基于用戶、基于內(nèi)容的協(xié)同過濾三合一,這一點(diǎn)和單曲推薦很相似,甚至兩個(gè)功能都使用了用一套推薦算法。
FM有個(gè)額外的要求是實(shí)時(shí)推薦,可以將私人FM理解為一個(gè)由動(dòng)態(tài)變化的推薦歌曲組成的歌曲序列,這里面應(yīng)該使用了深度學(xué)習(xí)算法中的“下一項(xiàng)推薦”模型來生成,用到的可能有Transformer或GRU/RNN模型。
實(shí)時(shí)推薦的意思是,上一首是“l(fā)emon”,如果你聽完了,那么下一首可能會(huì)給你推薦米津玄師的另一首歌,或者相似的日文歌。如果我在聽小英雄的OP,但沒聽完就切歌了,那么序列中的下一首本來是冰海戰(zhàn)紀(jì)的ED,此刻可能就會(huì)變?yōu)橐皇子⑽牧餍懈琛?/p>
場(chǎng)景三:主頁推薦(這塊包含的比較多,最主要的是“推薦歌單”功能)
算法反推:頁面可以拆開來看
(1)每日推薦(多因素加權(quán))
這里用到的是單曲推薦,具體算法不難想到,從我的每日推薦歌曲來看,基本是:
- 我聽過的歌手的其他單曲
- 我聽過的歌曲所屬分類的其他熱門歌曲
- 我聽過、收藏過、評(píng)論過的歌曲
- 聽過我聽過歌曲的人,聽過的其他熱門歌曲
每個(gè)部分都分配有不同權(quán)重,權(quán)重高的,推薦的位置(排序機(jī)制)就會(huì)靠前,權(quán)重低的則會(huì)靠后。比如我的列表里,藍(lán)蓮花排名第一,但是我最近并沒有聽過藍(lán)蓮花,也沒聽過許巍的歌。但是我聽過民謠/搖滾標(biāo)簽類的歌曲,并且很容易猜到,聽過這個(gè)標(biāo)簽的人,基本都會(huì)聽藍(lán)蓮花(熱門)。那么我的列表里,第1項(xiàng)和第4項(xiàng)的權(quán)重應(yīng)該是更高的。
現(xiàn)在的算法幾乎都是千人千面,所以每個(gè)用戶都有自己的個(gè)性化匹配機(jī)制,也就是張三的權(quán)重和李四的權(quán)重是不同的,這也反映出一種個(gè)人喜好。而相對(duì)于FM,這里的推薦更關(guān)注用戶的長(zhǎng)期興趣。由用戶最近一個(gè)月、一個(gè)周的行為數(shù)據(jù)構(gòu)成。
上面這4種只是主要推薦方式,在具體應(yīng)用時(shí),算法團(tuán)隊(duì)會(huì)有更多機(jī)制來篩選這些歌曲并在列表內(nèi)排序,提高對(duì)新用戶、不活躍用戶的推薦精度,而這里用到的算法有協(xié)同過濾,基于內(nèi)容召回以及相似性召回等。對(duì)算法具體原理感興趣的可以自行搜索,這里不展開講。
(2)歌單推薦(搜索召回排序)
點(diǎn)進(jìn)“歌單”按鈕,會(huì)跳到一個(gè)歌單廣場(chǎng),但是我平時(shí)不怎么用,這里和主頁推薦歌單放在一起講,因?yàn)閮蓚€(gè)模塊的算法應(yīng)該是一樣的。
推薦歌單是網(wǎng)易云音樂的主要流量通道,95%以上的用戶每天打開APP會(huì)首先看這些推薦歌單。推薦歌單算法,網(wǎng)易云在全球范圍內(nèi)都屬于做的很不錯(cuò),因?yàn)楦鑶芜@個(gè)東西和歌曲不一樣,里面有很多首歌組成,并且每首歌的調(diào)性有可能相似,也有可能不同,比傳統(tǒng)推薦要更難。B站、Youtube都有類似算法,比如通過用戶的收藏夾推薦相似的收藏夾。
歌單有個(gè)特點(diǎn)就是UGC(用戶生成內(nèi)容),UGC歌單是實(shí)時(shí)的,即用戶有收聽歌曲行為后可實(shí)時(shí)帶來推薦變化,比如刷新一下,會(huì)推送不一樣的歌單給你。
具體的推薦過程大概如下圖,大家只需要知道“召回”和“排序”就行。
- 召回,是從數(shù)以百萬計(jì)的曲庫(kù)進(jìn)行初步篩選,選出幾百個(gè)相對(duì)符合用戶口味的候選歌曲;
- 排序,是把這幾百個(gè)候選歌曲通過深度學(xué)習(xí)、因子分解機(jī)等算法進(jìn)行精準(zhǔn)的個(gè)性化排序。
召回的三種主要方式大概解釋一下:
- 協(xié)同過濾,基于用戶的行為數(shù)據(jù),如聽過的歌曲或者個(gè)人標(biāo)簽找到相似用戶或者相似內(nèi)容;
- 基于內(nèi)容,內(nèi)容標(biāo)簽化,構(gòu)建完整的用戶畫像,然后根據(jù)內(nèi)容相似度進(jìn)行匹配;
- 基于熱門 ,和你相似品味的用戶聚合成一個(gè)圈,圈里的人喜歡什么,就推給你什么。
這一塊涉及技術(shù)太多,感興趣的同學(xué)也可以自行搜索。
(3)電臺(tái)推薦(搜索召回排序)
電臺(tái)推薦就是以前的FM頻道,現(xiàn)在整合了很多欄目?;镜牧鞒毯屯扑]算法其實(shí)和上面的歌單推薦一樣,只不過歌單變成了電臺(tái),推薦的依據(jù)也從歌單里的歌曲、評(píng)論、收藏、用戶,變成了電臺(tái)的聽眾、主播、標(biāo)簽等。
場(chǎng)景四:云村推薦
(1)云村廣場(chǎng)(搜索召回排序)
網(wǎng)易云音樂以前總是被人說清高、不接地氣、評(píng)論太文青?,F(xiàn)在這個(gè)云村廣場(chǎng)(為了回答這個(gè)問題,我第一次點(diǎn)進(jìn)去看),就是云音樂開始接地氣的證明。點(diǎn)進(jìn)去,我以為自己打開了抖音+快手。
這里用到的短視頻推薦算法應(yīng)該和快手、抖音一樣,使用短視頻的屬性、標(biāo)簽和用戶的口味、標(biāo)簽做匹配,相似性高的或者比較熱門的就進(jìn)行推薦。具體流程也是先召回再排序,可使用的模型較多,這里不好猜。不過短視頻時(shí)代,最吸引眼球的就是圖里這種內(nèi)容,比什么算法都好使。
(2)好友動(dòng)態(tài)(時(shí)間倒序)
這里的動(dòng)態(tài)推薦算法和朋友圈一樣,但是比朋友圈簡(jiǎn)單,就是按你的關(guān)注的人的動(dòng)態(tài),以時(shí)間倒序(最新的排在最前面)進(jìn)行排序。
場(chǎng)景五:視頻推薦(根據(jù)歷史行為精準(zhǔn)推薦)
視頻是云音樂后來推出的一大功能,應(yīng)該也是按照短視頻推薦的方法來進(jìn)行精準(zhǔn)推薦,不同點(diǎn)在于這些視頻主題更加明確,比如第一個(gè)就是華晨宇的采訪,直接推送給聽過華晨宇歌曲、買過華晨宇專輯的用戶即可。
問題分析
用云音樂這么久,有一些問題大家肯定也比較困惑,這里做個(gè)簡(jiǎn)單分析:
問題1:馬太效應(yīng)
19年之前網(wǎng)易云的推薦算法存在一個(gè)明顯的問題:什么熱門推什么。
比如下面這個(gè)歌單,在我的推薦歌單列表中出現(xiàn)過不下100次,我懷疑給每個(gè)聽過英文歌的用戶都推了這個(gè)歌單,在座的如果有人聽過,麻煩評(píng)論區(qū)留個(gè)“1”,一起驗(yàn)證一下。
這樣的問題在于,越是熱門的歌單越容易得到曝光,曝光越多也就越熱門,而新歌單就很難得到曝光。這個(gè)問題在很多APP上都存在,解決方法也比較成熟。
可以看到,從2019年開始,云音樂的算法團(tuán)隊(duì)做了改進(jìn),把基于熱門的召回降低了權(quán)重,所以現(xiàn)在這種現(xiàn)象在逐漸減少。(也不排除是我的聽歌口味變了)
問題2:重復(fù)推薦
現(xiàn)在很多推薦算法存在一個(gè)致命問題,就是重復(fù)推薦。在云音樂里,當(dāng)你聽過一些歌曲,就使勁推送相似的歌曲,比如我有一次聽了小鱷魚,之后就使勁給我推兒歌,這很容易引起用戶的反感。
這其實(shí)是推薦算法中著名的EE(Exploitation,Exploration)問題。EE問題中的Exploitation(開發(fā))就是:對(duì)用戶比較確定的興趣,當(dāng)然要盡可能迎合用戶口味,而Exploration(探索)就是:光對(duì)著用戶已知的興趣使用,用戶很快會(huì)膩,所以要不斷探索用戶新的興趣才行。
如何解決這個(gè)問題,我想云音樂一定使用了BANDIT一類的強(qiáng)化學(xué)習(xí)方法來優(yōu)化,下面舉個(gè)例子幫助大家理解:
一個(gè)賭徒,要去搖老虎機(jī),走進(jìn)賭場(chǎng)一看,一排老虎機(jī),外表一模一樣,但是每個(gè)老虎機(jī)吐錢的概率可不一樣,他不知道每個(gè)老虎機(jī)吐錢的概率分布是什么,那么每次該選擇哪個(gè)老虎機(jī)可以做到最大化收益呢?
最好的辦法是去試一試,不是盲目地試,而是有策略地快速試一試,這些策略就是Bandit算法。假設(shè)我們已經(jīng)通過一些數(shù)據(jù),得到了當(dāng)前每個(gè)老虎機(jī)的吐錢的概率,如果想要獲得最大的收益,我們會(huì)一直搖哪個(gè)吐錢概率最高的老虎機(jī),這就是Exploitation。
但是,當(dāng)前獲得的信息并不是老虎機(jī)吐錢的真實(shí)概率,可能還有更好的老虎機(jī)吐錢概率更高,因此還需要進(jìn)一步探索,這就是Exploration。
最后,云音樂里很多模塊的推薦算法其實(shí)都非常相似,但因?yàn)榫唧w實(shí)施的算法團(tuán)隊(duì)不同,細(xì)節(jié)上肯定有所差異,效果也不會(huì)完全一樣。對(duì)于EE問題的解決,以及如何提高用戶粘性,想必算法團(tuán)隊(duì)也做了很多嘗試,所以才有了這幾年界面、體驗(yàn)的不斷改善。
其實(shí),有個(gè)問題不解決,推薦算法做的再好也沒用——版權(quán)。所以網(wǎng)易云音樂的未來將何去何從,讓我們保持關(guān)注吧。
歡迎在文末或者關(guān)注公眾號(hào)留言交流~
作者:圖靈的貓,香港中文大學(xué) (深圳) 計(jì)算機(jī)博士;微信公眾號(hào):「圖靈的貓」
本文由 @圖靈的貓 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)許可,禁止轉(zhuǎn)載
題圖來自Unsplash,基于CC0協(xié)議
1
對(duì)于網(wǎng)易云音樂APP來說沒有周杰倫歌曲版權(quán)這一點(diǎn)真的將大量用戶拒之門外,要不是因?yàn)橄矚g網(wǎng)易的推薦歌單,我可能真的要完全卸載了
+1
咪咕音樂有
有理有據(jù),清楚明了,學(xué)習(xí)了!
更多文章,歡迎關(guān)注公號(hào)~
多臂老虎機(jī)可以算強(qiáng)化學(xué)習(xí)了嗎 ?
感謝!受教了 酷~