下班了,再次走進熟悉的地鐵站,聽了無數遍地鐵裡發出的咣當聲,你會突然發現每天的生活都有些枯燥單調,就像太陽每天都從東方升起,又從西方落下。
帶上耳機,像平常一樣,打開你最喜歡的歌曲列表。您點擊隨機播放按鈕,希望將控制權交給玩家和算法,讓他們帶給您一點未知的新鮮。
您是否曾經想知道,隨機播放算法到底是如何為我們提供一張隨機的歌單?
「真隨機」或「偽隨機」
有史以來最經典的隨機音樂播放器,也應該數 iPod Shuffle了。
2005年,蘋果公司推出了經典的 iPod Shuffle,在那時, iPod Shuffle可算是個異類,那時的音樂播放器(現在還直接叫MP3)基本上都有一個屏幕,用來顯示音樂信息,用戶可以自由選擇自己喜歡的音樂,有些MP3甚至可以播放視頻,如魅族2006年推出的 miniplayerM6就配備了2.4英寸的顯示屏。
與 iPod Shuffle相比, iPod沒有屏幕,總體上比蘋果自己的 iPad Nano要差。但是一個大問題是,用戶如何選擇他們喜歡的歌曲呢?
回答是隨機列表,你可以用 iTunes同步你喜歡的音樂,或是直接同步你喜歡的播放列表,但對於 iPod Shuffle,你最大的感受就是「隨機播放的魅力」。
其實有兩種常見的「隨機播放」方式,一種叫做「播放」,另一種叫做「隨機播放」。
shuffle通常被稱為「洗牌算法」,其原理和撲克牌洗牌一樣,將不同數量的牌隨機排列,從而得到一組亂序結果。歌單的隨機播放也是如此,每一次播放都會對列表中的歌曲進行打亂,從而得到一種亂序播放,即「偽隨機」算法。
與 Random一樣, Random也是一個真正的隨機播放,即每一次切換音樂都是一個獨立的未知數,將隨機播放到不同的音樂,就像「抓」一樣,它沒有列表,因此沒有前一次和下一次的概念,這就是「真隨機」算法。
如何判定是「真隨機」或「偽隨機」,其實只需按下「上一首」就知道了,如果換成你剛才聽到的那首,這是「偽隨機」的洗牌算法,如果是每首歌曲的音樂都不一樣,這是「真隨機」算法。
那兩種方法哪一種更好?對當前的用戶來說,洗牌算法應該更能接受一些,理論上它更能控制,又能滿足用戶對播放順序的要求,而且還可以避免重複聽歌。
現在在各大音樂 app中使用得比較多的就是「洗牌算法」了,像網易雲音樂、 QQ音樂這樣的播放器用戶數量都很多。
良好的隨機算法應該是什麼?
即使「洗牌算法」本身有足夠的優勢,但原來的「洗牌算法」已不能滿足不斷增長的聽歌需求,或者說存在著播放器變得更壞的情況。
例如在知乎提問,很多人都覺得網易雲音樂的隨機算法有很大的問題,比如只放一小部分固定的歌曲,而有些歌似乎永遠都不會出現。即使是一些用戶也說自己刪除了一首歌,還可以隨意來取。
事實上, app對於這份「隨機清單」是有介入的,並不是簡單地進行洗牌,但從結果來看,究竟用戶感覺好壞,則取決於各家對「洗牌算法」的理解和設計。雖然吐槽網易雲算法的用戶不多,但也不影響推薦歌曲、評論等受人歡迎的功能。
QQ音樂產品經理劉彥彬的回答,在洗牌算法中還會摻雜更多的大數據算法介入:
在產品組調查中,用戶想要的其實並不是真正的「隨機播放」,而是更多的用戶不知道聽哪首歌,更多的是選擇困難,希望能幫我做決定。並且,儘量與我目前的心情一致。
隨機性算法可以解決選擇困難,但不能真正解決用戶需要的心態,因為「洗牌」算法不知道用戶到底需要什麼。但實際上,音樂應用程式是可以做到這一點的,在足夠大的個體聽歌數據樣本和大數據調研的情況下,算法可以做出一些判斷,用戶此時更想聽哪首歌。
舉例來說,在夜深人靜的深夜點開隨機播放,則用戶很有可能不想聽金屬、搖滾等過於吵鬧的音樂,結合用戶過去的聽歌歷史,此時隨機算法將根據用戶當前的環境時間,更多的隨機播放到輕音樂。
否則你會認為那些聽歌的報告為什麼這麼詳細,你晚上不睡覺的時候循環播放了多少次歌曲,都很清楚。
QQ音樂產品經理劉彥彬也總結了一些優秀隨機算法應該具備的特點:
錄製本地或最近一段時間內的聽歌錄音,儘量在隨機時不推薦,以保證隨機的新鮮感;用洗牌算法做好,儘可能的將一些歌手、一些專輯分開,讓用戶感覺像是一個隨機列表;可以在本地做一些用戶操作的記錄,例如跳過歌曲的次數,對用戶不感興趣的歌曲進行降權或過濾,挑選隨機池;在歌曲標籤豐富之後,可以做更多的事情,比如根據當前的場景,推薦適合本地隨機播放的適合本地聽的歌曲,這些都有助於讓用戶感覺智能。
當然,研究隨機播放算法的不僅僅是 QQ音樂,一直以推薦算法著稱的音樂流媒體服務 Spotify也有更深層次的思考,甚至在自己的官網上寫下如何改進隨機播放算法。
即使對於像 Spotify這樣的流媒體音樂,也有很多用戶認為隨機播放並不「隨機」, Spotify的洗牌算法當然也是隨機的,但是他們開始思考為什麼用戶會這麼認為。
基本來說, Spotify使用Fisher-YatesPlace作為其服務的開端,他們認為這種 Place做得最好。
若以不同的顏色表示不同的歌手,則表示完全隨機時,上、下兩個列表均可出現
Spotify起初並不明白用戶所說的「非隨機」是什麼意思,但經過研究後發現,用戶的核心思想是不想讓一個歌手在短時間內重複出現,但是用戶在這裡卻陷入了一個經典的「賭徒謬論」,當人們連續幾次沒中彩票,就會認為自己下次中獎的機率會增加,而實際上每一次概率都是獨立的,而且是一樣的。
但是如果用戶連續聽到某個歌手的作品,他們會粗魯地認為這個算法「有問題」。
研究結果表明,用戶不喜歡「完全隨機」。
與「完美」相比,用戶更喜歡「平衡」
這就是「不完全隨機」嗎?
Martin Fiedler在他的博客「混洗音樂的藝術」一文中,向我們展示了為什麼完全的隨機列表是如此的糟糕。
假定你的播放器裡有三種不同風格的曲目 A, B, C, A有10首, B和 C有11首,總共32首歌。假如用真正的隨機算法亂碼,會發生什麼情況?也許是:
在這四種曲風中,有 C曲風連續出現,而 B曲風卻連續四年沒有出現,對使用者來說,重複單一曲風無疑是一種傷害。當然,有了絕對隨機算法,大多數情況下都會產生這樣糟糕的播放列表,因為絕對隨機也就意味著「失衡」。
較好的隨機列表滿足了用戶不能做出決定卻又想變得新鮮的心理,此時應儘量避免重複和單調,因此,下面這個播放列表才是最適合的:
非常四平的一個播放列表,沒有任何「異常」存在,馬丁·菲德勒稱之為「平衡洗牌」。為使歌單洗牌更均衡, MartinFidler發明了一種更複雜的洗牌算法,如果您有興趣,也可以直接訪問這個博客進行具體的實現。
Spotify借鑑了這一算法,但將其修改為一種更適合自己的方法,並採用了抖動算法(例如 Floyd– Steinberg抖動),最終使歌曲在播放列表中更加均勻和均衡。
正是如此,如今,各大隨機播放算法雖然大多建立在「洗牌」算法模式上,但也都有自己的「調味秘方」,有些用戶會喜歡,也有做得不好,不斷被用戶吐槽的。
但是從根本上說,隨機播放算法的重點並不是「隨機」,而是一種產品與用戶之間的心理博弈,甚至隨著聽歌習慣的逐漸養成,它本身也在改變隨機歌曲的加權趨勢。
越是傾聽,他們越是了解你。