【讀書】生活中遇到難題了嗎?聽聽來自電腦演算法的3個建議




前言


如果你遇到以下的問題,你會怎麼做?

  • 假設你從18歲開始談戀愛,你要跟多少人在一起過,在哪個歲數該決定誰最適合你,並且步入人生下一個階段?
  • 現在是中午休息時間,你的肚子餓的咕嚕叫,你可以選擇去最常去的日式料理店、也可以去最近街角剛開的泰式料理店,你該選擇哪一個?
  • 你/妳和另一半即將舉辦婚禮,一個桌次只能坐下10個人,你/妳發現家中的親戚團共有11個人,此時應該要安排誰在主桌之外?

面對這樣大小的問題,我們往往束手無策。也許可以問問朋友,但是他/她們的意見似乎讓我們不夠滿意;或是也可以請教長輩的經驗,從他們人生當中汲取些許的真知灼見,但每位長輩的歷練不同,又該遵循誰的建議呢?

不如,我們問問電腦的演算法。



今天要分享的這篇文章,是我在閱讀完Brian Christian, Tom Griffiths合著的《決斷的演算》(英文原名為Algorithms to Live By: The Computer Science of Human Decisions)的心得摘要。這本書最有意思的是,在我們人生遭遇難題時,還可以向數學、電腦科學的專家尋求理性的建議。

《決斷的演算》

電腦對於現代人來說,已經是不可或缺的生產工具,但對於電腦演算法的運作,了解的人卻是微乎其微。事實上,我們在日常遭遇的許多問題,電腦科學家在許多年前就已經在研究,包含「如何在一系列的限制中做出最佳的決策」、「如何在有限時間內分配注意力,以獲得最大產出」、又或者「遭遇問題時,應該要繼續蒐集資訊,還是根據現有資料採取行動」。這些在電腦運算效能遭遇的問題,換個角度來看,不就是我們在日常生活中所說的「時間管理」、「資源分配效率最大化」...等課題嗎?

看完這篇文章後,你可以得到來自於數學家、電腦科學家針對上述提到問題的建議,包含:

  • 最佳停止點:愛情中甚麼時候應該見好就收
  • 開發與善用:該嘗試新歡?還是固守舊愛
  • 鬆弛:放鬆一點,不求完美才有解

一、最佳停止點:37%法則


讓我們回到文章開頭的第一個問題:「假設你從18歲開始談戀愛,你要跟多少人在一起過,才會知道誰最適合你並且步入人生下一個階段?」這類問題困難的不是該選擇哪一個,而是我們可以考慮的選項還有幾個。你可能會想:「在愛情當中,只要感覺對了就對了,這種事情不是就是憑自己和這個人相處的感覺嗎?」但數學家會告訴你,問題可能沒有這麼簡單。

這個問題的雛型來自於經典的「秘書問題」:
假設你是一個企業老闆,你需要跟幾位應徵者面談以決定要聘僱誰來當你的秘書,你的最佳策略是盡量從中找到最佳人選的機率。你以隨機順序和應徵者面談,每次一位,你可以在任何時候決定錄取某個人,而且那個人一定會接受職位,並且結束此次的應徵程序。不過如果你決定不錄取某個人,之後就再也沒機會用他。

看到上面的問題,是不是覺得跟「談戀愛問題」很相似?雖然真實的人生當中我們或許會突破一些限制(例如劈腿、和前男/女朋友復合...等),但基本的問題的架構是一致的,也就是錯過就沒有辦法反悔。此時,我們應該如何判斷現在和我們牽手的這一位,就是該定下來的另一半?

數學家告訴我們,要在37%的時間點做決定。

根據數學家推導機率並建議我們選擇「最佳情人」的策略是:思而後行,我們可以設定一段「思考時間」,也就是研究各種選擇和蒐集資料,在這段期間不論遇到多優秀的人都不決定定下來,一旦過了37%的時間點,只要看到比思考階段更好的人選,我們就要立刻下決定。舉例來說,假設我們從18歲開始談戀愛,並預計在40歲的時間點要結婚,中間22年時間(40-18 =22)的37%是26.1歲,當我們一過了這個年齡,遇見26.1歲前更好的伴侶,就要立刻定下來。從下表可以看到,當應徵/約會的人數愈大時,聘到最佳人選的機率愈趨近於37%。

<你在徵人嗎?這個表格告訴你,面試多少人就下決定最好>


當然,事實不如我們想的這般順利,例如我們聘請的人選/約會的對象可能會拒絕,拒絕的機率也可能不盡相同。因此數學家從「古典秘書問題」發展出許多的變形,例如當人選拒絕的機率 = 1/2 (50%)時,我們的思考時間就必須拉得更長,至於其中的數字是如何推導,數學家又如何將此類問題架構延伸至「甚麼時候賣房最好」、「甚麼時候在停車場遇到空位就停車最好」...etc,就請大家自行翻閱此書吧!


二、開發與善用:何時該維持原樣、何時又該探索新地點


開發與善用是兩個完全顛倒的詞,簡單來講,開發是蒐集新資料,善用則是利用現有資料取得已知的良好結果。舉凡從上班族中午午餐應該吃些甚麼(是吃昨天去過的餐廳、還是前往一個新地點探索)、賭場內應該在哪一個吃角子老虎機下注(是持續在這台下注、還是轉移陣地)、甚至到電影公司開拍電影(要開拍新系列、還是要續拍續集)...等,都屬於此問題的範疇。

書中對以上的問題提出來自於數學家不同的解釋,雖然有許多不同的論證,但答案卻意外的簡單,也就是:端看你還剩下多少的時間。一位資料科學家Chris Stucchio說:
我搬到一個城市時,會比離開時更想要嘗試新餐廳。現在我大多光顧喜歡的餐廳,因為我知道自己不久後就會離開紐約。不過幾年前我剛到印度的Pune時,只能到處找看來不會拉肚子的地方吃飯。等到我快離開那城市,我只到喜歡的地方吃飯,而不是嘗試新餐廳...。即使我找到更好的餐廳,我還是只能去一、兩次,那幹嘛冒這個險?」

嘗試新事物的特性是,探索和發現新喜好的的價值會隨時間而逐漸降低;相反的,善用的價值會隨時間而逐漸提高。因此如果我們還有時間用到開發結果,就選擇開發;如果打算離開,就選擇善用。採取哪個策略完全取決於時間。

回到前面提到的問題,面對日常上班族中午該吃甚麼樣的午餐,如果中午休息時間還剩下許多,或許你可以從提議從Google Map探索一家新餐廳;如果在過30分鐘就要開會了,那還不如在街角快速買個80元自助餐。

<時間充足情況下,善用google map來進行新餐廳「開發」>




三、鬆弛(relaxation):放輕鬆,不求完美才有解


讓我們一起想想,在生活中遇到無法解決(或是難度非常高的問題)時,我們會怎麼做?是拚死拚活苦幹呢、還是會果斷放棄?以上兩個方法聽起來都不太好。事實上數學家與電腦科學家告訴我們一個思維:應該透過「放鬆問題限制」以取得解題的起點,接著再逐步把限制加回去,盡可能取得最佳近似解。

書中提到,類似的數學問題在不同時代出現的名稱都不同,例如:林肯(草原律師)巡迴問題、業務員出差問題、無人機送貨問題,也就是手中有許多需要拜訪的地點,在允許只能經過一次的前提之下,找出最短路徑。

<林肯(草原律師)獨立宣言巡迴路線>


這些問題的名稱不同,甚至跟我們平時遭遇的問題有點像(例如我想要在多個不同地點辦理事務,如何安排路線才可以花最少的車資/時間/金錢),但實際上問題的本質是相同的,也就是「很難有一個完美的演算法輕鬆得到最佳答案」。

面對這些難解的問題,數學家提供了我們一項非常有用的思維 - 放鬆限制以取得解題的起點,具體有以下三種方法:

  1. 限制鬆弛法:將限制條件去除的前提下,先得到最差可能解,並以此為探討問題的新起點,將限制逐步加回來求解。以安排拜訪地點問題來說,如果我們允許重複經過同一地點兩次,雖然得到的答案並非原問題的解答,但是至少可以讓我們了解實際狀況的下邊界(例如在放鬆限制下我們得知的距離為160公里,至少我們可以知道原問題的解答一定小於160公里)。這樣的觀念其實我們在現實生活中,其實都已經自動的被使用了,例如在執行一件讓人緊張的重大任務時,有些人可能會激勵我們:「如果你不會失敗的話,你會如何做?」這樣的思維模式。

  1. 連續鬆弛法:生活中有許多的問題屬於「不是這個、就是那個」的狀況,例如一場婚禮裡面,我們如果要安排每位朋友、賓客的桌次,會發現這個人「不是坐在這桌、就是坐在那桌」,在數學裡面這稱為離散型問題(問題中的資料點必須是整數)。若遇到這種問題,讓我們先允許答案可以是連續解,也就是我們允許答案可以是小數點,最後在使用四捨五入取得近似解。例如,在經過實際演算法運算之後,我們允許這個人可以坐在0.5桌,但0.5桌是甚麼意思呢?我們或許可以針對鬆弛解中,有「0.5桌」以上的人就安排在主桌桌次,以下的就依順序安排離主桌愈遠的地方。

  1. 拉氏鬆弛法:允許答案突破一些問題限制,在可能需要付出一些代價前提下,去求得近似解。例如美國球賽的競賽隊伍安排,若要考慮來自各界的期望(例如:聯盟的限制、球迷預期隊伍競賽的限制...等),要排出完美的球賽競賽表是近乎不可能的事情,但若是允許突破些許限制(例如不完全滿足某些利益團體的要求),就可以取得對所有人「還算不錯」的近似解。

我們可以從這裡得到的啟示是:面對艱難的問題,時常聽到有人說要「跳脫框架思考」,但甚麼叫做框架?又該如何跳脫?我想這就是具體回答以上兩個問題的答案,框架來自於問題諸多的限制、跳脫框架是叫我們放鬆限制。按照上述提到的三種方法,不論是暫時放下限制、放寬限制或是故意突破些許限制,都能夠幫助我們「放鬆問題」來追尋答案。

四、結語


人和機器看起來似乎有諸多的不同,但從這本書中可以發現,人類所遭遇的問題,本質上和機器遭遇的運算問題是相同的。現實生活中的問題雖然充滿諸多的不確定因素,但數學和科學領域何嘗不是呢?數學家、電腦科學家提供的解答「看起來」不符合現實生活中的問題,但或許只是沒有一本書、一些人透過這樣的知識架構來回答這些問題。《決斷的演算》是一本讀起來不輕鬆的書,但作者以電腦演算法的角度切入,讓我們能以「理性到不尋常」的角度,來重新解讀我們日常生活的大小事情。

留言

這個網誌中的熱門文章

【讀書】學習怎麼學習 - 成甲《精準學習》讀後心得

【工具文】如何「有效」使用Evernote? 我們的第二個大腦

【讀書/工具文】如何閱讀一本書