推薦系統是為用户推薦所需物品的軟件工具和技術。提供的推薦旨在通過各種決策過程來支持用户,例如,買什麼物品、聽什麼歌曲或讀什麼新聞。推薦系統的價值在於幫助用户解決信息過載和做出更好的選擇,也是現在互聯網領域最強大和最流行的信息發現工具之一。
今天就和大家聊聊:推薦算法為啥這麼“靈”,又為啥會“失靈”?
01 推薦算法為啥這麼“靈”?
要回答這個問題,首先得講清楚推薦算法的原理是什麼。
我們知道,互聯網最大的特點就是有海量的信息。不過,光是數量龐大是沒有任何意義的,需要信息真正發揮作用才能產生價值。所以,如何讓信息發揮價值,始終是互聯網發展的一條主軸。為此,我們想了很多辦法。
“算法推薦系統”出現前,我們的做法是發現信息,這就是搜索引擎。搜索引擎很有用,但限制也很明顯,遺留了很多問題。回想一下:我們要用搜索引擎找信息,不是直接就得到想要的結果,而是得首先掏出一個“關鍵詞”輸入進去,然後才能看到命中的結果。
這個過程叫信息檢索,也就是你得首先知道自己對什麼信息感興趣,得有線索,然後才能通過搜索引擎檢索信息。但這就有個問題,互聯網實在太大了,而人的認知圈子實在太小了,這就導致了大量本該有價值的信息,因為沒被人看到,而只能靜靜躺在角落被白白浪費了。
這個問題初看不可能有解,畢竟從常識推斷,我們得首先知道那條信息,才可能判斷對它是否感興趣,這個過程應該沒法顛倒過來,去發現我們不知道但感興趣的信息。但推薦算法做到了,它改變了搜索引擎的做法,不再是發現信息,而是發現興趣。
推薦算法是怎樣發現興趣的呢?聽起來好像很玄乎,不過原理遠沒有想象中的那麼複雜,我用一句話概括——就是依靠人和物的關聯關係,最少只要經過三次關聯,就能完成興趣發現,進行一次推薦。
這麼説不太形象,我舉一個例子。
想到這裏,店長覺得:既然我們都愛喝快樂水,那沒準你們也都喜歡吃薯片呢?於是,店長就向我推薦了薯片。這就是基於興趣的推薦算法,大數據分析常舉的例子——啤酒尿布,就是上面的這個原理。
我最近看到很多文章,説推薦算法比女朋友更懂你,外人一看都覺得挺神奇的,其實明白了推薦算法的原理,就應該知道這是理所當然的,術業有專攻,除非你的女朋友正好是店長。
當然了,推薦算法原理不復雜,但實際要發揮好作用,還需要根據應用場景作很多調整。推薦算法的重心在於發現人與人之間的共同點,但怎麼劃分共同點,是有很多不同的方法的。
就拿我們常見的推薦來説,既有“看過這個視頻的觀眾還看過”這類基於視頻節目的推薦,也有“同城的觀眾都在看”這類基於地理位置的推薦。
早期做推薦很簡單,是基於點擊量來推薦,但大家很快發現:基於點擊量的推薦沒法發現差異化的興趣。所以,要想實現一套好用的推薦算法,通常要綜合方方面面去考慮,而不只是單獨的一兩個點。
02 推薦算法為啥會“失靈”?
推薦算法平時沒什麼問題,但一旦出現極端情況,譬如説爆發大規模疫情,就會出現前面我們看到的推薦算法“失靈”的問題,大量推薦的都是疫情相同的信息,把其他信息都湮沒了。
不過説實話,推薦算法有這樣的結果,其實是“合理”的。你想一下:疫情期間你的朋友、家人、同學或者同事,包括你自己,最關心的是什麼?就是疫情。
推薦算法這邊呢,我們一再強調推薦算法要做的是發現興趣,而恰恰是正確地發現了你對疫情的“興趣”,所以推薦算法才給你大量推薦了疫情相關的信息。非要説這是問題的話,恐怕首先也得是社會學的問題。
但是,深入地想一想就會發現,這個問題沒這麼簡單。互聯網經濟在過去很長一段的時間裏是推崇一種理論的,叫長尾理論,大概意思是:人類社會中存在着大量的小眾需求,你販賣的東西再離經叛道,也總會能得到真愛的捧場,互聯網就是溝通小眾需求的橋樑。
推薦算法在很大程度上也受了這種理論的影響,所以有一種説法是:推薦算法的最終目標就是能發現這一個一個的小眾圈子,把小眾的信息推薦給圈子裏的人。
但現實卻是另外一回事。近幾年大家討論更多的是另一種互聯網現象,如果你經營過公眾號或者當過UP主,應該會對這種現象印象深刻,這就是頭部效應。
大部分甚至絕大部分的互聯網流量,實際上是被少數幾個“頭部”信息生產者吸走了,剩下絕大多數的信息生產者,則仍然是靜靜地呆在角落裏面被人遺忘。
本該打破這一現象的推薦算法,反而加劇了這種現象。因為佔據頭部,所以容易被推薦,因為容易被推薦,所以繼續佔據頭部,推薦算法導致的這種上升螺旋,讓頭部效應更加明顯。如果把本次疫情看作是一個新的頭部,也許能更好地理解推薦算法為什麼會在疫情中出現失靈。
那麼,這個問題應該怎麼解決呢?這個問題,容易回答,也不容易回答。從技術的角度看,這個問題想要解決,思路是很清晰的,就四個字:去極端化。
理論研究和真實環境往往有差別。理論研究都愛對環境條件進行簡化假設,智能算法也不例外,通常假設各種情況出現的概率是服從均勻分佈的,大家應該是旗鼓相當的公平競爭,誰也壓不住誰,然後再在這個假設條件下構建算法的各種邏輯。
但實際上,一枝獨秀也許才是真實環境中最為常見的情況。其它的所謂競爭者,要麼是萌新,躲在角落瑟瑟發抖,要麼是菜雞,互啄上不了枱面。在算法看來,這種現實情況和假設情況相差實在太遠,太極端,所以,會出現奇奇怪怪的結果自然也就不值得奇怪了。
要讓算法恢復正常怎麼辦呢?只要把極端情況變得不那麼極端就可以了,很多依靠評委打分的比賽為了避免受極端情況影響,通常會選擇採取去掉一個最高分和一個最低分的做法,就是類似的思路。
不過,技術本身是中立的,是正是邪,要看使用的人,就好比菜刀,究竟是用來切菜還是砍人,不是由菜刀自己説了算。現在討論的很多問題看起來是技術的問題,其實還是人的問題。譬如人工智能,説到自動駕駛,我們就很愛討論一個話題,説算法應該怎麼處理電車難題。
但實際上,算法自己是不會產生價值觀的,算法的價值觀,説到底還是人的價值觀。推薦算法究竟要怎麼改,説到底還是要看推薦算法的使用者怎麼定義價值。
我想,推薦算法最後一定能夠滿足“推薦有價值信息”這一要求的,但是,這裏的“有價值”究竟是對誰而言的有價值,那就是另一個問題了。