2020年12月26日 星期六

決斷的演算(4/5)

決斷的演算:預測、分析與好決定的11堂邏輯課
Algorithms to Live By: The Computer Science of Human Decisions
https://www.books.com.tw/products/0010761815


發人深省與每一章都讓人停下來思考的好書




第七章 過度配適—少,但是更好

談到思考,我們往往覺得想得越多越好:列出的優缺點越多,做出的決定越好;列出的相關因素越多,越能精準預測股價。實際上統計模型倘若太過複雜,使用過多參數,會太容易受我們取得的資料影響,而可能隨參與者不同而出現大幅差異,這就是過度配適。機器學習的一大重要事實是:考慮因素較多、比較複雜的模型,未必比較好。這章演示了過度配適如何扭曲我們對資料的解讀,點出日常生活中俯拾皆是的過度配適事例,並且教你如何藉由交叉驗證等方法揪出過度配適(像是怎麼分辨真正的人才和僅是懂得揣摩上意的員工?)並且對抗它。



達爾文考慮要不要向表妹求婚(窮舉各項優缺點)
Marry- Marry- Marry QED
https://www.livescience.com/3307-charles-darwin-strange-facts.html

https://theoreticalecology.wordpress.com/2014/02/12/darwing-quote-of-the-day-marry-mary-marry-q-e-d/


富蘭克林難以決定時,會比照辦理,拿出紙左邊寫贊成理由,右邊寫反對理由,再考慮兩邊各點理由的重要性(兩個贊成的重要性可以等於三個反對)




考慮得更複雜卻預測得更不準

每個決定都是某種預測,反映我們對於不同選項的偏愛程度、預期趨勢或情勢如何發展與未來可能會如何。

然而決策與預測必須考慮兩個完全相反的部份:
  • 我們知道的是什麼?(What you know)
  • 我們不知道又是什麼?(What you don’t know)

考慮的越複雜=加入更多解釋變數
e.g., 如何解釋生活滿意度vs 結婚年數






資料崇拜

手頭上有的資料(樣本)與希望提出的預測之間,通常存在落差與雜訊

依據樣本fitting資料,往往回歸程式捕捉到的是雜訊=失去預測力



到處都是過度擬合(over fitting)

e.g.,
古早人類(游牧採集,多吃植物)用口感與味道來衡量食物對於健康的助益,所以脂肪、糖分與鹽分是形成口感好壞的重要成分
現代食品業,為追求好吃,添加過份脂肪、糖分與鹽分,造成文明病

追求健康運動降低贅肉與體脂肪是好事,但是為了健身,採用極端飲食降低體脂與服用類固醇增加肌肉則有害健康

自衛(defencing)採用劍擊(fencing),而傳統用劍對決或練習往往具備相當危險性
變成劍擊運動後,使用彈性劍像是揮舞金屬皮鞭,比賽雖刺激可以計分,但技巧完全不適合實戰互砍。

商業界設定績效指標=over fitting,許多績效評量制度形成反效果,最後形成大災難

軍警訓練打靶後要撿起與回收彈殼(一發都不能少+避免槍彈外流),結果真實槍戰之後,許多警察發現自己莫名奇妙手上回拿著彈殼;偶而有些殉職的警察被發現手上拿著彈殼(下意識撿彈殼時被擊斃)

軍警訓練反奪槍,遇到真實狀況,警察奪下攻擊者的槍之後又把槍歸還給歹徒(平常訓練的程序就是這樣)



如何糾出過度擬合- 交叉驗證

e.g.,如何找出老師為考試成績而過度複習(=填鴨與補習)
搭配非標準化的測驗或考題,看看學生的反應與成績

保留一部分的資料作為驗證用,只用一部分的資料來建模fitting:如果fitting的狀況很好,但代入驗證資料確有相當的落差=over fitting

針對軍警的訓練安排不熟悉的交叉訓練,看看是否有相類似的反應時間與射擊精度&看出是否有訓練創傷與慣性



如何懲罰過度擬合- 懲罰複雜

如果沒有辦法用很簡單的話解釋,代表你了解的不夠透澈


Occam’s Rule
有最少假設的那個很可能是最正確的
https://en.wikipedia.org/wiki/Occam%27s_razor

正則化(Regularization)
增加解釋變數的條件是:更複雜的模型在解釋上不只比舊模型要好,而且必須好上許多
https://en.wikipedia.org/wiki/Regularization_(mathematics)

Lasso演算法
https://zh.wikipedia.org/wiki/Lasso%E7%AE%97%E6%B3%95


話講得越多,越花費力氣,聆聽的人要聽懂也越耗費力氣
神經網路階層越多/神經元越多,越容易過度擬合(=穿鑿附會與猜測妄想)
更複雜的大腦在演化上不見得具有優勢:能夠應付生活挑戰即可
商業計畫必須被壓縮簡明扼要的簡報

欸,想起官員走火入魔地制定與撰寫法規:母法下有子法(施行細則),子法下有孫法(指引或解釋令) 遑論立法委員的搧風點火與興風作浪

某些打工仔也已制定各種SOP/程序書為已任&KPI,庸人自擾外還去折騰造成大家共同浪費生命 越大的公司浪費在這些543規矩上的時間越多

不知道有沒有可能在憲法當中要規定這些法規與程序書必須用簡化成扼要的簡報=>讓小學生看得懂的那種(而非官員認定或大法官解釋);如果1/2以上的小學生看不懂,那麼這個法規與SOP必須被廢除或再次精簡

 

 

少就是好- 試探法的優點

真實生活太複雜,用理性的方式去分析反而不太可行(要花太多時間與心力思考,乃至於機關算盡)
單純試誤與猜測(=憑感覺)反而更理性


 歷史的權重

過去的經驗與歷史有多麼重要亦或不重要?

e.g., 過去的股價變化、銷售量變化

有時候是一窩瘋的風口與熱潮與爆紅流行=>商業行銷、大眾流行領域

相對在生物與人類本身的演化,變異與變化卻相當緩慢
e.g., 人的神經配置左右顛倒(左側受右腦控制)
無脊椎動物(龍蝦蚯蚓)的神經索沿著肚子那一側走,脊椎動物的神經索沿著脊椎走,脊椎動物的演化頭部相對於身體旋轉了180度


人類這個智障設計的不良品
http://skygene.blogspot.com/2019/10/HumanErrors.html

人類喉嚨有食道與呼吸道經過=>容易嗆到噎死
股盆狹小=>造成難產的死亡的風險
兩腿直立行走=>膝蓋容易受傷/椎間盤突出
自體器官免疫系統的不良反應
眼睛有盲點、大腦胡思亂想/意氣用事


動物演化的結果往往並非最佳配置,受過去限制雖然使生物無法100%適應現在,卻有助於適應不知道的未來


演化=面對時間尺度更長、更複雜的狀況
多花一點時間不見或做出更多最佳化的配置,不見得會得到更好的結果或更高的生存率

老師教學亦然=>越用心想講越多重點(=提供更多資訊),學生的興趣與學習效率越低只能按部就班、循序漸進

對於大學部講what+打底(基礎理論),帶大家走馬看花引發大家的興趣(讓大家自以為懂了&懂得很多)

碩士班在講How,讓大家在動手作當中有進一步的體會與認知,發現自己還有很多不知道的地方(基礎科目沒學好+數學不好XD

博士班再繼續打臉大家,讓大家更謙卑,知道這些東西或理論在什麼地方不能用或不好用(不要成為鐵槌人)


理論上慎思明辨與多考慮一些,可以少一些意外與讓結果好一點,但什麼時候應該停止思考(想東想西及憂慮)?



什麼時候該少想一點?

It Depends on
可取得的資料與重要資料之間的落差
  1. 能否取得所有資料?
  2. 對於評估重要問題必須要獲得哪些資料?
  3. 資料與問題的不確定性有多高?


如果只有有限的資料、問題的不確定性很高,那麼就提前停止&不要空想憂慮吧!

有大構想與嘗試方向即可(解析度低),無法有足夠的資料做出判斷時,那麼就跟著感覺與直覺,摸著石頭過河(逐步提高解析度與撥開迷霧確定方向)

通常在嘗試之前,當事人也不知道何謂好、何謂壞、適不適合,試過之後才會知道

The premise that we can’t measure what matters.

 

 

 

 

第八章 鬆弛—放鬆點,不求完美才有解

過去幾十年來電腦科學家發現,無論使用多快的電腦,或程式設計得多厲害,有一類問題就是不可能找出完美解方。面對無法解決的挑戰時,你毋須放棄,但也別再埋頭苦幹,而該嘗試第三種作法。電腦科學會界定問題是「可解」還是「難解」,遇到難解問題時會先「放鬆問題」:也就是先去除問題的某些限制,再著手解決它。最重要的放鬆方法比如限制鬆弛法、連續鬆弛法,以及付出點代價、改變規則的拉氏鬆弛法……

 

普林斯頓大學博士生Meghan Bellows, 2010為了安排婚宴賓客誰跟誰坐一桌,動用實驗室電腦進行運算,

假定賓客兩兩認識=1,不認識=0
每桌有最低分限制(避免大家都不認識或人數太少開桌)
目標是最大化每桌的個別分數與提高所有桌數的總分

結果找不出最佳解
這個案例太勁爆了,讓人想看看當事人的真面目
http://titan.princeton.edu/people/bio/?name=meghan

婚禮總共107人參加=>每桌坐10人有11桌
排列組合有11^107=大於可觀測範圍內的原子總數






最知名的最佳化問題- 業務員出差
如何以最短路徑經過所有城鎮,但又不重複經過同一城鎮兩次?

暴力求解法(窮舉法)
列出所有可能路徑,再一一測量比較各路徑的長短
問題在於當城鎮數越多,連結所有城鎮的可能路徑數會爆增,計算耗費時間是階層時間O(n!)


經過數十年的研究,發現:沒有適合的演算法可找出最佳解!

 

量化難度- 用「不可能程度」來解答

電腦科學的核心見解

如何估計計算的複雜程度computational complexity?

Cobham- Edmonds thesis
https://en.wikipedia.org/wiki/Cobham%27s_thesis


如果一個演算法耗費的時間是多項次時間 e.g., O(n^2), O(n^3)或n的任何次方
則此一演算法視為「有效率」,問題視為「可解問題」
否則為「難解問題」
=>即便再強的超級電腦都無法求出解答。



Remind
把房子打掃乾淨所需的時間應該是個常數(constant time與賓客數多寡無關)=>O(1)
花在和每位客人打招呼的時間應該是線性時間(linear time和賓客數多寡成比例)=>O(n)
要讓每位賓客相互招呼與擁抱的時間則為人數的平方時間(square time)=>O(n^2)
而如果考量你是主持人要讓賓客相互認識&負責介紹,也就是每多一位賓客,你的工作量會加倍,所需時間稱為指數時間(exponential time)=>O(2^n)
最後最恐怖的乘階時間(factorial time,每個賓客之間有交互作用與不同好惡要考量)=>O(n!),e.g., 撲克牌洗牌好洗到如同開封時的排序(52!)



業務員出差問題如同其他許多涉及成千上萬個變數的作業研究、政治政策或公衛/防火等領域的最佳化問題,同樣是難解問題

想起年幼無知跟指導教授作河川流域最佳化的研究,其實是考量變數太少/點數不多,所以才跑得出結果,更趣味的是結案報告列出了10+可行方案,審查委員的意見是太多(應該只留3個就好)XDD



難解問題≠逃避或無解
只不過必須做出取捨與降低問題的複雜程度(=政治妥協)



放鬆問題(限制條件或變數),提供解題的起點

完美是成事的大敵- 托爾斯泰


e.g., 業務員出差問題
本來不允許經過同樣城鎮一次以上,打破此一限制+可以任意回頭=>最小生成樹法=>電腦可以很快求出解答

Minimum spanning tree
https://zh.wikipedia.org/wiki/%E6%9C%80%E5%B0%8F%E7%94%9F%E6%88%90%E6%A0%91

https://sites.google.com/site/zsgititit/home/jin-jiec-cheng-shi-she-ji-2/zui-xiao-sheng-cheng-shu

http://wiki.csie.ncku.edu.tw/acm/course/MST

http://web.ntnu.edu.tw/~algo/SpanningTree.html




不保證可以找到最佳解答,但可以幫助在時間限制與決策品質間做出取捨
只要願意接受近似堪佳解,在棘手的問題都有適當技巧可以求解


現實生活中,限制鬆弛的應用
錢多事少離家近難以兼顧
反問:如果做錯了、失敗會如何、如果今天是生命的最後一天

 



無限多的灰階:連續鬆弛法

業務員出差跟安排座位屬於離散最佳化問題:業務員要不去這個城鎮,就是去那個城鎮,賓客不是坐第五桌就是坐第六桌,沒有灰色地帶(5.3城鎮或6.8桌)

假如問題變成:
城市內要設五個消防站,如何讓消防車在五分鐘內抵達城市的每個角落?
Hint: 不能這邊放半個消防站,那邊放半個消防站

你是助選人員或流行病學家,要如何準確投放政見或疫苗給最少的人,以獲得最大的訊息宣傳與疾病預防?



連續變數的問題如何求解


對策:
用連續變數求解後,四捨五入取整數=>把城市分成幾個方格
把連續變數分群或取等分(=變成離散變數)=>把選民或民眾分群

要達成宣傳與防疫效果所需的最佳投放數假定如果是15%的人數,而其實宣傳或疫苗數可達40%時,那麼無需糾結於用最小的人力資源成本或找出焦點族群來投放。

 



拉式鬆弛法- 看看代價
不要用不可能來束限可能,用代價來看各種可能性

e.g., 可以不守法或遊走在灰色地帶,但代價是...
每張桌子要坐滿10人=>what if 只坐8人或坐了11人

這需要一點政治手腕+民眾健忘,才能化不可能為可能





學習放鬆與放鬆限制的方法

1.鬆弛限制
直接去除某些限制,有出不解答以後再套回真實狀況,跟各路人馬磋商
只考慮活在當下,或去救離自己身邊最近的人(而非老婆或媽媽同時落海要救誰)

2.鬆弛連續(變數)
加不加糖或冰塊,只有Yes or No 不要1~10分(台灣手搖飲料的服務世界NO1.)
自己家裡煮拉麵的口感只要差不多就可以,不用麵條Q軟度、鹹度或上桌的熱度剛好

3.支付代價(用金錢與資源換取決策空間)
跟台電設定的契約容量可以稍微低估,用罰款換取最佳成本效益
搖滾巨星演唱會可以超時被罰款,以換取歌迷的滿意度





鬆弛的優點&必要性

1.看出品質與期待=>透過放鬆限制條件的trade-off有助於讓人看見問題的全貌與合理設定自己的期待

2.提出一個與現實調和的參考解,讓人知道最佳解存在的範疇;在那個範疇附近都算OK

3.追求完美是一種浪費資源與生命的行為,某種程度是一種幻想與白日夢,少做白日夢才是取得進展的最佳作法

 

 

第九章 隨機性—什麼時候該讓機率決定

隨機看似和理性相反,代表我們放棄這個問題,採取最後手段。你若是知道隨機性在電腦科學中扮演多吃重的角色,可能會非常驚訝。面對極為困難的問題時,運用機率可能是審慎又有效的解決方法。隨機性演算法未必能提出最佳解,但它不用像確定性演算法那麼辛苦,只要有計畫地丟幾個硬幣,就能在短短時間內提出相當接近最佳解的答案,它解決特定問題的效果,甚至超越最好的確定性演算法。這章將要告訴你依靠機率的時機、方式,以及仰賴的程度。

 





抽樣
如果你不了解某個很複雜的性質(樣本空間,e.g., 可能股價變化、專案進度、颱風侵襲路徑),與其透過各種方式或數學去推算,不如直接抽樣(樣本數越多,信心度越高)

以樣本模擬取代完整機率計算的蒙地卡羅法
https://www.kdais.gov.tw/upload/kdais/files/web_structure/5224/23-1-3.pdf
http://mopl.as.ntu.edu.tw/web/ASJ/39/39-3-4.pdf

雖然算出一個機率分配(非常嚇人也往往唬住很多人,特別是學養不夠的外行人),但那可謂是多次不斷重複的結果(input 亂數表),實際上還是會偏誤,而且你不知道會偏誤多少(garbage out)=>重大決策不能只靠simulation,因為只有一次,而非重複近乎無限多次。最好要有最壞的打算& Resilience Engineering的配套思維(不然會死得不明不白)



電腦給的答案不見得對

型一型二錯誤風險
電腦分析判定某個事物或可能結果為A,但這個事物或結果真的為A的確定性有多高?
現代電腦的加密密碼系統,偽陽性的比例不到10^24之一

(原來百萬分之一的風險還是太高太高)


整體的統計數字(e.g., 平均值、中位數與百分比),看似涵蓋群體整體,但深度不足:你只知道收入XX的人口有OO%,但卻不知道他們過得是什麼樣的生活

與其訴諸(macro總體)統計數據,不如訴諸(micro 個體)故事=>慈善、政治人物的宣傳訣竅 as well as 新聞報導(另一種扭曲與偏誤)



關於解答的「確定程度」
演算法的目的是在運算時間與能力空間下求出解答(近似最佳解),但犧牲的維度是- 誤差機率
電腦會算出答案,只不過未必是正確答案



模擬退火- 已知最佳化問題的解決演算法

https://www.ps-taiwan.org/bimonth2/download.php?d=1&cpid=57&did=8

http://psroc.phys.ntu.edu.tw/bimonth/download.php?cpid=57&d=2&did=8

 



隨機性、演化與創造力
1940年代科學家不知道細菌如何對病毒或抗生素產生抵抗力
是「細菌內部對於病毒的化學反應」還是只是因為「不斷突變」產生抵抗力?

方法是
培養好幾代細菌,在施以抗生素或病毒
如果是「細菌內部對於病毒的化學反應」,則死亡率應該差不多
如果是「不斷突變」,則應該死亡率會差異很大

結果顯示抵抗力源自於隨機的遺傳突變



錫蘭三王子的故事

https://en.wikipedia.org/wiki/The_Three_Princes_of_Serendip

今天的斯里蘭卡(Sri Lanka)從前叫錫蘭,古時候阿拉伯世界稱它為Serendip。傳說中錫蘭國王有三個兒子,聰明正直,國王延請了全國最有智慧的學者,傳授兒子最好的學問,然後吩咐三個王子遊訪世界,體驗人生,增加歷練。三位王子本來志不在尋找寶物,卻用他們的知識和機智,沿途有不少意外的發現,也幫助了許多人。他們的遊歷被寫成一本傳說故事《錫蘭三王子歷險記》(The Three Princes of Serendip)。十八世紀中,故事傳到英國,被一個喜歡寫信的英國貴族借用,創造了一個新的英文單字──serendipity

Serendipity不只找不到一個相對應的中文辭彙,在英語世界裡,也是一個很難對付的單字。有一位學者為了它,寫了一本傳記,從來源談到流變;它的最初一百年無人知曉,一百年後,知道它的人從文學界逐漸擴散到科學界,甚至於商業界,到今天知識分子用它炫耀自己的學問淵博;縱然如此流行,在二○○四年,它還是被選為最難翻譯的十個英文單字之一。

Serendipity一詞主要的意思是沒預期、意外的發現,在中文裡有巧遇、邂逅的含意。但這個意外發現,並不是瞎貓碰到死老鼠,或者是醉漢半夜在街口的隨機漫步;它是一個機靈的心智(一如三位錫蘭王子既聰明又博學),經過刻意的尋覓,偶然撞到原本毫無預期、一無所知的新發現



隨機性是創造力的核心

激發創造力的方法是在原本的例行公式/公事中,加入一個隨機元素,隨機抖動與變異,以利跳出框架放眼更大的尺度,脫離局部的最佳狀態,搜尋到更好的狀況

 



隨機在現實生活中應用的涵義

1.隨機探索不見得會帶來成功,甚至會造成問題
小說故事- 骰子人生
https://www.thenewslens.com/article/116706


2.點子有好有壞,隨機=不去拿捏與判斷,請習慣採取好點子&採取點子的機率應該跟好壞成正比,採取壞點子的機率應該跟其後果糟糕嚴重程度成反比

3.從退火模擬可知,隨機性的測試/嘗試與找尋應該及早採用,隨著時間而逐步降低隨機性=>當你年紀越大越清楚自己喜歡與討厭什麼時,就不要再像無知青少年般的放蕩嘗試

沒有留言: