Spotify,為什么音樂軟件總能猜到我口味?
Spotify 也是譯者最喜歡的音樂軟件了,和這篇文章的作者一樣,對于 Sptify 的喜愛大多歸功于其音樂推薦系統,那簡直就是一個百寶箱,你總能聽到自己喜歡的歌曲。這篇文章雖然是一篇技術文,但是讀起來并不費勁,希望你能通過此文了解一些推薦系統背后的秘密。
對于音樂應用軟件 Spotify 的用戶來說,每周一都會收到 Spotify 的「每周推薦」(Discover Weekly)——包含了30首各種風格但你從未欣賞過的歌曲混雜,神奇的是每一首對你來說都是珍品。
Spotify 是我最鐘意的音樂應用了,尤其是它的 Discover Weekly 。讓我覺得它是那么的了解我,它比任何人都要了解我的音樂品好,每一周的推薦音樂都令我十分滿意。我感覺不到它的存在,卻又覺得它無處不在。
如果你也是為音樂狂的話,且讓我來好好向你介紹一下我最好的虛擬音樂伙伴:
我的 Discover Weekly 頁面
事實證明,并不是只有我一個人沉迷于 Discover Weekly ,它有著大量的擁躉,甚至于 Spotify 因為這個功能大受歡迎而重新思考商業模式,投入大量的資源來推薦基于算法的音樂列表。
自從2015年Spotify推出 Discover Weekly 之后,我就開始了解它的工作機理(我同時也是Spotify 的粉絲,有時候我會把自己當成該公司的產品經理來研究這個產品)。
經過了三個星期的研究發現,我很高興能夠了解到一些帷幕背后的那股“神秘力量”。
那么 Spotify 究竟是如何向每個用戶推薦那30首音樂的呢?
先讓我們來了解一下音樂推薦的歷史發展歷程,來看看其他音樂公司是如何推薦音樂的,之后我們再來對比一下 Spotify 能夠從中勝出的緣由。
早在2000年,Songza 就開始了音樂推薦,不過那時候是人工挑選歌曲湊成歌單推薦給用戶,Songza 會邀請一些音樂方面的行家來做歌單。這就不可避免地造成了歌單實際上代表了“專家們”的品味,而且也不能滿足每個人音樂品好的細微差別。
和 Songza 一樣,身為音樂推薦領域的早期玩家, Pandora 也有著自己的音樂推薦系統。和 Songza 不同,Pandora 會讓用戶用關鍵詞來描述每一首歌曲,然后給這些歌曲打上相應的標簽,隨后會用代碼簡單篩選一下歌曲,讓相似的音樂組成歌單推薦給用戶。
在同一時期,一個來自麻省理工媒體實驗室的一家音樂公司——The Echo Next 誕生了。
The Echo Next 徹底地顛覆了整個音樂推薦領域,讓音樂推薦向個性化邁進了一大步。The Echo Next 用算法來分析歌曲的旋律和文本,從而實現音樂識別、個性化推薦、歌單創建和音樂分析。
Last.fm 則采用了一種叫做「協同過濾」的一種方法來挑選用戶可能喜歡的音樂,并且至今都在升級使用。
以上是其他音樂軟件的推薦系統的簡介,那么 Spotify 是如何構建自己的推薦系統的,它是如何從中脫穎而出的呢?
Spotify 的三種推薦模型
事實上, Spotify 并不是只用了一種推薦方法,它綜合了其他音樂軟件使用的幾種最好的推薦策略構成了它獨一無二強大的推薦系統。
在 Discover Weekly 背后, Spotify 使用了三種主要的推薦模型:
- 協同過濾(上面介紹Last.fm的時候提到過),主要工作機理是分析你的用戶行為和其他人的用戶行為。
- 自然語言處理,用來處理分析文本。
- 音頻模型,用來處理音樂源文件音軌和聲道。
Spotity 推薦系統簡略圖
下面我們來較為詳細地了解一下每一種推薦模型:
1. 協同過濾
一提到「協同過濾」,可能更多的人想到的是 Netflix 。Netflix 是第一家采用協同過濾技術來搭建推薦系統的公司,它們使用評分制度來了解用戶,進而推薦給用戶和他們喜好相似的用戶喜歡的影片。
自從 Netflix 采用協同過濾并取得成功之后,幾乎所用評分制的推薦系統都采用了這種技術。
和 Netflix 不同,Spotify 并沒有與之類似的評分制度。事實上,Spotify 通過一些隱性反饋——比如我們是否會把某首歌曲保存起來,或者是我們在聽完一首歌曲之后是否會瀏覽歌手的主頁。
但究竟什么是協同過濾,它是如何工作的?
下面有一張生動的圖片可以回答這個疑問:
Spotify “協同過濾”
上面這兩個人都有自己喜歡的歌曲:一個喜歡P,Q,R和S,另一個喜歡Q,R,S和T,協同過濾系統就會利用這些數據。
“你們兩個喜歡的四首歌曲當中有三首是相同,所以你們很有可能是品好相似的用戶。所以你們有很大的概率喜歡對方喜歡自己卻沒有聽過的音樂內容。”
之后協同過濾系統就會給第一位用戶推薦歌曲P,給第二位用戶推薦歌曲T。
那么 Spotify 是如何通過這些概念做到利用百萬用戶的音樂偏好來給其他海量的用戶推薦音樂的呢?
通過算法,利用python的函數庫來實現。
上圖表示的是用戶-歌曲矩陣,事實上,真正的用戶-歌曲矩陣是巨大的。每一行代表一位用戶,一共有1.4億行(如果你使用 Spotify 的話,那么你就是其中一行);每一列代表著 Spotify 數據庫中的3千萬歌曲。之后,python 代碼會處理矩陣,將其進行因式分解。
復雜的數學式
處理完之后,我們將會得到兩種類型的向量:X和Y。X稱為用戶向量,代表了每一名用戶的音樂品好;Y稱為歌曲向量,描述了每一首歌曲的內容。
用戶-歌曲矩陣
現在我們得到了1.4億個用戶向量和3千萬個歌曲向量,這些向量對于用戶來說就是沒有用的數字,但是對于這家公司來說,卻是威力無比。
為了了解我的音樂品好,可以通過把代表我的向量和其他所有用戶進行對比,進而找到和我趣味相投的人。對于代表歌曲的向量也同樣適用,比較所有歌曲向量,你可以找到相似程度高的相關音樂。
協同過濾已經足夠有用,但是 Spotify 通過引入其他方式來讓推薦系統變得更好。
2. 自然語言處理
Spotify 的第二種主要推薦模型叫做自然語言處理,自然語言處理所應用的數據資源全部來自于互聯網——訪問記錄,網上新發表的文章,博客和其他網上的一些文本信息。
自然語言處理——計算機了解人類語言的方式——其本身就是一門廣闊的學問。
由于文章篇幅,我不能在這里詳細介紹自然語言處理背后的詳細原理,但是我可以給你一個通俗的解釋: Spotify 會爬取網上的各種音樂資訊。
樂評人寫的博客,音樂愛好者發的文章……通過這種方法來了解當下人們在討論什么樣的音樂,在評論時他們使用了什么樣的語言描述他們的感受,并且還會發現風格相似的音樂人和歌曲。
Spotify 具體是如何運用自然語言處理的我并不知道,但是我可以向你介紹一下 The Echo Nest 是如何使用它的:他們把網絡資訊打包成一個叫做“文化向量”(cultural vectors)或“重要關鍵字”(top terms)。
每一位藝術家和歌曲有著成百上千的關鍵詞,并且每天都是變化的。每一個關鍵字都有自己的權重,權重越高就代表這個關鍵字越能描述這為藝術家或這首歌曲。
cultural vectors /top terms
之后,和協同過濾相似,自然語言處理會把這些關鍵字和權重處理為向量模式,然后判斷音樂之間的相似性。
3. 原始音頻模型
首先,你可能會問:我們已經從前兩種處理模型當中獲取了那么多的數據,為什么還要引入第三種推薦模型?
- 第一,引入原始音頻模型可以提高整個推薦模型的準確性。
- 第二,但是真正的意義之所在,和前兩種模型形式不同,原始音頻模型可以處理新發行的音樂。
假如,你有一位音樂唱作者朋友在Spotify發表了他的新作,但是只有50名用戶聽了這首歌。在這種情況下,Spotify 就收集不到足夠的信息用來「協同過濾」。
在網上也找不到任何關于這首歌曲的相關描述,自然語言處理也就涉及不到。好在的是原始音頻處理能夠識別新發表的作品和流行作品音軌之間的不同,這樣一來,你朋友的作品將有可能和流行歌曲一起被收錄到 Discover Weekly 中。
下面我們就來看看原始音頻模式究竟是如何工作的。
答案是卷積神經網絡,卷積神經網絡也可用于面部識別技術。在 Spotify 的例子當中,卷積神經網絡用來處理音頻數據而不是像素。
下面有一張卷積神經網絡模型的實例樣圖:
如圖所示,左邊四個較粗的豎條代表四個卷積層,右邊三個較細的豎條代表了密集層。向卷積層中輸入代表音樂模型的時間頻率,這些從頻譜中分離出來的時間頻率將會被串聯起來。
音樂模型將會通過這些卷積層,在最后一個卷積層之后,你會看到一個全局時間池層(global temporal pooling layer),它將會貫穿整個時間軸,不停計算音樂中每一刻的頻率特性。之后,卷積神經網絡將會“弄懂”整首音樂,包括音樂中的拍子記號、音調、風格、節奏等。
下面這幅圖就是 Daft Punk 的《Around the World》 截選30秒的片段的音樂特性:
最終,因為Spotify 掌握了這些最根本的音樂特性,它才能發現音樂之間的相似性,給用戶推薦和他們歷史記錄中相似的音樂。當然,這三種推薦模型只是整個推薦系統中的一部分,還有其他比如儲存大量數據的數據庫,處理龐大矩陣和音樂資訊的機器等等。
最后,我希望我寫的這些能夠為你提供有用的信息,并且可以滿足你的好奇心?,F在,我要去欣賞 Discover Weekly 推薦給我的音樂了!
作者:Sophia Ciocca
譯者:dogxun,微博:@狗遜,公眾號:譯指禪(ID:xinhuayuanok)
本文由 @譯指禪 授權發布于人人都是產品經理,未經作者許可,禁止轉載
題圖來自網絡
感覺蝦米音樂和這個很像,包括他們也會有每日30首類似的概念。
蝦米用戶量還是太少,第一種就不行。這些跟運營都少不了的
國內用不了吧?
好高深,厲害
人以類聚 曲以群分
好的去用spotify了
QQ音樂和網易音樂的推薦太太渣了,它們的pm和算法技術來看看這個能解決不
雖然不清楚他們兩家的推薦系統,但現在主流的應該都是用協同過濾吧,只有細節上的區別吧