當前位置:
首頁 > 最新 > 人工智慧如何幫你找到好歌:探秘Spotify神奇的每周歌單

人工智慧如何幫你找到好歌:探秘Spotify神奇的每周歌單

機器之心編譯

參與:李澤南

AI 時代音樂 App 的個人推薦系統背後有著什麼樣的技術?本文將以 Spotify 為例為你作出解答。

每周一,超過一億 Spotify 用戶都會接收到等著他們的新版推薦歌單。其中包含了 30 首用戶從未聽過,但很可能會喜歡的音樂。這一功能被稱作 Discover Weekly,它引發了人們的熱議。

本文作者也是 Spotify 的重度用戶,對於 Discover Weekly 更是青睞有加。這一功能讓我感覺到神奇,它的音樂品位超過了我所認識的任何人。每個星期,它都會向我推薦最喜歡的新歌,找到那些我自己永遠無法找到——但喜歡的東西。

它長這個樣子:

我這個星期的 Discover Weekly 歌單。

事實證明,沉迷 Discover Weekly 的並不只是我一個人,現在 Spotify 已經開始轉變思路,試圖在基於演算法的歌曲推薦方面投入更大精力了。

自從 Discover Weekly 在 2015 年出現以來,我一直在試圖研究它背後的技術。它是如何每周為你選好 30 首符合口味的新歌的?首先,讓我們先來了解一下流媒體音樂服務和推薦系統,以及為什麼 Spotify 比它的競爭對手們做得更好。

在線音樂 App 發展簡史

回到 21 世紀初,Songza 開啟了在線音樂服務時代,那個時候,App 還是通過人工管理為用戶提供播放列表的。「人工管理」意味著存在一個「音樂專家」團隊或其他監管者在挑選歌曲編寫播放列表,而用戶拿到的歌單多少取決於個人喜好(後來,Beats Music 也使用了相同的策略)。手工編輯的歌單本身沒有問題,但它們很難符合每位用戶的音樂喜好。

和 Songza 一樣,Pandora 也是在線音樂服務的元老之一,它使用了稍稍先進一些的方法來代替手動編出的歌單——標記歌曲風格。通過讓聽完音樂的用戶為每首歌打上標籤,Pandora 可以簡單地通過篩選標籤的方式來製作播放列表。

與此同時,在著名的 MIT Media Lab 中,Echo Nest 誕生了,它是一個更為先進的個性化音樂推薦系統。Echo Nest 使用演算法分析歌曲的聲音和文本內容,這意味著它可以完成音樂識別、個性化推薦、創建歌單和分析等功能。

最後,Last.fm 又採用了另一種方法並一直沿用到了今天,這種被稱為「協同過濾」的方法與其他方法略有不同。

以上是大多數其他流媒體音樂服務採用的推薦形式,Spotify 神奇的推薦引擎似乎比其他方法更加準確,後者是如何做到的呢?

Spotify 的三種推薦模型

Spotify 其實並沒有發展出依靠單一演算法的推薦模型——它參考了其他服務採用的方法,並整合出了自己的最佳策略,構建了名為 Discovery 的引擎。

為了創建 Discovery Weekly 歌單,Spotify 主要使用了三種推薦系統:

協同過濾模型(與 Last.fm 使用的類似),通過分析你的行為和其他用戶的行為來工作。

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

語音模型,通過分析原始音軌工作。

讓我們來深入了解一下這些推薦模式的運作方式吧。

推薦模型 #1:協同過濾

首先看看背景:當很多人都聽到「協同過濾」這個詞之後就會想起著名在線視頻網站 Netflix,因為這是第一家使用協同過濾驅動推薦引擎的公司之一,Netflix 使用用戶對於電影的打分類獲知人們對電影的喜好程度並向「類似」用戶進行推薦。

在 Netflix 成功之後,這種方法很快傳播開來,現在評星打分系統通常是所有推薦模型的基礎。

但與 Netflix 不同,Spotify 不會讓用戶為歌曲評星。取而代之的是,Spotify 的數據來自於隱式反饋——流媒體服務會記錄我們所聽的歌曲,同時留意其他一些數據,包括用戶是否將歌曲保存在自己的歌單中,以及是否在聽完歌后訪問了藝術家的主頁等等。

但什麼是協同過濾?它是如何工作的?簡而言之,就像 Daft Punk 所演示的:

這裡面發生了什麼?兩個人都有一些自己喜歡的歌,左邊那位喜歡 P、Q、R 和 S,右邊那位喜歡 Q、R、S 和 T。

協同過濾使用以上數據我們可以這樣認為:

「看來你們都喜歡 Q、R 和 S,所以你們很可能是相同類型的用戶。所以你們應該聽聽對方喜歡——而自己沒聽過的那幾首歌。」

所以我們應該給 Thomas(左)推薦歌曲 P,給 Guy-Manuel(右)推薦歌曲 T,很簡單是不是。

但是把這個方法套用在 Spotify 上,實際上需要分析的是數百萬用戶的喜好,推薦的也是數百萬用戶的歌單,所以我們需要用上 Python 庫。

在這裡,你看到的矩陣是龐大的。每一行代表 Spotify 的 1.4 億用戶的一個(如果你是 Spotify 的用戶,你在裡面有自己的位置),每一列代表 Spotify 3000 萬歌曲庫里的一首。

在矩陣交點處,當某用戶聽過一首歌后標記為 1,否則為 0。如果我聽了 Michael Jackson 的《Thriller》,那麼在我這行里代表 Thriller 的位置會標記為 1。(注意:Spotify 已經在嘗試讓其中的數字更加複雜,不再僅限 1 和 0)

隨後我們得到了一個非常稀疏的矩陣——所有人聽過的歌都沒有未聽過的歌多,所以這個矩陣的大部分位置都會被「0」填充。但是,少量的「1」包含著決定性的信息。

隨後,Python 庫會運行下面這個公式:

做一些複雜的數學運算……

當這項工作完成後,我們會得到兩種類型的向量,分別由 X 和 Y 來代表。X 是用戶向量,代表一個用戶的歌曲喜好,Y 是歌曲向量,代表一首歌的熱度。

用戶/歌曲矩陣產生兩種類型的向量:用戶向量和歌曲向量。

現在我們擁有了 1.4 億個用戶向量和 3000 萬歌曲向量了。它們本身只是一些數字,但我們可以使用它們來進行很多比較。為了使用這些數據找到與我相近的用戶,協同過濾使用點積比較了我的向量與所有其他用戶的向量。同樣的事情也發生在歌曲向量上,你可以用這種方法來找同類型的歌曲。

協同過濾是一個不錯的方法,不過 Spotify 還要做得更好。

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

Spotify 採用的第二種推薦模型是自然語言處理(NLP)模型。顧名思義,這種模型的數據源來自元數據、新聞、博客、評論和網路上能找到的其他各種文本。

自然語言處理是讓計算機理解人類語言含義的技術,在業界通常通過情緒分析 API 來實現,NLP 是人工智慧下的一個龐大領域。

NLP 背後的技術本文無法詳細解釋,但在此可以介紹一下高級層面上發生的事情:Spotify 會不斷瀏覽網頁,不斷尋找有關音樂的博客和其他文本,然後試圖分析人們對於特定的藝術家和歌曲評價如何——對於這些歌曲,他們都用了哪些形容詞?在討論歌曲本身的同時,其他哪些藝術家和歌曲被同時提到了?

在這之中 Spotify 最長提到的就是「文化向量(cultural vector)」或「頂級敘述詞(top term)」了。每個藝人和每首歌曲都有數千個頂級敘述詞。每個詞都有相應的權重,權重則揭示了敘述詞的重要性。(大概是人們用這個詞形容這種音樂的概率)

「文化向量」或「頂級敘述詞」。表格來自 Brian Whitman

隨後,與協同過濾類似,NLP 模型會將這些敘述詞的權重生成向量,代表歌曲的屬性,同時比較出類似的歌曲。就是這樣。

推薦模型 #3:原始音頻模型

有了以上兩種分析方式,你可能會問這個問題:

我們為什麼還需要分析音頻本身呢?

首先,加入更多的模型可以再次提升推薦系統的準確性。不過事實上,這是引入第三種模型的次要目的:原始音頻模型主要用於處理新歌推薦任務。

舉個例子,你的音樂人朋友在 Spotify 上發布了新歌——他/她可能只有 50 個聽眾——這意味著幾乎不會有人會對新歌進行協同過濾,由於作者不太知名,網路上也沒有人討論它,所以 NLP 模型也不會抓取到信息。幸運的是,原始音頻模型不會關注新歌的出處,有了它的幫助,你朋友的新歌就會和流行歌曲一樣出現在不少人的 Discovery Weekly 上了!

所以,現在的問題是「how」——我們如何通過音頻來分析音樂的風格?這似乎是抽象的。

使用卷積神經網路!

卷積神經網路是面部識別系統經常會用到的技術。在 Spotify 上,它被用於處理音頻而不是像素。下圖是一個神經網路架構的示例:

這個神經網路由四個卷積層,由圖中左側四個厚一些的矩形表示,三個緻密層,由圖中右側三個矩形表示。輸入信息是以時間-頻率的形式表示的音頻幀,他們隨後被級聯形成了頻譜圖。

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

所有這些信息最後都被傳遞到輸出層中,在這裡系統會給出自己對於歌曲風格的理解:它是快節奏的嗎?它是不插電版本的嗎?它適合用作舞曲嗎?所有這些特徵都可以用神經網路在音頻文件上準確地分析出來。

神經網路可以分析出節拍、重要部分、風格、速度和吵鬧程度。下圖是 Daft Punk 歌曲《Around the World》30 秒鐘片段的分析示例。

最後,這些對於歌曲的理解讓 Spotify 分析出不同歌曲之間的相似之處,把和用戶收聽列表中存在歌曲的類似新歌推送給你。綜合以上三種方法,Discover Weekly 歌單形成了!

當然,這些推薦模型也與 Spotify 的整個生態系統鏈接,其中包含大量數據,使用大量 Hadoop 聚集推薦結果,並讓這些模型能夠穩定運行在大量數據組成的矩陣、無數網路文字以及音樂文件之上。現在,每個人都可以擁有自己的專屬新歌單了。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 機器之心 的精彩文章:

阿里巴巴iDST首席科學家任小楓聊了聊AI給新零售帶來的想像空間
這3個「圍爐夜話」的85後技術男,代表了中國科技圈的新生力量
在保持創新的路上,摩根大通正用5000萬美元尋找金融科技公司
阿里AI Labs,終於發布「自研自造」的第2款硬體
想要突破技術邊界的螞蟻金服,孵化出首個獨立運營的科技平台

TAG:機器之心 |