1. 程式人生 > 資訊 >年輕人多在「反演算法」,沒想到 Spotify 先站出來了

年輕人多在「反演算法」,沒想到 Spotify 先站出來了

作為煎餅果子聖地,天津人評價最高的煎餅店,一定不是人們趨之若鶩的網紅店,而是「我家樓下那家」。

人們對於音樂的喜好,和天津人對煎餅果子的愛有異曲同工之處,好友熱情分享過來的音樂,通常會被你歸為「垃圾」。隨著卡帶、CD、MP3 逐漸被移動網際網路取代,音樂應用最終承載起滿足人們音樂品味的重任。

社交媒體上經久不衰的唯二的兩個問題,一個是為什麼「隨機」推薦並不真的「隨機」,另一個就是為什麼音樂平臺推薦的音樂都這麼「垃圾」。如果有機會,估計所有人最想做的事情就是去面對面問一下音樂應用的程式設計師,自己到底怎麼才能「調教」好這個 App,讓它推薦更多自己喜歡的音樂。

以使用者數最多的音樂平臺 Spotify 為例,他們最近開發出了一種新的演算法 —— 偏好轉化模型(Prefenrence Transition Model,PTM),想要預測,一年後的你會聽什麼音樂。

揭開 Spotify「演算法黑箱」

抖音、微博、淘寶、YouTube、Spotify,這些平臺的演算法想盡辦法猜測我們喜好,然後把它們覺得我們會喜歡的內容推給我們。

有些時候,這些演算法確實猜得很準,我們看到的都是喜歡的內容。但從另一方面來說,我們只看了自己喜歡的內容。

網際網路活動家伊萊・帕裡瑟(Eli Pariser)在 2011 年的時候提出了他著名的「過濾氣泡」(Filter Bubble)理論:演算法會根據使用者的地址、歷史點選、過往搜尋等使用者相關資訊猜測使用者喜好。這個過程中,那些與使用者意見相悖的資訊就被過濾了。長期下來,使用者就會無法接觸新的想法和資訊,逐漸隔絕在自己的意識形態泡沫中。

在處理過濾氣泡的問題上,Spotify 一直因為精準的演算法而為人稱道。不只是讓使用者在自己熟悉的內容中打轉,它總能幫使用者發現那些新鮮的歌曲。而恰好,這些歌曲還很討人喜歡。

「每週發現」(Discovery Weekly)是 Spotify 在 2015 年 7 月的王牌欄目。每週一,Spotiy 就會向用戶推送 30 首完全沒聽過的歌曲。同時,它又總能帶來非常好的使用者體驗。截至 2020 年 6 月 25 日,每週發現總共被播放了 23 億小時,約合 26.65 萬年,比人類文明存在的時間還長。

Spotify 是怎麼做到這一切的?當然還是演算法。

Spotify 主要使用了三種推薦機制 —— 協同過濾演算法(Collaborative Filtering Model)、卷積神經網路(Convolutional Neural Networks)和自然語言分析(Natural Language Processing)。

Netflix 是最早使用協同過濾演算法來推薦內容的平臺。在 Netflix 大獲成功之後,這種演算法就變得越來越流行。簡單來說,它會根據使用者之間的相似性而不是內容的相似性來推薦新事物。

對 Spotify 來說,擺在它面前的是一個巨大的資料庫,裡面裝滿了使用者聽過內容的歷史。協同過濾演算法會根據使用者 A 聽過的歌曲,找到也喜歡這些歌的另一個使用者 B,然後向 A 推送只有 B 聽過的歌曲。

▲「同喜 QRS,則嘗試一下 P 和 T」|Erik Bernhardsson,前 Spotify 員工

但協同過濾演算法的一大缺點是所謂的「冷啟動」問題,只有掌握足夠多的資料,協同過濾演算法才能起作用。如果使用者是一個還沒有聽過多少歌的新使用者,或者內容庫裡有一首非常冷門歌曲,協同過濾演算法就無法精準匹配。

這就引入了另一種演算法 —— 自然語言處理。Word2Vec 常被用在自然語言處理中,它可以將我們日常的對話編碼成數學關係 —— 向量。

Spotify 做了和 Word2Vec 相似的工作。它會抓取網路上描述音樂、歌曲或者歌手的詞語,通過演算法分配給它們不同的權重。這個權重,很大程度上代表了人們用這個詞來描述音樂的概率。通過自然語言處理,Spotify 就能確定哪兩首歌彼此是相似的,從而解決冷啟動問題。即使是冷門的歌曲或歌手,也能得到推薦。

Spotify 的第三種方式是卷積神經網。

在前兩種演算法的幫助下,Spotify 已經獲得了足夠多的資料,但卷積神經網路可以進一步提高了音樂推薦的準確性。

卷積神經網路會分析歌曲的特徵,包括拍子、音調、模式、節奏、響度等。通過閱讀這些歌曲的特徵,Spotify 就可以根據使用者的收聽歷史瞭解它們之間的相似性,匹配使用者的喜好。

Daft Punk 的歌曲「環遊世界」的資料分析圖|The Echo Nest

正是通過這三種演算法,Spotify 像魔法一般猜準了使用者的喜好,打造出了千人千面的 Discover Weekly。

但即使 Spotify 已經成為了世界上最流行的流媒體播放軟體,即使世界上最聰明的人在這裡構建出了無比精巧的演算法,過濾氣泡的「詛咒」依舊存在。

於是,Spotify,又多做了一步。

但是,人是會變的呀!

2021 年 4 月,Spotify 聯合多倫多大學釋出了一篇論文《下一步去哪兒?一種使用者偏好的動態模型》(Where To Next?A Dynamic Model of User Preferences)。

他們在 4 年間(2016 年至 2020 年)分析了 10 萬名使用者的收聽資料,來觀察使用者的消費分佈變化。他們發現,隨著時間的變化,使用者的消費習慣也在發生變化。先前的演算法擅長捕捉使用者的靜態喜好,但當面對長時間的跨度時,卻無法捕捉使用者動態的喜好變化。對於 Spotify 的長期使用者來說,他們依舊可能困在過濾氣泡中。

這是 2016 年第一季度對比隨後每個季度的總消費變化直方圖。顏色越深,對比的時間跨度就越長。比如,最左邊的淺色曲線是 2016 年第一季度和 2016 年第二季度的對比;最右邊的深色曲線是 2016 年第一季度和 2020 年第二季度的對比。隨著時間的增加,變化也越來越明顯|圖片來源:Spotify

Spotify 同時發現,當免費使用者消費的音樂種類越多時,他們越有可能轉化為付費使用者。也就是說,使用者聽到的音樂型別越多,他們越喜歡 Spotify。

那麼該如何知道,一個人未來的音樂口味呢?

Spotify 給出了一個新的演算法 —— 偏好轉化模型(Prefenrence Transition Model,PTM)。

在這張偏好轉化模型的草圖中,我們可以大致窺見 PTM 的工作原理。

▲圖片來源:Spotify

我們現在有個使用者 1 號,根據歷史,可以知道他喜歡聽靈魂樂(Soul)。我們想知道,他以後會不會喜歡新世紀音樂(New Age)和布魯斯(Blues)。

轉換矩陣 A 是 PTM 的核心,將上述的資料輸入 A,就會得到一個預測的結果。可以看到,新世紀音樂的數值(0.4)和靈魂樂(0.4)非常接近,那使用者 1 將來很有可能會喜歡上新世紀音樂。

當然,這只是一個最簡單的模型演示,實際情況要比這複雜得多。Spotify 總共歸納了 4000 種音樂流派。而在 Spotify 的資料庫中,還有有 3.56 億個這樣的「使用者 1 號」。

▲PTM 的核心演算法:指數加權移動平均分佈和泊松多項式兩級分佈|Spotify

▲與之前的演算法相比,PTM 在各項測試中都得到了最好成績|Spotify

除了預測效能,PTM 的另一大特點就是可以直觀地解釋從一種音樂是如何轉換到另一種音樂的。假定我們現在有兩個音樂流派 a 和 b,PTM 就可以提供使用者在聽完 a 之後轉換到 b 的概率。這就解釋了兩個問題:

1、a 到 b,哪條路徑是最短的?

2、如果使用者聽了 a,那麼他接下來最有可能播放哪個流派?

回答這兩個問題,大大提高了 PTM 的效率和預測準確性。

這是一張偏好轉化的示意圖,顯示了初始流派(綠色)到目標流派(紅色)的最短路徑|Spotify

如何「馴服」演算法

看起來,Spotify 已經做得很好了。但再聰明的演算法,都可能時不時抽一下風。畢竟,人確實很複雜,沒有人可以像你自己一樣瞭解自己。

Spotify 官方也給出了一些建議,希望幫助你更好地「馴服」他們的演算法。

給你喜歡的歌曲點個❤️。

如果你不喜歡一首歌,在 30 秒之前跳過它。30s 是個關鍵節點,如果在這之前跳過一首歌,相當於演算法在內部給它點了