演算法與生活中的決策

作者 郭瑞東

聽過了很多道理,卻依然過不好這一生。這是很多人的困惑。這篇小文想講的是,任何一場科技中的浪潮,都會帶來方法論上的變革。關於人生中的抉擇,人們總是用當前最熱門科技中的概念去類比。正如Carl Sagan所說:Science is a way of thinking much more than it is a body of knowledge。授人以魚不如授人以漁,了解了方法論的變革,才會帶來元認知上的升級換代。

在過去,當我們站在人生選擇的十字路口,我們會從古代先哲的話中去尋找啟迪,會聽從當地宗教領袖的話,到了啟蒙運動之後,社會的主流意見變成了聽從你內心的聲音。然而,隨著數據在我們的生活中佔據了越來越重要的位置,我們做決策時也需要拿出數據和圖表,用量化的數據以及演算法來指導我們的決策,而不只是做你自己喜歡的事。

為什麼我們不應該只追隨自己的inner voice了?這是因為當代心理學,及其衍生出來的行為經濟學已積累了足夠的證據,說明人類會系統性的犯錯誤。關於這個話題,最著名的論述就是《思考,快與慢》這本書,另一本值得看的書是進化的 "亂亂腦"是怎麼讓你不完美的。

另一方面,在《A brief history of tomorrow》這本書中,作者指出,做出明智的決策,自我意識的存在不是必要條件,很多Non-conscious but highly intelligent的演算法即將在未來變得比我們更加了解自己。但我們有些時候卻不願相信演算法幫我們做出的決策,尤其在面對人生的關鍵選擇時,例如,你願意你的終身大事被演算法安排嗎?當一個程序告訴你,你應該和A結婚,儘管你覺得B更有魅力時,你會聽程序的安排嗎?要回答這個問題,最好我們先了解程序背後的演算法邏輯,否則在對演算法一無所知的情況下做出的選擇,不會是一個well-informed chocie。在不久的將來,演算法將會或顯或隱的影響你的選擇,你準備好相應的心智模塊了嗎?

舉一個具體的例子,假如一個非常優秀的人參加選秀節目,已知追求的他的人有有限個,例如10位,選秀節目規定,他不能腳踏兩隻船,即不能同時和兩個人交往,如果在交往之後他沒有接受這個人,那麼,以後也沒有機會再選擇這個人作為對象。然後接著和下一個人交往。他該怎麼辦?

對這個問題的回答,有兩種思考方式,先說機器學習的方式。一個做機器學習的人拿到這個問題,首先會做的是收集數據,假設上面提到的選秀節目進行了100期,那麼要收集的數據包括這一百期節目中每位男嘉賓的年齡,學歷,身高,職業等structure data,還會收集台上發生的對話這樣unstucture的data,最後在通過對每位女嘉賓的事後訪談,確定各位女嘉賓是否後悔自己的選擇,是否和男嘉賓有更多的發展。之後將所有的這些數據放入多個模型中,目標是找出一套規律來,來指導未來參加這個節目的女嘉賓,讓她們能做出讓她們最不後悔的選擇。不同的模型給出的規律會各有不同,有的模型很簡單,會告訴女嘉賓找和自己年齡相差最小的,有些規則會很複雜,會告訴女嘉賓去找又高又年輕的程序員但是卻要比自己大1歲到3歲。(咳咳)

另一種方法是傳統的數學模型,關於上文提到的問題,有一個現成的數學理論可以去對這個問題給出最優解。Optimal Stop Theory 是一個在金融衍生品定價中應用很廣泛的理論,假設每個女嘉賓可以對男嘉賓給出一個唯一的打分,但女嘉賓不清楚這屆男嘉賓的整體水平怎麼樣,需要拿前幾個去摸索一下自己應該把標準定的多高,又擔心久久不選擇,錯過了最好的那個,那麼Optimal Stop Theory 給出的答案是37%,在37%之後,女嘉賓應該不要猶豫,只要遇到一個比之前的選擇都得分高的男嘉賓,該將就就將就吧。(咳咳)

對於這個問題的數學建模,感興趣的童鞋可以自己去推算出上文提到37%來。

在男嘉賓的數目不同時,女嘉賓按Optimal Stop Theory 應該採取的最優策略,以及對應的有多少比例找到這一組中男嘉賓中最好的那個,有63%的概率遇不到最好的那個這不是一個好消息,但從另一方面來看,Optimal Stop Theory保證了不管男嘉賓有多少個,女嘉賓總能有差不多的幾率找到最好的那個。

將選秀節目中的場景反射到生活的時間之流中。我們每個人也都會遇到或多或少幾個追求者,也會在到底是該等待唯一的那個人,還是就這麼嫁了中彷徨。假設我們的平均壽命是90歲,那麼Optimal Stop Theory 告訴你可以在33歲前去explore你的選擇,過了33歲之後,再選擇遇到的最好那個不遲。下次再遇到逼婚的,就可以給父母親戚推一推公式,告訴他們數學家已經證明了,再等幾年是最優的選擇。(咳咳)

比較一下機器學習和傳統的數學建模的方式,機器學習處理的多維的,複雜的數據,其模型相比數學模型,需要更少的假設條件,其得出的結論,不會保證其一定是最優的。而數學建模,首先假設了男嘉賓出現的次序和其質量是獨立的,更重要的是,其要求女嘉賓對每一個男嘉賓有一個唯一的打分,如果真的能這樣,生活中的選擇就簡單多了。所以說,儘管機器學習有時會給出一些不那麼靠譜的選擇,在面對現實的問題時,不過度的簡化問題,是給出的解答有用的一個必要條件。

不過,不管是那麼方法得出的答案,數據指導的思考方式要求你去做驗證,要求你去質疑的假設,並看看將某些假設做了修改後,答案又會變成怎樣。比如上文提到的問題,如果假設在女嘉賓拒絕了男嘉賓後一次,男嘉賓還會接受女嘉賓,那麼女嘉賓的最優選擇應該是什麼了?又比如女嘉賓能給男嘉賓一個0到100之間的評分,而不是不清楚這屆男嘉賓的分數上下限的時候,又應該採取什麼樣的策略了,數據時代,首先要說的質疑你的假設。

關於驗證你的結論,最弱的證據是個人的personal story,稍微強一些的是case study,即名人的傳記訪談,因為第三方的視角會去除掉自我記憶的和認知中的偏見。更好的證據是Statistic,比如查一查結婚的年齡和離婚率是否相關,如果在20到40歲之間,排除其他因素,結婚年齡太早或者太晚的離婚率很高,再通過問卷調查,得出對婚姻的滿意程度,結果發現按照當時的預期壽命,相應年齡結婚的夥伴滿意度最高,那麼說明Optimal Stop Theory 還是有一定道理的。

比統計更高級的驗證是機器學習中最常用的Cross Validation。舉個例子,5 fold Cross Validation 將已知的數據分成10份,選8份作為訓練數據集,將這些數據丟給模型,然後在剩下的兩份數據上去檢測模型的效果。然後重複這個過程5次,直到每份數據都做了一次測試數據了。Cross Validation是為了保證訓練出的模型不會把數據中噪音放大,然而其背後的思想則是我們對現實的認識的不完全的,因此訓練時數據少一些,是必然的。模型不能要求麥克斯韋妖那樣的全知全能,而要在部分可見的情況下給出相對靠譜的對整體的預測。這種對自己的未知謙卑的態度,讓人想起了「認識你自己」這句古希臘的格言。如果將機器學習的演算法看成是一個認知策略,那麼認識你自己說的就是meta-learning,即是將不同的演算法結合起來,取長補短,從而更快得到(收斂出)更好的結果。

機器學習的方法框架和循環,實現模型,驗證模型,分析模型的效果和優缺點,在一輪輪的迭代中持續改進模型。

之後,想談一談上文案例反映的一個更深層次的權衡(tradeoff),Explore vs Exploit。我們年輕的時候,總是忍不住想去看一看世界,所謂的沒有看過世界,哪來的世界觀,而當年紀漸長,就應有所立足,在某一個領域有所專註,從而exploit自己之前積累的見識,這固然會讓你覺得生活不在像之前那樣豐富多彩,新的刺激會減少,然而這是生命的常態,如同熵增一樣不可避免。要想生命之樹常青,除了認識到時間箭頭不可逆帶來的新朋友新經歷越來越少,就是要在自己橫向的處理問題時把握好這個權衡,做到既不over explore,也不over exploit。

over exploit帶來的問題是overfitting,這個機器學習中的概念對應是生活中的陰謀論或者對文本的過度解讀。比如用一條線連接下圖的五個點。overfiting的答案是這樣一條包含五個參數的彎彎曲曲的曲線,這條曲線雖然在這五個點上誤差極小,但當加入一個新的點之後,結果就不那麼好了。這裡更好的解答應該是一條包含兩個參數的直線。

陰謀論將幾個看似不相關的事件用一個不那麼簡單直接的故事連接起來,在陰謀論為何總是錯的?中,對陰謀論有更深入的分析,感興趣的小夥伴可以點擊查看。

犯了over exploit這種錯誤的小夥伴,總想著找出一個一招鮮吃遍天的法子來,在數據收集的還不夠充分的時候,機器學習的方法既可以放大數據中的規律,也可以放大其噪音,只有更多的數據才能解決這個問題。比如下圖中的下一個圖形該是哪一個,有兩種可能的解答,這兩種規律哪一個才是我們真正關心的了?只有更多的數據才能回答。

over explore的問題也許更多人更加熟悉,信息過載這個詞很多人會覺得陌生,然而當看到那數不清的朋友圈,每日頭條的諸多推送,你就會明白什麼叫information overload了,關於這個問題,可以參考如果用刷朋友圈的時間讀一本書,能讀多少本?和我應該刪掉多少好友,屏蔽多少朋友圈。over explore讓人成為只會讀兵書的趙括馬謖,讓人們以為知道了很多碎片化的知識,卻無法形成體系。

over explore的一個解毒藥是機器學習中No free lunch 定理,我們在機器學習中衡量兩個演算法,到底孰優孰劣,該怎麼考慮?「沒有免費的午餐定理」彷彿給了一個很令人 depressing 的答案:針對某一域的所有問題,所有演算法的期望性能是相同的。注意,這裡有兩個關鍵詞,某一域的「所有」,和「期望」性能。所以它並沒有否認兩個演算法有優劣之分,並且事實上還提供了一個視角讓我們理解為什麼在機器學習中,我們可以選擇演算法的優劣性。

No free lunch告訴我們,沒有一個適用於所有問題的通用方法。機器學習的諸多方法各有各的適用場景,需要使用者因地制宜的去選擇。這個定理還告訴我們,即使收集到了全部的數據,我們也無法一錘定音的找到一個一成不變的最優方案。這對從事機器學習人來說是個好消息,說明其工作要被計算機取代,還需要一段時間,任何機器學習演算法成功的背後,都是很多人持續的選擇和分析一點一滴堆出來的勝利。

數據思維帶給我們的啟示,除了用數據去支持你人生的決策外,另一點是去關注explore 和exploit自己的平衡,不要犯上面提到的兩類錯誤。知道何時該停止試水的Optimal Stop Theory,無疑可以在這方面給予讀者啟迪。而另一方,我們可以通過制度的設計來幫助大家去做出更好的選擇。

Taleb的反脆弱(參考殺不死我的東西,使我變得更強大|BetterRead)中提到Have an skin in the game,說的是當你需要為你的言論買單時,你會更注重你發言的質量,更加深思熟慮。而通過市場機制去將眾多人的觀點綜合起來的制度,就是Superforcast這本書中提到的預測市場。

比如你想知道美國大選誰的勝率高,民調的結果不靠譜,因為很多選民會在投票時變卦,專家的意見更加不靠譜,專家都有自己的偏見,那該聽誰的?有這麼一個市場,你可以針對各種事情下注,從NBA得冠軍到石油價格的漲跌,這個市場上你可以自由的交易自己的賭注。通過對這個市場的觀察,那麼就可以得出最靠譜準確的預測來。這就是通過市場的擴展秩序來發掘人群中的私人的隱形知識,同時避免噪音的干擾。

如果能綜合利用到更多人的觀點,預測的準確度會不會提高了,腦補這樣一種未來,人們不止是為了接受信息付費,還能為了傳播觀點承擔風險。具體的舉個例子,如果你寫了一篇,或者轉發了一篇支持希拉里當下一任美國總統的文章,然後在發表時後台系統的自然語言處理系統識別出了你文章中的觀點,要求你付一筆錢,到時候如果希拉里贏得了大選,你會按照出價時的賠率獲得相應的賠償,若是你猜錯了,你會損失這筆錢。或者你在這樣的預測市場上下了注,你寫了篇文章解釋你為什麼要下注。這裡的要點是要想發出聲音,你需要花錢,願意將越多的錢用來做風險投資,你的聲音就越大,就會被置頂,被更多人聽到。

這會不會通過金錢上的刺激,使你更加註重explore和exploit之間的權衡,從而提高下一屆朋友圈的信息水準,那些傳播陰謀論的,會賭他們預測那末日即將到來,然後天下太平,他們失去了自己的賭注,從而只能發出更小的聲音。而那些只收集信息的人,則失去了將自己的洞見變現的機會。優勝劣汰,在這樣的輿論生態圈中,活下去的都會是智者,而無論是做投資的,亦或是普通人,都可以從這樣的預測市場中受益,就像我們從市場經濟中獲得了高質量的物質資源,結合了自然語言處理的預測市場將會為我們的注意力資源的合理分配提供一種可能性。

總結的Take home message

ALWAYS Test / Cross validation

MIND tradeoff between explore vs exploit

TAKE risk for your opinion

MEDEL your life choice

AS problem in math/ machine learning

QUESTION your assumption

NOT confuss over-interpretation with rule

REALITY need open mind thinking

如同古代的藏頭詩,演算法和數據思維也不是萬能的,always mind,take model as question,not as reality。生命之樹長青,只要你還願意接受新的觀點,新的數據。

感謝 深大王雄老師組織的南山深度學習讀書會中提供的機會,讓我能夠和更多的大牛請教分享自己的心得體會。

本文的標題是一本推薦的書 參考 Algorithm to live by讀書筆記 我們該不該自動化我們的決策。

本文首發於混沌巡洋艦微信公眾號。已獲作者授權。

商業轉載請聯繫作者,非商業轉載請註明出處。


推薦閱讀:

不要讓聚光燈效應拖住了你前進的腳步
覺得清明該放100天假的,進來舉個手
人被職業固化每天做重複性勞動,感覺很可怕怎麼辦?
我們永遠也不知道下一個被害者是不是自己

TAG:算法 | 决策 | 生活 |