都説現在算法很智能,為什麼音樂軟件還老給我推薦神曲_風聞
中科院物理所-中科院物理所官方账号-2019-04-07 13:52
原創:中科院物理所
有天午睡前,我像往常一樣點開了我的日推。一首《La vie en rose》結束,我滿足地準備睡覺。

突然,耳機裏響起了有節奏的喵喵叫。。。?
各位可以聽一下這首喵喵歌。。。
我
往下一翻,我還看到了令我崩潰的其它類似歌曲。。。
網易雲音樂的推薦歌曲
所以。。這個軟件是怎麼了。。。為什麼要給我這樣一個平時聽玫瑰人生的高冷人兒推薦這些歌?
想把算法工程師打一頓的好奇的小編立刻決定起牀,一定要把這件事搞清楚。
經過一番調查,我終於發現,電商平台、短視頻平台等背後的一切都是類似的。一切都是因為它的推薦系統在作妖。
所以,這些軟件到底是怎麼給你推薦的?
以人為本
Based on Human
這套推薦系統最早來源於亞馬遜。當時亞馬遜的工程師們厭煩了複雜繁瑣的人工推薦,就開發了這樣一套系統來做自動購物推薦。
他們大致貫徹了一個原則——喜好相似的人和人之間有相似的消費模式。喜歡這個東西的人,傾向於也喜歡另一個**。**

這種算法叫做**「協同過濾」**,它會依據每個用户的歷史數據來推薦其他相似用户曾經接觸過的東西。
舉個栗子:我和老王都喜歡a, b這兩首歌,並且老王還喜歡c這首歌。那麼,有比較大的概率我也會喜歡c這首歌。
協同過濾
我們可以在亞馬遜看到**「 瀏覽此商品的顧客也同時瀏覽」**
亞馬遜網站的推薦
或
亞馬遜網站的推薦
豆瓣搜索電影也常常會出現
豆瓣對電影的推薦
這樣的推薦系統分析的是用户的口味之間的相似度。
我們可以把推薦系統想象成一個多維空間,存在很多個不同的標籤,每個標籤都是一個維度,我們可以把它想象成空間座標的x, y, z軸。每首音樂都有一個或幾個事先加好的標籤。用户的感興趣程度就作為該維度的座標,比如切掉=-2,收藏=2,單曲循環=4等等。
於是,用户在系統的眼中就是空間中的一個點,也是由原點指向這個點的向量。不同的用户有不同的喜好,也就有了不同的空間座標和向量。
聽到這裏,我知道你現在大概是這樣的
舉個栗子你就懂了。
假如我和老王都收藏過歌曲a和b,老王還單曲循環過歌曲c。歌曲a具有“純音樂”的標籤,歌曲b具有“鋼琴”的標籤,歌曲c具有“二次元”的標籤。所以,在 (純音樂,二次元,鋼琴) 的三維座標系中,我的向量是 (2,0,2),而老王的向量是 (2,4,2)。
假如這個時候又來了個小明,他的向量是(0,4,4)。求我與他倆之間的相似度?
按照**「 英雄所見略同」**的常識,發展方向接近的人之間相似度較高。所以,我們可以用向量之間的夾角來衡量相似度。夾角越小,相似度越高。
相似度計算示意圖
所以,現在問題變成了一道高中數學題:已知向量A、B、C,求三個向量之間的夾角。根據這個夾角,就能夠算出你的口味是跟老王更接近還是跟小明更相似,然後根據跟你口味更相似的那個人的歌單,給你推薦歌曲。

聽起來很不錯,但仔細想想你就會發現,不管計算出來誰跟你更接近,你都有可能被推薦他們所鍾愛的二次元歌曲。但從你以往的聽歌歷史上根本看不出你有二次元傾向啊。。。
而且,這樣單純而不做作的推薦算法在如今多元化的市場上是會水土不服的,在樣本量比較小的情況下精度尤其低。小編就常常懷疑,音樂軟件是不是悄悄把我的座標挪到了“鋼鐵直男”們附近。。。不然它為什麼老是給我推薦喵喵歌?我才不會承認我前一天收藏了一首小黃人的歌呢。
好在後來,程序猿們又開發出了一套基於內容的推薦系統。
內容為本
Based on It
這套系統着眼於需要推薦的商品本身,不同的商品會有很多種不同的屬性。比如音樂有流派、藝術家、歌詞等屬性,書籍有文體、出版社等屬性,商品有用途、顏色等。
按照這些屬性,我們可以計算兩件商品的相似度。推薦系統會使用商品的不同屬性作為不同的維度,構建一個屬性空間。此時,每件物品就像前面的用户一樣,成為算法的研究對象,擁有屬於自己的座標。算法會計算每件物品之間的距離或向量夾角,作為判斷它們相似度的依據。
所以,在一定的方向上或一定的位置上,相似的商品會聚集在一起,也就是**「 物以類聚」**。
相似的會聚集在一起
推薦算法認為,當你喜歡一個物品時,你會傾向於也喜歡同類型的其他物品**。**於是,當用户翻牌了其中一首歌,與它相似的那一堆歌曲很快就會亮起來然後被放進推薦中。
這個邏輯本身沒毛病,但你會發現,這些音樂軟件往往都把你想象成一個聽歌口味異常專一、收藏歌曲異常慎重而且耐心異常充足的人。
但你知道,大多數人聽歌心態都比較放鬆,態度也都比較寬鬆,並不會對於點紅心這件事很慎重。這樣導致的後果就是,推薦系統會對你的操作過度解讀。一旦發生了過度解讀的慘案,你的日推就會像脱繮的野馬一樣擁有一顆自由自在的靈魂。

小編就常常聽到什麼歌覺得還可以,就隨便點了收藏,然後第二天崩潰地發現自己的日推畫風突變了。。。
就在我收藏喵喵歌的第二天,它又給我推薦了歡樂鬥地主的歌。。。天知道我點了多少次**「 不感興趣」**才脱離日推就此跑偏的深淵。

所以,如果把音樂比作星星,聽歌比較雜的人恐怕經常被推薦整個宇宙。。。
現在的推薦系統智能多了
Today’s Recommendation System
為了避免再出現這樣蠢蠢的情況,現在的推薦算法一般都是以上**「 以人為本」和「 內容為本」**兩種的結合。
它們對用户口味相似度和商品本身相似度的計算都會更加嚴格,會加上各種實際情況的限制條件,比如對用户對歌曲的喜好程度的分級:有的軟件會採取 單曲循環>分享>評論>收藏>聽完>切掉 的順序,用户不同的操作意味着不同的權重,不同的軟件分級策略不一樣。
這些限制或附加的條件會讓算法更合理,使用起來會讓用户自作多情地認為**「 它懂我」**。這就會大大提升用户體驗,從而吸粉。

不僅是音樂軟件,很多的電商平台、新聞推送軟件,包括短視頻平台等等,它們也都有着各自的一套複雜的推薦系統,其中不乏深度學習等看似高端的操作和標籤二次過濾等。
雖然現在的個性化推薦系統已經發展得比較成熟了,推薦算法也都層出不窮花裏胡哨,但因為人的喜好是複雜多變的,想要完全滿足人類的需求還是很難。
總有那麼些時候,你會發現,在你買了一雙拖鞋甚至已經用了幾個月後,某寶仍然能夠源源不斷持之以恆地給你推薦各種塑料拖鞋、布拖鞋、男士拖鞋、女士拖鞋。。。所以我是幹了什麼讓它覺得我很缺拖鞋。。。
又有些時候,你突然想聽一首歌,而卻死活都想不起它的名字歌詞和調調時,你也許會突然嘗試聽同類型歌曲,期盼軟件能夠把那首歌給你找出來。然而這個時候的推薦系統又常常get不了你的心意。。。
今天為了寫這篇文章,我又把那首喵喵歌翻出來了。現在我很擔心我明天的日推。。。
最後,答應我,千萬不要去搜喵喵歌!千萬不要!更不要點收藏!
部分圖片來源於網絡
參考文獻:
[1] 網易雲音樂首次披露推薦算法: 讓單身狗猶如過情人節的日推原來是這樣生成的
[2] 讓你上癮的網易雲音樂推薦算法,用Word2vec就可以實現