search
尋找貓咪~QQ 地點 桃園市桃園區 Taoyuan , Taoyuan

揭秘 Spotify 的「每周推薦」:AI 如何找到你會喜歡的新歌?

編者按:Spotify的Discover Weekly非常神奇,每周都會給用戶推薦30首他們可能會喜歡的新歌。大量的用戶表示,這些新歌非常符合他們的「胃口」。今年6月份,Spotify宣布全球活躍用戶超過1.4億人,是Apple Music用戶的5倍還要多,其中Discover Weekly功不可沒。Spotify是如何做到的呢?軟體工程師Sophia Ciocca花費了3周,查閱了大量的資料對其工作原理進行了分析。原文發表在Medium,由36氪編譯。

每到周一的時候,就會有超過1億的Spotify用戶發現,應用中會有一個新的播放列表等待著他們。這裡面包含有Spotify(準確來說是Spotify的人工智慧技術)為用戶「定製」的、以前從未聽過的,但很可能會喜歡的30首歌曲。它的名字叫Discover Weekly,它非常神奇。

我是Spotify的忠實冬粉,尤其喜歡Discover Weekly這一功能。它讓我感覺很舒服,比我身邊任何一個人都更了解我的音樂品味。在每周都能給我推薦一些我可能永遠不會發現,但非常喜歡的音樂。

而且事實證明,我並不是唯一一個痴迷於Discover Weekly的人,用很多Spotify的用戶群為之瘋狂。這促使Spotify對其非常重視,將更多資源投入到這個基於演算法的推薦播放列表中。

自從2015年Discover Weekly首次亮相以來,我一直很想知道它是如何運作的。在瘋狂地使用谷歌搜索了三周后,我終於有機會看到了其幕後的秘密。

那麼,Spotify是如何做到給每個用戶每周都挑選30首符合他們喜好的歌曲的呢?讓我們先看看其他音樂服務是如何做音樂推薦的,以及Spotify是如何做得更好的。

在線音樂推薦歌單簡史

早在2000年,Songza就開始使用「人工精選」的方式來為用戶創建音樂播放列表。「人工精選」意味著,一些「音樂專家」或其他的相關人員,會根據自己的品味來製作歌單。(後來,Beats Music也採用了同樣的策略。)人工的調整效果還不錯。但它是手動的,顯得非常簡單。而且它還沒有考慮到每個用戶的音樂品味的差別。

和Songza一樣,Pandora也為用戶提供了一些類似於歌單的音樂播放列表。它採用了一種稍微高級的方法,並不是通過手動標記歌曲的屬性。而是讓一群人聽音樂,並為每首歌選了一些描述性的單詞,並用這些單詞對歌曲進行標記。然後,Pandora的代碼可以過濾某些標籤,從而製作出聽起來類似的歌單。

大約在同一時間,來自麻省理工學院媒體實驗室的音樂情報機構Echo Nest誕生了,它採用了一種更為先進的個性化音樂推薦方式。Echo Nest利用演算法分析音樂的音頻和文本內容,使其能夠進行音樂識別、並進行個性化推薦、創建歌單並對其進行分析。

最後,Last.fm採用了一種不同的方式,它使用一種名為「協同過濾(collaborative filtering)」的方法來識別用戶可能會喜歡的音樂。稍後再詳細介紹。

我們知道了其他音樂服務提供推薦列表的方式,那麼Spotify是如何做的呢?它似乎比其他任何音樂服務都更能準確地瞄準用戶的品味。

Spotify的3種推薦模式

實際上,Spotify並沒有採用一種革命性的歌曲推薦模式,而是將其他服務使用的一些最佳策略組合在一起,打造了一個獨特而又強大的音樂發現引擎。

為了創建Discover Weekly,Spotify採用了三種主要的音樂推薦模式:

  • 協同過濾模型(即Last.fm最初使用的模式),它通過分析用戶使用行為進行工作。

  • 自然語言處理(NLP)模型,通過分析文本進行工作。

  • 原始音頻分析模型,其工作原理是分析原始音頻軌道本身。

接下來,讓我們來看看這些推薦模型是如何工作的。

推薦模型1:協同過濾

如果你了解Netflix的話,你可能對「協同過濾」這個詞不會感到陌生。Netflix是最早使用協同過濾來為用戶做推薦的公司之一。即通過用戶對電影的評價,來判斷影片的屬性以及用戶的喜愛程度,然後綜合用戶的反饋將電影推薦給其他「類似」的用戶。

Netflix使用協同過濾模型取得了成功,它開始迅速傳播開來。就目前而言,基本上每一個想要建立推薦模型的產品,都會選擇從協同過濾入手。

與Netflix不同的是,Spotify並沒有讓用戶對音樂或者歌星進行評價。相反,它使用的是一種隱藏在用戶使用習慣下的反饋——具體來說,就是用戶聽了哪些歌曲,是否將歌曲保存到播放列表中,是否在聽了歌曲之後去訪問了歌星的頁面等等數據。

什麼是協作過濾,它是如何工作的呢?簡單來說,其基本邏輯就像下圖中的對話一樣:

從上圖中看以看出,這兩個人都有一些偏好——左邊的人喜歡P、Q、R和S;右邊的人喜歡Q、R、S和T。

通過協同過濾對這一數據分析之後,可以初步得出這樣的結論:

「這兩個人同時喜歡Q、R和S——所以他們可能是相同類型的用戶。所以,他們都有可能會喜歡對方聽過,但自己沒有聽過的歌曲。」

然後就給右邊的那個人推薦P,給左邊的那個人推薦T?很顯然,並不是這麼簡單。

那Spotify是如何利用這一概念,並計算數以百萬計的用戶,然後根據這些用戶的偏好去推薦歌曲呢?

如下圖所示,是用Python庫來完成的。

這是一個非常簡化的模型,用戶如果聽過一首歌曲,那麼就會標註為1,否則為0。Spotify使用的模型遠比這複雜

實際上,這個矩陣是非常龐大的。每一行代表了Spotify的1.4億用戶之一(如果你使用Spotify,你自己就是這個矩陣中的一行),而每一列都代表了Spotify資料庫中3000萬首歌曲中的一個。

然後,Python庫會運行下面這個冗長而又複雜的矩陣分解公式。

當它結束時,我們會得到兩種類型的向量,這裡用X和Y表示。X是一個用戶矢量(user vector),代表一個用戶的喜好,而Y是一個歌曲矢量(song vector),代表了一首歌的特徵。

通過這種方法,我們獲得了1.4億個用戶的矢量和3000萬首歌曲的矢量。雖然這些矢量只是一堆毫無意義的數字,但使用它們去進行比較則會有很大的用處。

為了找到相似度比較高的用戶,協同過濾可以將一個用戶的矢量與所有其他用戶的矢量進行比較,最後能找到與其最相似的用戶。也可以把一首歌的矢量和其他所有的歌曲矢量進行比較,找出哪兩首歌曲是最相似的。

協同過濾確實是一項不錯的技術,但Spotify做得更好。

推薦模型2:自然語言處理(NLP)

Spotify採用的第二種推薦模型是自然語言處理(NLP)模型。顧名思義,這些模型的源數據是一些常規的辭彙,比如音軌的元數據、新聞報道、博客以及互聯網上的其他文本。

自然語言處理,作為計算機理解人類語言的能力,本身就是一個巨大的領域。通常是通過情緒分析API來實現。

自然語言處理背後的機制已經超出了本文的討論範圍。但我們可以了解一下其大致的工作原理:Spotify不斷地在網路上尋找關於音樂的博客文章和其他書面文本。從中找出人們對特定歌星和歌曲的評論中經常使用的形容詞和語言,以及有那些歌星與歌曲被放在了一起去討論。

雖然我不知道Spotify如何處理他們的抓取數據,但可以通過Echo Nest去進行分析理解。Echo Nest是Spotify在2014年收購的一家音樂分析公司。這部分用到的術語被稱為文化向量(cultural vectors)或頂級形容詞(top terms)。每個歌星和歌曲都有成千上萬的不斷變化的頂級形容詞。每一個形容詞都有一個相關的權重,這反映了它的重要性(簡單來說,一個人會用這個詞來形容音樂的可能性)。

然後,就像協同過濾中一樣,自然語言處理模型使用這些術語和權重來創建歌曲的矢量,用來確定歌曲之間的相似度。很酷,對吧?

說到這,你可能會問:

既然已經有了兩個使用大量數據的模型。為什麼還要分析音頻本身呢?

這背後有兩個原因,第一,原始音頻模型能提高推薦服務的準確性。第二,這個模型和上述的兩個模型不同,會將新歌曲納入到分析範圍中。

就比如說,有一個新的歌手在Spotify上發布了一首歌。但只有50個人聽過,很難收集到足夠的數據對其進行協同過濾處理。而且,在互聯網上它也很少被提及,所以自然語言處理模型也不會處理它。但原始音頻模型不會區分新歌和流行歌曲,所以在它的最用下,新歌手發布的新歌可以和流行歌曲一起出現在Discover Weekly 中。

那麼,Spotify是如何分析原始音頻數據的呢?這看起來非常抽象。

簡單來說,就是使用卷積神經網路。

卷積神經網路是面部識別系統背後的技術。在Spotify中,被修改了用於音頻數據,而不是像素。下面是一個神經網路架構的例子:

如上圖所示,這個特殊的神經網路有四個卷積層-左邊較寬的矩形,三個緻密層-右邊較窄矩形。輸入以音頻幀的時間-頻率表示,然後將它們連接起來形成光譜圖。

音頻幀通過這些卷積層,在最後的卷積層之後,會遇到對整個時間軸進行池化的「全局時域池化」層,並有效地計算出整首歌中學習到的特徵並進行統計。

經過這個過程,神經網路就能對歌曲有所了解,包括時長、節奏、風格、音量、音調等特徵。下面是 Daft Punk 的《Around the World》30 秒鐘片段的分析示例。

最終,通過對這首歌的關鍵特徵的理解,Spotify能夠捕捉到歌曲之間的基本相似性,從而就能根據用戶的播放記錄去推薦歌曲了。

綜合上述的三種推薦模型,就形成了Spotify的Discover Weekly的推薦引擎。

當然,這些推薦模型的準確性與Spotify大規模的生態系統有關。它有海量的數據存儲,可以使用大量的Hadoop集群來擴大推薦範圍,讓這些模型能夠在巨大的矩陣、海量關於歌曲的文本和大量音頻文件的基礎上穩定運行。

原文鏈接:

編譯組出品。編輯:郝鵬程



熱門推薦

本文由 yidianzixun 提供 原文連結

寵物協尋 相信 終究能找到回家的路
寫了7763篇文章,獲得2次喜歡
留言回覆
回覆
精彩推薦