Spotify如何瞭解你?
正在載入... 0:00 11:33
這個星期一---就像它之前的每個星期一一樣 - 超過1億Spotify使用者找到了一個新的播放列表,等待著他們名為Discover Weekly。這是他們以前從未聽過的30首歌曲的自定義混音帶,但可能會喜歡,而且它非常神奇。{#43a9}
我是Spotify的忠實粉絲,尤其是Discover Weekly。為什麼?這讓我感到 被人看到了。 它知道我的音樂在我的整個生活的味道比任何人更曾經擁有,我每週都多麼令人滿意的 恰到好處 ,與我可能永遠不會發現自己或已知我想軌道始終高興。{#ad7d }
對於那些住在隔音岩石下的人,讓我向您介紹我的虛擬最好的朋友:{#589d} Spotify Discover Weekly播放列表 - 特別是我的播放列表。
事實證明, 我並不是唯一一個對"發現週刊"的痴迷 。使用者群為此瘋狂,這促使Spotify重新考慮其重點,並將更多資源投入到基於演算法的播放列表中。{#98af}
自從2015年發現每週釋出以來,我一直渴望知道它是如何運作的(更重要的是,我是Spotify fangirl,所以我有時想假裝我在那裡工作並研究他們的產品。)經過三週瘋狂的谷歌搜尋,我覺得我終於在幕後瞥了一眼。{#4de0}
那麼Spotify如何為每個人每週選擇30首歌曲做出如此驚人的工作呢?讓我們縮小一下,瞭解其他音樂服務如何處理音樂推薦,以及Spotify如何做得更好。{#d50a}
線上音樂策展簡史{#784d}
早在2000年代,Songza就開始使用 手動策展 來線上音樂策劃場景為使用者建立播放列表。這意味著"音樂專家"團隊或其他人類策展人會將他們認為聽起來不錯的播放列表放在一起,然後使用者就會收聽這些播放列表。 (之後,Beats Music將採用同樣的策略。)手動策劃工作正常,但它是基於特定策展人的選擇,因此 無法考慮每個聽眾的個人音樂品味。 {#3e68}
像Songza一樣,Pandora也是數字音樂策展的原創者之一。它採用了稍微高階的方法,而不是 手動 標記 歌曲的 屬性 。這意味著一群人聽音樂,為每首曲目選擇了一堆描述性的單詞,並相應地標記了曲目。然後,潘多拉的程式碼可以簡單地過濾某些標籤,以製作類似音樂的播放列表。{#809d}
大約在同一時間,麻省理工學院媒體實驗室的一個名為 The Echo Nest 的音樂情報機構誕生了,它採用了一種激進的,前沿的個性化音樂方法。 Echo Nest使用 演算法分析 音樂 的音訊和文字內容 ,使其能夠執行音樂識別,個性化推薦,播放列表建立和分析。{#d499}
最後,採用另一種方法是Last.fm,它現在仍然存在,並使用一個稱為 協同過濾 的過程來識別其使用者可能喜歡的音樂,但稍後會更多。{#808c}
因此,如果這是其他音樂策展服務處理建議的方式,Spotify的魔法引擎如何執行?與其他任何服務相比,它如何更準確地確定個人使用者的品味?{#1b70}
Spotify的三種推薦模型{#354a}
Spotify實際上並沒有使用單一的革命性推薦模型。相反, 它們將其他服務使用的一些最佳策略混合在一起,以建立自己獨特的強大發現引擎。 {#80F3實際}
要建立Discover Weekly,Spotify使用三種主要型別的推薦模型:{#606d}
- 協作過濾 模型(即Last.fm最初使用的模型),用於分析 您的 行為和 其他 行為。{#81af} {#81af}
- 自然語言處理(NLP) 模型,用於分析 文字。 {#a0c4} {#a0c4}
- 音訊 模型,分析 原始音軌 自己 。{#72ec} {#72ec}
圖片來源: Ever Wonder Spotify如何發現每週的作品?資料科學 ,通過Galvanize。
讓我們深入瞭解每種推薦模型的工作原理!{#2359}
建議模型#1:協作過濾{#bb57}
首先,一些背景:當人們聽到"協同過濾"這個詞時,他們通常會想到Netflix,因為它是最早使用這種方法為推薦模型提供動力的公司之一,將使用者的星級電影評級告知其瞭解哪些電影推薦給其他類似使用者。{#ef2f}
在Netflix成功之後,協作過濾的使用迅速傳播,現在通常是任何試圖製作推薦模型的人的起點。{#ec37}
與Netflix不同,Spotify沒有基於星形的系統,使用者可以根據該系統評估他們的音樂。相反,Spotify的資料是 隱式反饋 - 具體來說,是曲目的 流計數 和其他流資料,例如使用者是否將曲目儲存到他們自己的播放列表,或者在聽完歌曲後訪問了藝術家的頁面。{#7a91 }
但是什麼 是 協同過濾,真正的,它是如何工作的?這是一個高階概述,在一個快速對話中解釋:{#9eda} 影象來源: Spotify的協同過濾 ,由Erik Bernhardsson,前Spotify提供。
這裡發生了什麼?這些人中的每一個都有軌道偏好:左邊的那個喜歡軌道P,Q,R和S,而右邊的那個喜歡軌道Q,R,S和T. {#03ab}
協同過濾然後使用該資料說:{#b468}
"嗯......你們都喜歡三首相同的曲目--- Q,R和S ---所以你們可能是類似的使用者。因此,你們每個人都可能會喜歡其他人聽過的曲目,你還沒有聽說過。" {#E782}
因此,它建議右邊的那個檢查軌道P ---唯一沒有提到的軌道,但他的"相似"對應物享受---並且左邊的那個檢查軌道T,出於同樣的推理。簡單吧?{#2a40}
但Spotify如何在實踐中使用該概念來根據數百萬其他使用者的偏好計算數百萬使用者的建議曲目?{#354c}
使用矩陣數學,用Python庫完成!{#03d7}
實際上,你在這裡看到的這個矩陣是 巨大的 。 每行代表Spotify的1.4億使用者之一--- 如果你使用Spotify,你自己就是這個矩陣中的一排--- 每列代表 Spotify資料庫中 3000萬首歌曲 中的 一首 。{#2a4e}
然後,Python庫執行這個冗長,複雜的矩陣分解公式:{#0370} 一些複雜的數學......
完成後,我們最終得到兩種型別的向量,這裡用X和Y表示 .X是 使用者 向量 ,表示單個使用者的品味, Y是 歌曲 向量 ,代表一首單曲的簡檔。{#7f86} 使用者/歌曲矩陣產生兩種型別的向量:使用者向量和歌曲向量。 圖片來源: 從創意到執行:Spotify的發現每週 ,由Chris Johnson,前Spotify。
現在我們有1.4億使用者向量和3000萬個歌曲向量。這些向量的實際內容只是一堆基本上沒有意義的數字,但在比較時非常有用。{#2acc}
為了找出哪些使用者的音樂品味與我的最相似,協同過濾將我的向量與所有其他使用者的向量進行比較,最終吐出哪些使用者是最接近的匹配。 Y向量, 歌曲也是如此 :您可以將單個歌曲的向量與所有其他歌曲進行比較,並找出哪些歌曲與所討論的歌曲最相似。{#a9e9}
協作過濾做得非常好,但Spotify知道他們可以通過新增另一個引擎來做得更好。輸入NLP。{#a3da}
建議模型#2:自然語言處理(NLP){#4994}
Spotify採用的第二種推薦模型是 自然語言處理(NLP)模型 。顧名思義,這些模型的源資料是常規 詞 :跟蹤元資料,新聞文章,部落格和網際網路上的其他文字。{#7a47}
自然語言處理是計算機理解人類語音的能力,它本身就是一個廣闊的領域,通常通過 情感分析API 來加以利用。{#8be8}
NLP背後的確切機制超出了本文的範圍,但是這裡發生的事情非常高:Spotify不斷尋找部落格文章和其他有關音樂的書面文字,以便弄清楚人們對特定藝術家和歌曲的看法---哪些形容詞和特定語言經常用於指代那些藝術家和歌曲,以及哪些其他作者和歌曲也在與他們一起討論。{#2505}
雖然我不知道Spotify如何選擇處理這些已刪除資料的具體細節,但我可以根據Echo Nest如何使用它們來提供一些見解。他們將Spotify的資料打包成他們所謂的"文化載體"或"頂級術語"。每個藝術家和歌曲都有成千上萬的頂級術語,每天都有變化。每個術語都有一個相關的權重,與其相對重要性相關 - 大概是,某人用該術語描述音樂或藝術家的概率。{#61e9} Echo Nest使用的"文化載體"或"頂級術語"。圖片來源:The Echo Nest的聯合創始人布萊恩·惠特曼 ( Brian Whitman)的 音樂推薦如何運作 - 並且不起作用 。
然後,與協同過濾非常相似,NLP模型使用這些術語和權重來建立歌曲的矢量表示,該矢量表示可用於確定兩首音樂是否相似。很酷,對嗎?{#d7a2}
建議模型#3:原始音訊模型{#2120}
首先,一個問題。你可能在想:{#4631}
索菲亞,我們已經擁有前兩個模型的大量資料!為什麼我們也需要分析音訊本身? {#b2bc}
首先,新增第三個模型進一步提高了音樂推薦服務的準確性。但這種模式也成為一個次要目的:不像前兩種型別, 原始音訊車型採取 新的 歌曲進去。 {#19b7從}
舉例來說,你的創作歌手朋友在Spotify上發了一首歌。也許它只有50個聽眾,所以很少有其他聽眾可以協同過濾它。它也沒有在網際網路上的任何地方提及,所以NLP模型不會接受它。幸運的是,原始音訊模型不會區分新曲目和流行曲目,因此在他們的幫助下,您朋友的歌曲可能會與流行歌曲一起釋出在Discover Weekly播放列表中!{#6ccc}
但是我們如何分析 原始音訊資料 呢?{#d72b}
使用 卷積神經網路 !{#358d}
卷積神經網路與面部識別軟體中使用的技術相同。在Spotify的情況下,它們已被修改用於音訊資料而不是畫素。這是一個神經網路架構的例子:{#56ef} 影象來源: 通過深度學習推薦Spotify上的音樂 ,Sander Dieleman。
這個特殊的神經網路有四個 卷積層 ,左邊是厚條,三個是密集層,右邊是較窄的條。輸入是音訊幀的時頻表示,然後連線或連結在一起,形成頻譜圖。{#5041}
音訊幀通過這些卷積層,在通過最後一個層之後,您可以看到"全域性時間池"層,它跨越整個時間軸,有效地計算歌曲時間內學習特徵的統計資料。 {#94d2}
在處理之後,神經網路吐出對歌曲的理解,包括諸如估計的 時間簽名,鍵,模式,節奏 和 響度之類的特徵。 下面是Daft Punk為"環遊世界"提供的30秒片段的資料圖。{#8485} 圖片來源: Tristan Jehan和David DesRoches,來自Echo Nest 。
最終,通過閱讀歌曲的主要特徵,Spotify可以根據自己的收聽歷史瞭解歌曲之間的基本相似性,從而瞭解哪些使用者可能會喜歡它們。{#cdf7}
這涵蓋了三種主要型別的推薦模型的基礎知識,這些模型為Spotify的Recommendations Pipeline提供支援,並最終為Discover Weekly播放列表提供支援!{#0881}
當然,這些推薦模型都與Spotify更大的生態系統相關聯,後者包括大量資料儲存,並使用 大量 Hadoop叢集 來擴充套件建議,使這些引擎能夠處理巨大的矩陣,無盡的線上音樂文章和大量的音訊檔案{#61d6}
我希望這能提供豐富的資訊並激發你的好奇心。現在,我將通過自己的Discover Weekly工作,找到我最喜歡的音樂,同時欣賞幕後發生的所有機器學習。 :notes:{#c62e}
還要感謝 ladycollective 閱讀本文並提出修改建議。 {#0aee}
公眾號:銀河系1號
聯絡郵箱:[email protected]
(未經同意,請勿轉載)