網易雲音樂是如何推薦歌單給不同使用者的?
阿新 • • 發佈:2020-01-08
因為考慮到非技術從業者,這篇文章我會寫的非常通俗,不出現任何難懂的名詞和概念,更不會有任何涉及到線代、演算法底層的東西。先宣告一點,下面不會出現任何具體演算法實現細節,這是公司機密,但推薦演算法其實是可以通過APP的表現來反推的,不會100%準確,但應該也八九不離十。
推薦依據 推薦演算法不是無根之水,它必須藉助使用者的資料才可以進行推薦。即使是冷啟動,也需要獲得你的微博、微信(你的登入方式)或其他已註冊使用者的熱門喜好。具體的資料包括
- 瀏覽記錄
- 頁面停留時間
- 歌曲播放次數
- 點選歌曲但未播放記錄
- 點選歌曲且播放完成記錄
- 歌曲、歌單、歌手的收藏記錄
- 歌單播放次數和歌曲所屬標籤
- 個人屬性(性別,年齡,地理位置等)
推薦演算法 在說歌單的同時,也會給大家看看網易雲音樂這個APP裡一共有哪些地方用到了推薦演算法: 場景一:開啟APP時的彈出廣告(很煩人對吧,我都懶得點跳過) 演算法:有時候開啟的廣告會不一樣,有時候會重複。全屏廣告費用很高,假如不是獨佔型別的,那這塊用到的可能有一些簡單的人群匹配或者使用者畫像。如果是單次廣告獨佔,則有可能是按照廣告商的要求投放。18年之前沒有這個廣告功能,但是網易要恰飯的,能理解。 場景二:私人FM 私人FM和電音位於個人主頁的頭部位置,使用者點選率非常高。因為二者本質上很相似,這裡只談FM的演算法。
- 每日推薦:這裡用到的是單曲推薦,具體演算法不難想到,從我的每日推薦歌曲來看,基本是
- 我聽過的歌手的其他單曲
- 我聽過的歌曲所屬分類的其他熱門歌曲
- 我聽過、收藏過、評論過的歌曲
- 聽過我聽過歌曲的人,聽過的其他熱門歌曲
- 召回,是從數以百萬計的曲庫進行初步篩選,選出幾百個相對符合使用者口味的候選歌曲
- 排序,是把這幾百個候選歌曲通過深度學習、因子分解機等演算法進行精準的個性化排序
- 協同過濾,基於使用者的行為資料,如聽過的歌曲或者個人標籤找到相似使用者或者相似內容
- 基於內容,內容標籤化,構建完整的使用者畫像,然後根據內容相似度進行匹配
- 基於熱門 ,和你相似品味的使用者聚合成一個圈,圈裡的人喜歡什麼,就推給你什麼
- 雲村廣場:網易雲音樂以前總是被人說清高、不接地氣、評論太文青。現在這個雲村廣場(為了回答這個問題,我第一次點進去看),就是雲音樂開始接地氣的證明。點進去,我以為自己打開了抖音+快手。
問題分析 用雲音樂這麼久,有一些問題大家肯定也比較困惑,這裡做個簡單分析 問題1:馬太效應 19年之前網易雲的推薦演算法存在一個明顯的問題:什麼熱門推什麼。比如下面這個歌單,在我的推薦歌單列表中出現過不下100次,我懷疑給每個聽過英文歌的使用者都推了這個歌單,在座的如果有人聽過,麻煩評論區留個“1”,一起驗證一下。 這樣的問題在於,越是熱門的歌單越容易得到曝光,曝光越多也就越熱門,而新歌單就很難得到曝光。這個問題在很多APP上都存在,解決方法也比較成熟。可以看到,從2019年開始,雲音樂的演算法團隊做了改進,把基於熱門的召回降低了權重,所以現在這種現象在逐漸減少。(也不排除是我的聽歌口味變了) 問題2:重複推薦 現在很多推薦演算法存在一個致命問題,就是重複推薦。在雲音樂裡,當你聽過一些歌曲,就使勁推送相似的歌曲,比如我有一次聽了小鱷魚,之後就使勁給我推兒歌,這很容易引起使用者的反感。 這其實是推薦演算法中著名的EE(Exploitation,Exploration)問題。EE問題中的Exploitation(開發)就是:對使用者比較確定的興趣,當然要儘可能迎合使用者口味,而Exploration(探索)就是:光對著使用者已知的興趣使用,使用者很快會膩,所以要不斷探索使用者新的興趣才行。如何解決這個問題,我想雲音樂一定使用了BANDIT一類的強化學習方法來優化,下面我舉個例子幫助大家理解:
一個賭徒,要去搖Tigger機,走進賭場一看,一排Tigger機,外表一模一樣,但是每個Tigger機吐錢的概率可不一樣,他不知道每個Tigger機吐錢的概率分佈是什麼,那麼每次該選擇哪個Tigger機可以做到最大化收益呢? 最好的辦法是去試一試,不是盲目地試,而是有策略地快速試一試,這些策略就是Bandit演算法。假設我們已經通過一些資料,得到了當前每個Tigger機的吐錢的概率,如果想要獲得最大的收益,我們會一直搖哪個吐錢概率最高的Tigger機,這就是Exploitation。 但是,當前獲得的資訊並不是Tigger機吐錢的真實概率,可能還有更好的Tigger機吐錢概率更高,因此還需要進一步探索,這就是Exploration。最後,雲音樂裡很多模組的推薦演算法其實都非常相似,但因為具體實施的演算法團隊不同,細節上肯定有所差異,效果也不會完全一樣。對於EE問題的解決,以及如何提高使用者粘性,想必演算法團隊也做了很多嘗試,所以才有了這幾年介面、體驗的不斷改善。 其實,有個問題不解決,推薦演算法做的再好也沒用——版權,網易雲音樂的未來將何去何從,讓我們保持關注吧。