統(tǒng)計(jì)代碼如何添加(統(tǒng)計(jì)代碼應(yīng)粘貼到哪里)
其實(shí),我們?nèi)v的是坐音樂推薦的始祖Spotify的音樂推薦系統(tǒng)。
搞懂了這貨的算法,還有啥是你不知道的。
不說廢話了,趕緊上編譯的正文吧。
其實(shí),我們?nèi)v的是坐音樂推薦的始祖Spotify的音樂推薦系統(tǒng)。
搞懂了這貨的算法,還有啥是你不知道的。
不說廢話了,趕緊上編譯的正文吧。
每個(gè)周一,數(shù)億的Spotify用戶會(huì)在Spotify上看到一個(gè)全新的音樂推薦列表,這是一個(gè)包含了30首歌曲的自定義混音專輯,被稱為“Discover Weekly(每周發(fā)現(xiàn))”,這里邊的音樂都是你未曾聽過的,但基本上都是你喜歡的。
我是Spotify的忠實(shí)粉絲,尤其是“每周發(fā)現(xiàn)”。為什么這么說?因?yàn)樗钗矣X得它比任何人都更懂得我的音樂口味,每周都會(huì)為我推薦喜歡的歌曲,并且都是我自己從來不會(huì)發(fā)現(xiàn)的歌曲,每一次都充滿了surprise。
展開全文
Spotify的“每周發(fā)現(xiàn)”播放列表 -具體來說,是我的播放列表。
事實(shí)證明,不僅僅只有我自己中了“每周發(fā)現(xiàn)”的毒——很多用戶都癡迷于此,這也促使Spotify徹底重新思考他們的產(chǎn)品焦點(diǎn),將更多的資源投入到基于算法的推薦播放列表中。
下面是Twitter上兩位網(wǎng)友的說法:
Dave(A cenobite) @dave_horwitz:
@Spotify Discover Weekly播放列表對(duì)我的了解是如此之深。就像一個(gè)以前與我一同經(jīng)歷過生死考驗(yàn)的情人一樣。
Amanda Whitbred @amandawhitbred:
在這一點(diǎn)上,@ Spotify的“每周發(fā)現(xiàn)”非常了解我,以至于它推薦的音樂我都會(huì)喜歡。
Dave(A cenobite) @dave_horwitz:
@Spotify Discover Weekly播放列表對(duì)我的了解是如此之深。就像一個(gè)以前與我一同經(jīng)歷過生死考驗(yàn)的情人一樣。
Amanda Whitbred @amandawhitbred:
在這一點(diǎn)上,@ Spotify的“每周發(fā)現(xiàn)”非常了解我,以至于它推薦的音樂我都會(huì)喜歡。
自從2015年“每周發(fā)現(xiàn)”首次上線以來,我一直醉心于研究它是如何向人們推薦音樂的(加上我是Spotify的狂熱粉絲,所以有時(shí)候我喜歡假裝我在那里工作,并且對(duì)他們的產(chǎn)品進(jìn)行研究。)經(jīng)過三周瘋狂的搜索之后,我終于非常幸運(yùn)地了解到它背后的原理。
那么Spotify是如何每周為數(shù)億用戶推薦個(gè)性化歌曲的呢?讓我們先簡單地看下其他音樂服務(wù)是如何完成音樂推薦的,然后再了解Spotify如何更好地做到這一點(diǎn)。
在線音樂推薦的簡史
早在2000年,Songza就開始使用人工推薦的方式進(jìn)行在線音樂推薦,并為用戶創(chuàng)建播放列表?!叭斯ね扑]”意味著一些“音樂專家”或其他推薦人要手動(dòng)把那些他們認(rèn)為聽起來不錯(cuò)的音樂放到同一個(gè)播放列表里(后來,Beats Music也采用了同樣的策略)。人工推薦工作是沒錯(cuò)的,但它需要手動(dòng)操作,因此無法考慮每位聽眾個(gè)人音樂品味的細(xì)微差別。
像Songza一樣,Pandora也是音樂推薦的原始玩家之一。它沒有手動(dòng)標(biāo)記歌曲的屬性,而是采用了更先進(jìn)一點(diǎn)兒的方法。即先讓一群人聽音樂,為每個(gè)曲目選擇一堆描述性的詞,并用這些單詞把曲目標(biāo)記起來。然后,Pandora的代碼可以簡單地篩選某些標(biāo)簽來制作相似音樂的播放列表。
大約在同一時(shí)間,來自麻省理工學(xué)院媒體實(shí)驗(yàn)室的音樂情報(bào)機(jī)構(gòu)“Echo Nest”誕生了,并且提出了一種更加先進(jìn)的方式進(jìn)行個(gè)性化音樂推薦。Echo Nest使用算法分析音樂的音頻和文本內(nèi)容,從而得以進(jìn)行音樂識(shí)別,個(gè)性化推薦,播放列表創(chuàng)建和分析。
再往后,Last.fm采用了另一種不同的方法,到今天仍然存在,他們使用了叫做協(xié)作過濾的過程來識(shí)別用戶可能喜歡的音樂。
(小編注:其實(shí)關(guān)于協(xié)調(diào)過濾算法,熟悉我們平臺(tái)的小伙伴應(yīng)該還會(huì)記得在我們之前發(fā)布過一篇文章:亞馬遜“一鍵下單”的背后——個(gè)性化推薦系統(tǒng)的發(fā)展歷程)
所以如果上面這些就是其他音樂推薦服務(wù)的做法,那Spotify是怎樣實(shí)現(xiàn)神乎其技的推薦引擎,并且似乎比任何其他服務(wù)都更準(zhǔn)確地戳中了個(gè)人用戶的口味的呢?
Spotify的3種推薦模型
Spotify實(shí)際上并沒有使用一個(gè)革命性的推薦模型,而是將其他服務(wù)使用的一些最佳策略混合在一起,從而創(chuàng)建自己獨(dú)特而又強(qiáng)大的發(fā)現(xiàn)引擎。
為了創(chuàng)建“每周發(fā)現(xiàn)”,Spotify采用以下三種主要類型的推薦模型:
協(xié)作過濾模型(即Last.fm最初使用的模型),通過分析您的行為和其他人的行為來工作。
自然語言處理(NLP)模型,通過分析文本工作。
音頻模型,通過分析原始音軌本身進(jìn)行工作。
圖片來源:Chris Johnson,Spotify
下面,讓我們來深入了解這些推薦模式的運(yùn)作方式!
推薦模型#1:協(xié)同過濾
首先需要了解一些背景:當(dāng)許多人聽到“協(xié)同過濾”這個(gè)詞時(shí),他們首先想到的是Netflix,因?yàn)樗麄兪鞘紫仁褂脜f(xié)作過濾來構(gòu)建推薦模型的公司之一。他們通過使用用戶的星級(jí)電影評(píng)分來了解該把什么電影推薦給其他相似的用戶。
在Netflix將“協(xié)同過濾”成功應(yīng)用之后,這個(gè)算法的使用速度迅速擴(kuò)大,現(xiàn)在通常被認(rèn)為是任何想要構(gòu)建推薦模型的人的入門算法。
不像Netflix,Spotify沒有讓用戶對(duì)音樂進(jìn)行星級(jí)評(píng)價(jià)。相反,Spotify所用的數(shù)據(jù)是隱含的反饋 -具體來說,我們收聽的曲目的流數(shù),以及額外的流數(shù)據(jù),包括用戶是否將曲目保存到自己的播放列表中,或者在收聽后訪問了歌手頁面等等。
但是什么是協(xié)同過濾呢,它是如何的發(fā)揮作用的呢?這是一個(gè)更高層的抽象,我們現(xiàn)在把它畫在下面的這張圖里:
Image by Erik Bernhardsson
看懂這張圖了嗎?這兩個(gè)人中的每一位都有一些音樂的偏好 -左邊的人喜歡音樂P,Q,R和S;右邊的人喜歡音樂Q,R,S和T.
通過協(xié)同過濾對(duì)數(shù)據(jù)分析后,初步得出這樣的結(jié)論:
嗯。你們都喜歡三首相同的音樂——Q,R和S ——所以你們可能是類似的用戶。因此,你們每個(gè)人都有可能喜歡另一個(gè)人聽過而你還沒聽過的其他曲目。
因此,我們建議右邊的那個(gè)人聽一下歌曲P,左邊的那個(gè)人聽一下音樂T。很簡單,對(duì)吧?
但Spotify是如何在實(shí)際操作中使用這一概念來根據(jù)數(shù)百萬其他用戶的偏好計(jì)算他們的的建議曲目的呢?
…數(shù)學(xué)矩陣,用Python庫就能完成!
實(shí)際上,上圖的這個(gè)矩陣是非常巨大的。每一行都代表Spotify的1.4億用戶之一(如果您使用Spotify,您可以想象,自己就是此矩陣中的一行),并且每列代表Spotify數(shù)據(jù)庫中的3000萬首歌曲之一。
然后,Python庫會(huì)運(yùn)行這個(gè)漫長而復(fù)雜的矩陣分解公式:
一些復(fù)雜的數(shù)學(xué)
計(jì)算完成時(shí),我們就會(huì)得到被X和Y表示的兩種類型的向量。其中X是用戶向量,表示單個(gè)用戶的口味,Y是表示單個(gè)歌曲的資料的歌曲向量。
用戶/歌曲矩陣產(chǎn)生兩種類型的向量:用戶向量和歌曲向量。
現(xiàn)在我們有1.4億個(gè)用戶向量 -每個(gè)用戶就是其中一行 -以及3000萬個(gè)歌曲向量。這些向量的實(shí)際內(nèi)容只是一堆數(shù)字,它們本身是無意義的,但把它們相互一比較就非常有意義了。
要找到哪些用戶的口味和我最相似,協(xié)作過濾算法會(huì)將我的向量與所有其他用戶的向量進(jìn)行比較,最終揭示與我最相似的用戶。Y向量也是一樣,歌曲 -您可以將歌曲的矢量與所有其他歌曲矢量進(jìn)行比較,并找出哪些歌曲與您正在查看的歌曲最相似。
(編輯注:而至于如何比較相似度,讀者還可以參考知乎上這篇和網(wǎng)易云歌單推薦算法有關(guān)的萬贊回答,網(wǎng)易云音樂的歌單推薦算法是怎樣的?邰原朗的回答--http://s.ai100.com.cn/8v)
協(xié)同過濾算法的效果其實(shí)已經(jīng)相當(dāng)不錯(cuò)了,但Spotify為了做得更好還添加了另一個(gè)推薦引擎——NLP。
推薦模型#2:自然語言處理(NLP)
Spotify采用的第二種推薦模型是自然語言處理(NLP)模型。這些模型的源數(shù)據(jù),顧名思義,是常規(guī)的字詞 –歌曲元數(shù)據(jù),新聞文章,博客和互聯(lián)網(wǎng)上的其他文字。
自然語言處理 –代表了計(jì)算機(jī)理解人類語言的能力 -是一個(gè)龐大的領(lǐng)域,通過情感分析API來實(shí)現(xiàn)。
NLP背后的確切機(jī)制超出了本文的范圍,并且下面我們介紹的這些場景都是在很高層次上發(fā)生的事情:Spotify會(huì)不斷地瀏覽網(wǎng)頁,不斷尋找和音樂有關(guān)的博客或其他書面文字,了解人們對(duì)特定的藝術(shù)家和歌曲談?wù)摰膬?nèi)容——即對(duì)這些歌曲經(jīng)常使用什么形容詞和語言,還會(huì)討論哪些其他藝術(shù)家和歌曲。
雖然我不知道Spotify如何選擇處理其數(shù)據(jù)的細(xì)節(jié),但我可以告訴您Echo Nest如何與之合作。他們會(huì)把它們搜集到他們所謂的“文化向量”或“根詞匯”中。每個(gè)藝術(shù)家和歌曲都有數(shù)以千計(jì)并且每天都在更新的“根詞匯”。每個(gè)詞都有一個(gè)權(quán)重相關(guān)聯(lián),它揭示了描述的重要性(粗略地說,權(quán)重代表了人們用這個(gè)詞描述音樂的概率)。
Echo Nest使用的“文化向量”或“根詞匯”。表格來自Brian Whitman
然后,就像協(xié)同過濾算法一樣,NLP模型使用這些詞匯和權(quán)重來創(chuàng)建歌曲的向量表示,可以用來確定兩段音樂是否相似。聽起來酷斃了,是不是?
推薦模型#3:原始音頻模型
這里有個(gè)問題,首先,你可能會(huì)在想:但是,親愛的,我們已經(jīng)從前兩個(gè)模型里搜集到了這么多數(shù)據(jù)!為什么還要在費(fèi)勁兒分析音頻本身呢?
嗯…首先,加上第三個(gè)模型可以進(jìn)一步提高這個(gè)推薦服務(wù)的準(zhǔn)確性。但實(shí)際上,使用這種模型還考慮到一個(gè)次要目的:與前兩種模型類型不同,原始音頻模型可以用來發(fā)現(xiàn)新歌曲。
例如,你的歌手-作曲家朋友在Spotify上傳了一首歌曲,但可能只有50個(gè)聽眾,所以很少有其他聽眾通過協(xié)同過濾算法發(fā)現(xiàn)它。它也沒有在互聯(lián)網(wǎng)上的任何地方被提到,所以NLP模型也不會(huì)接受它。幸運(yùn)的是,原始音頻模型并不會(huì)在意一首歌到底是新的曲目還是流行的曲目,所以在這個(gè)算法的幫助下,你朋友的歌曲就可以和其他流行歌曲一起被選擇出現(xiàn)在Discover Weekly的播放列表里!
好,解決了為什么的問題,現(xiàn)在我們來探究一下它的原理——我們?nèi)绾畏治鲈嫉囊纛l數(shù)據(jù),這似乎聽起來很抽象。
方法就是卷積神經(jīng)網(wǎng)絡(luò)!
卷積神經(jīng)網(wǎng)絡(luò)就是面部識(shí)別背后的支撐技術(shù)。但在Spotify中,它們被進(jìn)行了相應(yīng)的修改,以處理音頻數(shù)據(jù),而不再是圖像數(shù)據(jù)。下圖是一個(gè)神經(jīng)網(wǎng)絡(luò)架構(gòu)的例子:
圖片來源:Sander Dieleman
這個(gè)特定的神經(jīng)網(wǎng)絡(luò)有四個(gè)卷積層,即左邊的四個(gè)寬條,和三個(gè)全連接層,即右邊的三個(gè)窄條。輸入是音頻幀的時(shí)間-頻率表示,然后將它們進(jìn)行級(jí)聯(lián)以形成頻譜圖。
音頻幀通過這些卷積層,在最后一個(gè)卷積層之后,您可以看到一個(gè)“全局時(shí)序池化”層,它對(duì)整個(gè)時(shí)間軸進(jìn)行池化,可以有效地計(jì)算歌曲整個(gè)時(shí)間內(nèi)學(xué)習(xí)到的特征的統(tǒng)計(jì)。
在處理之后,神經(jīng)網(wǎng)絡(luò)會(huì)輸出對(duì)歌曲的分析結(jié)果,包括像估計(jì)的拍子記號(hào),調(diào),模式,速度和響度等特征。以下是Daft Punk樂隊(duì)的作品“Around the World”30秒摘錄的數(shù)據(jù)。
圖片來源:Tristan Jehan和David DesRoches(The Echo Nest)
最終,對(duì)這首歌曲的主要特征的分析使得Spotify能夠了解歌曲之間的基本相似之處,從而使得用戶可以基于自己的播放歷史欣賞相似的歌曲。
下面這張圖涵蓋了為推薦管道提供的三種主要類型的推薦模型的基礎(chǔ)知識(shí),并最終為“每周發(fā)現(xiàn)”播放列表提供建議!
當(dāng)然,這些推薦模型最終都要連接到Spotify的更大的生態(tài)系統(tǒng)中,其中包括大量的數(shù)據(jù)存儲(chǔ),使用大量的Hadoop集群來擴(kuò)展建議,并使這些算法引擎對(duì)巨型矩陣,無盡的互聯(lián)網(wǎng)音樂文章和大量的音頻文件進(jìn)行計(jì)算。
作者:Sophia Ciocca,軟件工程師,作家。
掃描二維碼推送至手機(jī)訪問。
版權(quán)聲明:本文由飛速云SEO網(wǎng)絡(luò)優(yōu)化推廣發(fā)布,如需轉(zhuǎn)載請(qǐng)注明出處。