Total Pageviews

2022/07/09

[閱讀筆記] The Math of Life and Death - 結語 數學帶來的解放 (Epilogue)

 

  1. 在現今社會,幾乎每件事都有一套數學道理,深深影響著我們如何溝通、如何從 A 點到 B 點,也徹底改變我們如何做買賣、如何工作、如何放鬆。不論是在法庭、病房、辦公室或家庭中,都能感受到數學的影響。

  2. 數學的使用結果是善或惡,端看使用的人是誰。畢竟,數學計能揪出造假畫家,也能造出原子彈。顯然,在我們時常運用著各種數學工具時,也該好好瞭解這些工具隱藏什麼問題。有些功能你以為只是用來推薦朋友、量身打造廣告,但最後卻變成假新聞盛行、個人隱私遭到侵害。

  3. 我們必須負起責任,從過去的數學錯誤中學習,避免未來再犯,或者更進一步,讓再犯的可能性完全消失。

謹慎/良善地使用數學

粗心/惡意地使用數學

將人類送上月球

摧毀數百萬美元的火星探測者號

成為分析犯罪的有力工具

讓無辜的人身陷囹圄

打造出挽救生命的尖端醫學工具

因劑量計算錯誤而奪人性命

  1. 持冷靜、掌握數學

工具/概念

重點

數學建模

  • 讓我們一窺未來前景,透過現有資料數據描繪世界的現況,更能提供一定的預知能力

  • 🦠 藉由數學流行病學,預見疾病的未來發展,讓我們能事前主動積極預防,而非事後被動進行治療

最佳停止時機

(37% 法則)

  • 讓我們在無法事先了解所有選項的情況下,有最大機會做出最好的選擇。

  • 37% 法則不一定能讓你的人生找到完美伴侶或是保證找到車位,但是卻是數學家用模型告訴你如何面對一個既期待又怕錯過的未來

個人基因組學

  • 可能因此徹底改變我們對於未來疾病風險的理解,但還是得先符合前提:詮釋結果的方式必須標準化

  • 使用數學時,要留意不要超出合理的範疇有些時候,數學絕對不是解決問題的適當工具;也有些時候,無疑必須有人工監督判斷

均值回歸

  • 協助你看穿許多另類療法,了解它們表面上的療效只是均值回歸,別讓江湖郎中阻礙我們接受真正能夠救命的治療。

  • 💉 數學已經證明,疫苗能拯救脆弱的生命,讓疾病徹底消失,我們就絕對不能被反疫苗人士影響,去質疑疫苗功效。

  1. 想讓數學為自己賦權,一大重點在於必須勇敢質疑那些運用這項武器的人,打破確定性的假象。只要我們能夠意識到絕對風險、相對風險、比率偏誤、不相等表達、抽樣偏誤,就會開始質疑報紙頭條大辣辣寫的統計數據、廣告裡講的「研究」、又或是政客嘴裡真假參半的訊息。

2022/07/08

[閱讀筆記] The Math of Life and Death - ㊆ 易感者、感染者、排除者:將疾病控制在我們手中 (Susceptible, Infective, Removed: How to Stop an Epidemic)

 

  1. 聲勢日益浩大的反疫苗接種運動,令全人類暴露於風險中;利用數學,我們才能對抗全球流行病。在種種攸關生死、希望能將疾病從地球掃除的作為中,數學正是一切核心。

  2. 👩‍🔬🧪🧫💉 在 18 世紀,天花死亡率 20%、接種天花疫苗死亡率是 2%。1766年瑞士數學家 Daniel Bernoulli 第一次嘗試用統計數據分析問題。當時的數據目前仍被保存著,這個數據被用來分析天花的傳播和死亡率,並以此證明疫苗的效力。根據最後的分析結論,在天花肆虐的年代,只有 43% 的嬰兒能活到 25 歲;如果全民都接種天花苗,將有 50% 的嬰兒能活到 25 歲,當時的醫療水準不高,此增長顯示疫苗有大幅改善存活率。

  3. 傳染病 S-I-R 模型 《The Model Thinkerhttps://reurl.cc/DZWd4m

S-I-R 模型說明

S (Susceptible,可能感染者)

有可能感染疾病的人

I (Infective,感染者)

確實染病、能傳染給別人的人

R (Removed,排除者)

已染病且痊癒或死亡者,不再是傳播病毒者

基本傳染數

  • S-I-R 模型設定了一個臨界點,稱為「基本傳染數」(basic reproduction number),以 R0 表示。R0 等於「接觸機率」乘以「傳播機率」除以「復原機率」疾病的 R0 如果 > 1,則可以透過人群傳播;如果 R0  < 1,則疾病會逐漸消失

  • 例如,流行性感冒的 R0 = 3;而透過空氣傳播的麻疹是 15;透過性接觸和共用針頭傳染的 HIV 病毒是 4。

  • 估算 R0 的大小時,並不會假設人們因疾病而改變日常行為。但實際上若學校受到蝨子侵擾,家長可能會將小孩留在家中,藉此減少接觸機率;或者,家長可能會幫小孩剃頭,藉此降低接觸時的傳播機率,這些動作都會降低蝨子傳染的 R0

疫苗接種閾值 (vaccination threshold)

  • 如果沒有疫苗,隔離是一種高成本、但能解決疾病傳播問題的選項。如果疫苗已經研發成功,接種疫苗能有效預防疾病傳播,甚至不必所有人都接種疫苗,就能避免疾病傳播。

  • 「疫苗接種閾值」(vaccination threshold) 代表需要接種疫苗來避免疾病傳播的臨界相關人群比例,由模型可以推導出計算公式為:疫苗接種閾值大於或等於「R減 1 之後,除以 R0

  • 疫苗接種閾值的大小,會隨著基本傳染數的增加而提高。若要避免基本傳染數為 6 的脊髓灰質炎(會造成小兒麻痺症)傳播,5/6 的相關人群必須接種疫苗;但若要避免基本傳染數為 15 的麻疹傳播,則需要 14/15 的相關人群接種疫苗。

  • 推算出疫苗接種閾值,有助於制定公共衛生政策。如果接種疫苗者的占比太少,則疾病會持續傳播,因此,政府通常會接種超過SIR模型估算閾值的相關人群比例。而像是麻疹、脊髓灰質炎這類基本傳染數極大的疾病,政府會要求每個人都要接種疫苗

  • 有些人擔心疫苗會帶來副作用,因此不願參與疫苗接種計畫。如果擔心的人只占總人口一小部分,其他絕大多數人接種了疫苗之後,也能避免疾病傳播給未接種疫苗的人,流行病學家稱這種現象為「群體免疫」(herd immunity),這等於是:選擇不注射疫苗的人,搭了注射疫苗的人群的順風車。

S-I-R 模型告訴我們

  • 透過自我隔離此簡單的方法,就能減少疾病傳播機會,進而縮小疾病爆發規模

  • 許多餐飲業、學校、醫院的從業人員,都存在許多勉強出勤的狀況,勉強出勤 (presenteeism) 只會導致更多人生病,降低整體效率。如果你身體不適,就不該去上班。如果你待在家直到康復,就是讓自己從「感染者」重新分類為「排除者」

  • 勉強出勤最嚴重的是餐飲業,單單在美國, 2009 ~ 2012 年間就發生超過 1000 起的諾羅病毒感染事件,影響 21,000 人,而其中 70% 與服務人員生病有關。

  • 疫情最後消散是因為沒有感染者 (Infective),而不是因為沒有易感染者 (Susceptible)


  1. 接觸者追蹤 (contact tracing)

說明

  • 流行病學專家不斷追溯許多受感染的世代,直到最初發病的那一個病例,也就是所謂的「零號病人」。

接觸者追蹤的功用

  • 了解病毒傳播的複雜模式,設法預防未來再次爆發,讓我們能及時應對、控制疾病傳播。

  • 任何人只要曾與感染者在潛伏期內有直接接觸,就必須隔離到證明未受感染為止;如果在隔離期間發現確實遭受感染,就須繼續隔離,直到確認不會再傳染該疾病為止。


  1. 以 SARS 為例, R= 2,第一位患者是零號病人,會將 SARS 傳染給兩個人,這兩個人會再傳染給其他兩個人,以此類推。如果繼續這樣傳播,過了 10 代,就會超過千人被傳染;再過 10 代,總數將超過百萬人。

病毒傳播圖

病毒的發展

  • 正如迷音的病毒式瘋傳、金字塔型騙局的擴張、細菌菌落的成長,R0 所預測的指數成長多半在幾代後就無以為繼。因為易感染者與感染者的接觸率逐漸降低,爆發最後最有高峰,接下來就是下降。

  • 最終,就算已經沒有剩下任何感染者,疫情正式結束後,還是有一些易感染者從頭到尾都未受感染。

影響 R0 值的三項因素

  • ① 人口規模、② 病毒傳染力 (force of infection)、③ 病患康復或死亡速度

    • ① ② 增加,R0 值增加,越可能會大爆發;

    • ③ 增加,R0 值降低,康復快代表能將疾病傳染給他人的時間越短,疾病爆發可能性就越小。

  • 對我們來說,只有前兩項是可控的;雖然可用抗生素或抗病毒藥物來治療,但康復或致死率是由治病病原體本身特性決定。

Re (有效傳染數, effective reproduction number)

  • 指的是在疾病爆發過程的特定時間點上,每位感染者平均造成的續發感染人數 (secondary infection)。如果透過醫療干預將 Re 值 < 1 ,疾病就終將消散

R0 值與疾病影響程度之間的關聯

  • R0 值對疾病控制很重要,但無法告訴我們疾病對患者的影響有多嚴重。麻疹的 R0 值約 12 ~ 18, Ebola (伊波拉病毒) 的 R0 值約 0.5,雖然麻疹傳播迅速,但與致死率高達 50%~70% 的 Ebola 相比,只能說小巫見大巫。

  • 致死率高的疾病,通常傳染力很低,因為太快殺死病患,就會降低傳染機會;只有災難片才會看到致死率高、傳染力高的疾病

  • 雖然高致死率會提升對某個疾病的恐懼,但相較之下,R0 值高、致死率低的疾病,可能因感染人數更多,最終導致更多人病故


  1. 想減少疾病傳播,最有效的選項之一就是「接種疫苗」,讓民眾從易感染者 (S) 變成排除者 (R),有效降低易感染者規模。然而,接種疫苗屬於預防措施,目的是減少疫情爆發的可能性;當疫情大爆發,想在有限的時間完成有效疫苗的研發與測試,往往是天方夜譚。

  1. 對付動物的傳染病,最有效的方式是「撲殺」,此舉能快速降低 Re (有效傳染數, effective reproduction number) 到 1 以下。英國在 2001 年陷入口蹄疫風暴時,除了撲殺遭感染的動物以外,並採取「環形範圍撲殺」(ring culling),將受感染的農場的半徑三公里內的動物 (不管是否有受感染) 全面撲殺,藉此讓傳染期從三週縮短到只剩幾天,快速且大幅下降 Re 值。撲殺未感染的動物,就是減少易感染的動物 (與Re 值相關因素之一),從數學上就可以得知此舉能減緩疾病傳播

  1. isolation 隔離 / quarantine (隔離)檢疫 (https://reurl.cc/XlOxRD)

隔離 / 檢疫

說明

Isolation 

將已經患病的人跟健康的人隔離開來,避免傳染疾病

Quarantine 

隔開或限制可能與患者接觸的人的行為,看看他們是否有被傳染


  1. 若是在未接種疫苗的人爆發疾病,無法實施撲殺的手段。然而,隔離檢疫 (quarantine) 與隔離 (isolation) 已被證明是有效的方法。將已感染者隔離 (isolation),可以降低傳播速度;隔開或限制可能與患者接觸的人的行為 (quarantine),則可減少易感染者族群。兩者都可降低 Re 值。

  1. 歐洲最後一次爆發天花疫情是 1972 年的南斯拉夫,政府大舉徵用旅館,實施檢疫 (quarantine) 與隔離 (isolation) 政策,快速降低天花傳播。

  1. 對於水痘之類相對輕症的疾病,若將染病與未染病的兒童互相隔離開來,將嚴重影響上課天數。數學模型還證明,若要求健康的孩子居家檢疫,將會讓他們在年紀較大時才感染水痘,將引發更嚴重的併發症。

  1. Ebola 傳染期非常的長,在病患死亡後,屍體仍具有極高病毒量,任何與屍體接觸的人都可能遭受感染。更糟糕的是,獅子山的喪禮習俗,包含撫摸屍體,當地因喪禮而導致疫情大爆發。💀 根據 2014 年的研究,Ebola 的新增病例有 22% 來自喪禮,自從限制喪禮儀式後,終於控制 R0  值,並在 2016 年宣告疫情結束。

  2. 兒童疾病會以週期性爆發模式反覆出現,原因在於 Re (有效傳染數) 值會隨著易感染的族群大小而變動。每次疫情大爆發,就會有大批沒有抗體的兒童遭到感染。

  1. 群體免疫 (herd immunity) 是指,當免疫族群夠大,就足以減緩、甚至阻止疾病傳播,好比各種兒童疾病爆發之間會出現休眠期。這種群體效應有個令人意外的特性,不需要每個人都對疾病免疫,就能讓所有人口得到保護,只要讓 Re (有效傳染數) 值 < 1,傳播鏈就會斷掉,使得疾病無法傳播

  2. 群體要有多少比例才能達到免疫, R0 (基本傳染數) 是決定關鍵。假設有個人感染致命流感,假設他在為期一週的傳染期遇到 20 個易感染者,並傳染給其中的四個人,這流感的 R0 (基本傳染數) = 4、 Re (有效傳染數) = 4【圖一】;假設有一半的人曾接種疫苗,這流感的 R0 (基本傳染數) = 4、 Re (有效傳染數) = 2 【圖二】;假設有 3/4 的人曾接種疫苗,這流感的 R0 (基本傳染數) = 4、 Re (有效傳染數) = 1 【圖三】。對於 R0 (基本傳染數) = 4 的疾病,需要讓 3/4 的人接種疫苗,才能讓 Re (有效傳染數) < 1;換言之,若想達到群體免疫門檻,未接種疫苗的人口比例不能超過 1/R0

【圖一】

【圖二】

【圖三】


  1. 舉例來說,水痘的 R0 (基本傳染數) = 10,也就是必須讓 9/10 的人免疫,才能讓剩下的人受到保護;麻疹的 R0 (基本傳染數) 約 12 ~ 18,需要92% ~ 95%的人口接種疫苗才行。

  2. 事實證明,只要經常、仔細洗手,這個簡單舉動就能讓流感之類的呼吸道疾病 Re (有效傳染數) 值大幅減少 3/4。而對於某些疾病,更可能已經足以讓 R0 (基本傳染數) 值降到門檻值以下,使疾病無法爆發流行。

  3. 接種疫苗是個理所當然、根本無須考慮的決定,不但可以保護自己,更可以保護家人、朋友、鄰居和同事。 WHO 的數據顯示,疫苗每年拯救數百萬人的生命,只要我們繼續改善全球的施打率,還能再多拯救幾百萬人。疫苗是預防致命疾病爆發的最佳機會,也是讓這些疾病永遠無法造成危害的唯一機會

2022/07/07

[閱讀筆記] The Math of Life and Death - ㊅ 永不停歇的改善:從演化到電子商務,展現演算法的無限潛力 (Relentless Optimization: From Evolution to E-commerce, Life is an Algorithm)

 

  1. 演算法其實是一連串的指示,用來明確完成某一項任務,從整理手邊蒐集的唱片到做出一到菜等。然而,史上最早的演算法,本質上是很單純的數學。

古早時代的演算法 🤔💭📊🧮📝

  1. 古埃及時代有一套簡單的演算法,用來將兩個數字相乘;

  2. 巴比倫也有一套演算法來計算平方根;

  3. 西元前三世紀,古希臘數學家 Eratosthenes 發明質數篩選法 (sieve),可以找出一定範圍內的質數;

  4. 阿基米德發明窮舉法 (method of exhaustion) 來計算圓周率。


  1. 現在電腦執行的演算法日益複雜,當我們想要有效率的處理日常事務時,演算法變成不可或缺的一環。以往的解答已經無法滿足我們的需求


Before

Now

搜尋引擎

找到資料

找出最相關的資料 ℹ️

氣象預報

告訴你明天天氣

告訴你明天下午五點會下雨 ☔

GPS

算出一條路線

提供能最快抵達的路線 🚗


  1. P/NP 問題的核心:針對問題的答案做驗證,通常比找出問題的答案還容易。這個數學未解之謎真正要問的是:如果某個解答能用電腦快速驗證,是否也能用電腦快速求解?

P 問題 (Practical Problem)

  • 如果有一組問題,能在多項式時間 (polynomial time) 內快速求解,就是 P 問題

  • 🧩 假設我打造一套會拼拼圖的演算法,求解時間取決於片數、片數的平方 / 立方 / 更高的次方。舉例來說,如果這套系統取決於片數的平方,解開兩片拼圖需要 22 = 4 秒、10 片拼圖要 102 = 100 秒、100 片拼圖要 1002 = 10,000 秒,雖然看起來很久,但仍舊是幾個小時內可以解決的事。

NP 問題 (Not Practical Problem)

  • 另一種問題,可以快速驗證,但不一定能快速求解,就是 NP 問題,NP 指的是非多項式時間 (nondeterministic polynomial time) 。NP 問題會因問題規模的增加,很快得變得不可行

  • 一旦能快速求解,當然就可快速驗證答案,所以 P 問題是 NP 問題的子集合。

  • 假設這套會拼拼圖的演算法,需要的是非多項式時間 (NP),解開兩片拼圖一樣需要 22 = 4 秒、10 片拼圖要 210 = 1,024 秒、100 片拼圖要 2100  秒,這已經超過從宇宙爆炸迄今的時間。

P 與 NP 問題間的關係


  1. Bubble Sort、Insertion Sort、Merge Sort 《Algorithms to Live By

Bubble Sort

是一種簡單的排序演算法。它重複走訪過要排序的數列,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來。走訪數列的工作是重複地進行直到沒有再需要交換,也就是說該數列已經排序完成。這個演算法的名字由來是因為越小的元素會經由交換慢慢「浮」到數列的頂端。

是最簡單瞭解和實作的排序算法之一,但它對於包含大量的元素的數列排序是很沒有效率的

  • 平均時間複雜度O(n2)

  • 最壞時間複雜度O(n2)

  • 最佳時間複雜度O(n)

(Ref.: https://reurl.cc/Dv3nRE)

Insertion Sort

此排序法優點是比氣泡排序法更直覺,評價較好,缺點是其實沒有快多少。採取此方式時,每個位置還是都要插一次,每次插入平均時間需經過一半的位置,才能找到正確的位置。儘管插入排序法速度快了一點,花費時間仍是平方時間,沒有比氣泡排序快多少

  • 平均時間複雜度O(n2)

  • 最壞時間複雜度O(n2)

  • 最佳時間複雜度O(n)

(Ref.: https://reurl.cc/qmNdzy)

Merge Sort

上述兩個看似合理且直覺的排序方法,搜尋時間都是平方時間 (quadratic time, O(n2)),排序對象一多就難以負荷。合併排序 (merge sort) 就是用來解決上述難題,它的複雜性介於線性時間和平方時間之間,更精確地說是線性對數時間 (linearithmic time, O(n log n))。屬於 Divide and Conquer 演算法,把問題先拆解 (divide) 成子問題,並在逐一處理子問題後,將子問題的結果合併(conquer),如此便解決了原先的問題

(Ref.: https://reurl.cc/bzEEnl)


  1. 排序與運動賽事的類比 《Algorithms to Live By

排序方法

運動賽事

Bubble sort

羽球、壁球等常用的排位賽 (ladder),是依照排名順序列出的選手名單,每名選手可以挑戰前一名選手,如果獲勝,排名就對調。這就是運動界的 bubble sort,執行時間是平方時間。

Merge sort

NCAA 的單淘汰制 (tournament bracket),每一輪比賽都淘汰一半隊伍,從 64 強、32 強、16 強、8 強、4 強以及決賽。這就是運動界的 merge sort,一開始為排序的隊伍兩兩比賽,接著不斷對併再對併。


  1. 旅行推銷員問題 (Travelling salesman problem, TSP),是組合最佳化中的一個NP 困難問題,在作業研究和理論電腦科學中非常重要。問題內容為「給定一系列城市和每對城市之間的距離,求解訪問每一座城市一次並回到起始城市的最短迴路。」旅行推銷員問題有個「決策版本」,它只問有沒有比某長度更短的路徑,就是 NP-Complete 問題的經典範例。理論上,如果能提出一套可行的演算法,解出某個 NP-Complte 問題,就能轉換這套演算法來解決其他 NP 問題,這樣就能證明 P = NP。

P = NP 造成的災難

  • 💻 🛒 🔐 線上交易安全性將會是災難,因為我們正是靠著難以解決的 NP 問題,來建置現行的網路加密技術。

P = NP 造成的好處

  • 🏭 工廠可以排出最有效率的製程

  • 🚚 快遞公司可以排出最有效率的送貨路線

  • 🧬 找到更有效率的基因定序方法

  • 🌀  找出更有效率的預測自然災害方法


  1. P 與 NP 的對抗,其實是在確認人類的創意是否能自動化。若 P = NP,那麼任何可證明的數學定理,電腦都能在一定的程式序列內找出證明。這代表過去人類許多偉大的智力成就 (ex. 牛頓的運動定律、達爾文的自然選擇演化論、愛因斯坦的廣義相對論、懷爾斯的費馬最後定理證明),只需一台機器即可複製並取代,許多數學家將因此失業。

  2. 我們有時候不一定想要完美但緩慢的方案,反而寧願接受普通但快速的方案。例如,💼 在上班前,我不太需要研究怎麼擺才能讓公事包裡的物品占據最小空間,只要能讓所有東西塞進去即可。啟發式演算法 (heuristic algorithm,又稱經驗法則),就是讓我們在面對許多不同問題時,得到與最佳解相去不遠的解決方案

  3. 貪婪演算法 (greedy algorithm) ,是一種短視的演算法,靠著找出當下問題的解決方法,希望最後找出整體問題的最佳解。貪婪演算法,一定能找出某種解決方案,卻無法保證最後得到的是最佳解,有時候甚至稱不上普通解。但確實有些問題,能夠用此法得到最佳解。

  4. 汽車衛星導航採用 Dijkstra's algorithm (戴克斯特拉演算法),是一種 greedy 演算法,每次都去找當前最小的那一條路,能在多項式時間 (polynomial time) 內快速找出「最短路徑」的答案

運用 Dijkstra's algorithm 尋找 A 到 E 的最短路徑 (https://reurl.cc/735bE5)

建立表格

  • Visited: 有沒有走過這個點,預設為 False

  • Cost: 從起點到這個點所需路程,預設為無限大

  • Path: 這個點的上一個相連點,預設 -1 (或是任何可代表非圖上點的值)

A → C → E 【Cost = 12】

A → B → D → E 【最短路徑,Cost = 8】

A → B → E 【Cost = 9】


  1. 群體智慧 (Swarm Intelligence) 是自然科學研究的領域,他研究的對象主要是自然群體生物在現實環境中,各種群體行為的相關議題,例如:路徑規劃、任務分配和築巢…等。很多時候甚至可以觀察到,即使是弱小的生物個體,當群聚一起時,卻可以展現出極其複雜的集體行為。常被研究的自然群體生物有:細菌菌落、魚群、螞蟻群、蜜蜂群、蝗蟲、鳥群、靈長類部落,當然其中也包含了人類。研究這些群體是非常有趣的,例如:螞蟻群在工作時,儘管沒有領袖發號司令,卻可以在移動過程中漸漸地找出最佳移動路徑。演算法設計人員從動物間的互動得到靈感,可以派出大量彼此連結緊密的人工智慧體 (artificial agent),讓它們去探索某個環境;這些人工智慧體能夠如動物群體般的迅速溝通互動,在搜尋環境的過程中,互相掌握其他個體的發現。它的控制是分布式的,不存在中心控制。(https://reurl.cc/73ORrN)

  2. 在我們眼中,有許多物種適應良好,堪稱典範。但有可能演化還沒找到最佳方案,只是我們想像力不足,才會誤會這已是「完美」的方案;幸好有隨機的組合與突變,能讓我們擺脫局部最大值,進一步找到更好的解決方案

  1. 隨機性演算法未必能提出最佳解,但它不用像確定性演算法那麼辛苦,只要有計畫地丟幾個硬幣,就能在短短時間內提出相當接近最佳解的答案。隨機性演算法用於特定問題的效果,甚至超越最好的確定性演算法。問題的最佳解決方法有時候是交給機率決定,而不是自己試圖推出答案。運用隨機法,想辦法從局部最大值,變成整體最大值。《Algorithms to Live By

  1. 無論是抖動、隨機重新開始、或是接受解決方案偶而變糟,隨機性用於避免局部最大值的效果都很好。機率不只是處理困難最佳化問題的可行方法,在許多狀況下還是必要方法。從模擬退火法可以得知,你應盡早使用隨機性,並快速離開隨機的狀態,隨時間而降低隨機性,停留在接近結冰的時間最久。壓住火氣,不要急躁。Algorithms to Live By

  1. 在最佳停止問題 (Optimal Stopping) 中,真正讓人困擾的不是該選擇哪個,而是可以考慮的選項有多少。面臨這類問題的不只有情侶與想租房子的人,還有駕駛人、想買屋的人、竊賊、開車度假找旅館的人等。37% Rule 源自於著名的最佳停止問題 - 秘書問題 (secretary problem):《Algorithms to Live By

秘書問題

  • 假設你想跟幾個應徵者面試,並盡量提高從中找到最佳人選的機率。

  • 以隨機順序與應徵者面談,每次一位,可以在任何時候決定錄取人選,且那個人一定會接受職位,並結束徵人過程。但是若你決定不錄取某人,之後就沒有機會錄用他。

  • 【決策的兩難】

    • ① 太早做決定,其實有更好的人選。

    • ② 找得太久,想找更好的人,但是不存在這樣的人選。

  • 最佳策略顯然是找出兩者間的平衡,不要太快做決定,但也不要太倉促決定、太不挑

思而後行的策略 (秘書問題的最佳解決方案)

設定一段「思考」時間階段,也就是研究各種選擇和蒐集資料,在這段時間不論遇到多優秀的人,都不錄取;過了設定的時間階段後,就要準備好隨時出手,只要看到比思考階段的應徵者更好的人選,毫不猶豫馬上錄取。意即,一旦過了這個底線,就大膽地開始選擇,這就是最好的選擇模式

37% Rule 日常生活例子(Ref.: https://reurl.cc/xgORzE)

  • 👨‍💼 假設你是一名人力主管,要找一個會計,你們這家公司家大業大,共有十萬人來應徵,那歐拉告訴你,你的策略就是先面試 10,000 x 0.37 = 37,000 人,這些人全部打槍不錄取,到 37,001 人之後如果有比前面更優秀的人就直接錄取。

  • 👧 假設女孩的追求者有 10 個人,依據 37% 法則,女孩會對前 4 個追求者全部發好人卡,等到第 5 位之後,若有條件更好的男生出現則直接接受。

  • 🅿️ 我們在找車位的時候也是一樣,總是想要停的離目的地近一點,但是又怕錯過了這個車位之後就沒有了,37% 法則告訴你,假設目前的車位離你的目的地有十分鐘的距離,那當你開到距離目的地 6.3 分鐘以後只要有空車位,你應該馬上停車。

  • 🍽️ 假設你與另一半在逛街、找餐廳,你大約有十間餐廳可以選且不想留下優柔寡斷的印象,最好的策略前三間餐廳只是觀察、不進去,從第四間開始,只要比前三間都好,就近去用餐。

  • 當賣場有 11 個收銀櫃臺,你可以先觀察 4 個收銀櫃檯的排隊長度,接下來只要看到更短的隊伍,就去排那一排。

37% Rule 意涵

  • 最算採取此最佳策略,失敗機率高達 63% (1-0.37=0.63)。絕大多數的狀況你無法找到最佳人選,但最佳停止就是最佳策略,不管有多少人選都適用。

  • 37%法則不一定能讓你的人生找到完美伴侶或是保證找到車位,但是卻是數學家用模型告訴你如何面對一個既期待又怕錯過的未來


  1. 世上有很多人都會跟我們處得不錯,能讓我們有幸福的一生。最佳停止時機的策略,並不會提供所有人生問題的答案。我們雖然可以用演算法來簡化、加速單調乏味的任務,但風險也伴隨而來。因為演算法包含輸入、規則和輸出,也就代表有三個可能錯誤的地方。就算使用者確信所用的規則完全符合需求,只要輸入有誤或輸出不符合規範,就可能導致災難

  2. ​💠​🤖​ 現在的股市交易,已有越來越多是程式交易 (algo trading),因為面對市場的種種變化,電腦察覺並做出回應的速度遠快於真人。根據估計,Wall Street 的交易已大約有 70% 都是由這種所謂的黑盒子機器來處理

  3. 📉 2010/5/6 美股遭到閃電崩盤 (flash crash),電腦股票系統被不明原因觸發,連編寫程式的人也不了解電腦做的交易。道瓊工業指數在 5 分鐘內下跌近 600 點,電腦間在 15 秒內互相交易 27,000 份期貨合約,最終因期貨市場內建的保護機制,將所有交易中止 5 秒鐘,電腦的瘋狂交易就令人讓人難以置信的恢復正常。電腦的演算法是人撰寫的,電腦沒有常識,只會盲目地買進與賣出,因為這就是它的演算法要求它們做的事情。《Standard Deviations: Flawed Assumptions, Tortured Data, and Other Ways to Lie with Statistics

📉 2010/5/6 flash crash (https://reurl.cc/DZap3e)


  1. Navinder Sarao 在自家臥室就成功操控了股市,正說明用演算法發動惡意攻擊是多麼容易的事。我們太常把演算法視為一系列公正、不帶偏見、不受情緒影響的指令,而忘了所有演算法背後都隱藏著一開始研發的目的

  2. 即使演算法事前定義,在執行時也公正不阿,但即使設計者確實抱持公正的初衷,也不代表當初設計的目的完全不帶偏見。規則是人訂的,無論有心或無意,程式設計師都可能把自己的偏見帶進演算法本身,寫成程式後,令人一時看不出那就是先入為主的偏見。

  3. 華盛頓郵報引述的內部文件揭露,臉書的排名演算法自 2017 年開始,將「怒」等表情符號回應的價值視為比「讚」高出 5 倍。背後理論很簡單,激起很多情緒符號的貼文往往會確保用戶提高參與,而確保用戶參與率對臉書有極大好處。報導更指出,演算法推廣的力量則破壞了內容審查員及操守團隊對抗有毒及有害內容的努力。臉書前產品經理兼「揭弊者」Frances Haugen 告訴英國議會,「憤怒與仇恨是臉書上最簡單的增長方式」。(https://reurl.cc/mvabnA)

  4. 隨著演算法日益複雜,輸出結果也越來越難以預測,所以需要加強控制與人為監督。然而這些控制與人為監督,絕不只是科技龍頭企業的責任。身為這些科技龍頭企業的 end user,也須負起部分責任,判斷自己得到的 output 真實無偽,例如:❶ 📰 對於自己讀到的新聞,是否要相信此消息來源?❷ 🛰️ 對於汽車導航的建議路線,是否要照著走?