2019年2月26日 星期二
宅斷的演算
現在有多少人不使用電腦?有的話,請舉手。
其實這不太可能,因為如果你讀得到這篇文章,你一定是在使用電腦,除非有個阿宅把它印出來給你讀(果然很宅)。過去視窗作業系統常莫名其妙出現藍屏死當的年代,我們跳腳嘲諷電腦不是科學產物,而是玄學產物,而對阿宅工程師而言,電腦除了是吃飯的工具,還是要幫正妹修理來換好人卡的必需品。
廣義來說,並不是只有桌機和筆電才是電腦,我們現在使用的手機,運算能力已經比登月使用的巨型電腦還強大了,除非你用的是智障手機。電腦在生活的方方面面扮演重要角色,包括工作、社交、通訊、購物、娛樂、交通等等,我們隨時在和許多演算法打交道,因為臉書的動態消息、購物網站的推薦商品、APP建議的交通路線等等都是演算法算出來的結果,試圖為我們提供各種問題的最佳解方。
在靠北工程師的臉書粉絲頁,有大量不通人情世故的阿宅工程師笑話,真的很抒壓,也讓我們見識到,台灣的阿宅工程師們爆肝血汗的生活⋯⋯哦不⋯⋯他們沒有生活。成天和電腦打交道,想必應該會宅到沒啥生活能力吧?不過,著名的電腦科學家布萊恩.克里斯汀(Brian Christian)和美國加州大學柏克萊分校的認知心理學家湯姆.葛瑞菲斯(Tom Griffiths)卻告訴我們,答案可能和我們想的相反。
他們合著的《決斷的演算:預測、分析與好決定的11堂邏輯課》(Algorithms to Live By: The Computer Science of Human Decisions)指出,跟電腦演算法學決策,不僅可能一點也不宅,而且還會讓人更善解人意,真是厲害了,我的演算法!
演算法,簡單來說,就是用以解決特定問題的有限個步驟和敘述。其英文名稱「algorithm」來自於九世紀波斯數學家花拉子米(al-Khwarizmi,خوارزمی,約780-約850),因為他在數學上提出了演算法這個概念。「algorism」,即「al-Khwarizmi」的音轉,意思是「花拉子米」的演算法則,在十八世紀演變為「algorithm」。
兩位作者在《決斷的演算》中指出,生活中我們遇到的許多機車問題,其實和阿宅工程師面對的挑戰大同小異,都是想要在各種資源稀缺的情況下達成「多、快、好、省」;競爭之下,會有一些阿宅比另一些阿宅找到更佳的演算法來攻克難題。他們主張,這些只有更好、沒有最好的演算法,可以指導我們如何在生活中宅以致用。
他們給了我們宅度爆表的十一堂理性邏輯課,例如在第一堂課中,我們都遇過聘人、租屋、找車位、賣房子、尋覓伴侶、投資獲利、幹壞事等等,要如何制定停止點,何時見好就收的問題。在想要做出最佳決策時最令人感到困擾的是,我們似乎永遠無法得知,還有多少更好的選項尚未出現。 所以他們為我們提供了37%法則、思而後行法則、臨界值法則來調整時間點、標準值得參數,以期宅出最佳停止點。
如果旅遊到一個好地方,或者吃過一家不可多得的好餐廳,是要繼續嘗鮮探索呢?還是始終如一呢?這真是個令人糾結的問題啊。《決斷的演算》指出,電腦也會遇到「開發/善用權衡」(explore/exploit tradeoff)的宅問題:是要「開發蒐集資料尋求最佳選擇」還是「善用現有資訊取得已知良好結果」的問題,就是傳說中吃角子老虎機的多臂土匪問題。簡單來說,他們的建議是:如果你時間還有大把,為何不多嘗鮮?如果時日不多(例如要搬遷了),那為何不好好把握已知的美好事物?如果要你想宅個徹底,不妨用吉廷斯指數(Gittins)來協助決策吧!
對電腦資訊而言,資料的優先排序尤其重要。谷歌搜尋引擎厲害之處不是啥都能全部找到給你,而是把排序了搜尋結果再給你,把你可能最需要的,儘量排在前端就讓你看到。我們平時當然不需要排序大量資料,但是遇到排序研討會或運動賽程,還是夠折騰的。
《決斷的演算》指出,電腦記憶體和我們有同樣的收納困擾,就是空間永遠太小。不過即使有能力買豪宅,也還是要面對一樣的問題,除非你的豪宅專用來堆放雜物,否則如果要更有效率地生活,就要分門別類整理收納,把常用到的放在可以隨手可取之處──但這是最好的方式嗎?電腦使用快取記憶體,裝滿後就得選擇性刪除資料,隨機剔除、先進先出(先剔除最舊的)以及先刪最近或最少使用的資料等等方法,哪種能讓我們更順利收納?
重要的事要優先處理,這道理人人都懂,但還是難以做到;我生活與工作最大的困擾之一,就是長長的優先順序排程,永遠有更重要的事插隊進來,不管如何努力,似乎永遠無法讓清單變短,而排程較後面的事(例如整理我愈來愈混亂的辦公室),就一直排在後頭無法執行。
面對排程的問題,電腦科學家會先搞清楚「用什麼標準來評量成果」,是追趕期限最重要?是劃掉最多項目最好?還是等待時間最短最讚?書中用火星探測器電腦的「上下文交換」為例讓我們認識到工作插隊的代價,還有用「往復移動」提醒是否在窮忙。要有效率地完成工作,不是愛拚才會贏,有時候是「世界越快,心,則慢」,慢慢來,比較快。
電腦時常做預測,統計專家們都推薦的「貝氏法則」原本是十八世紀英國牧師湯瑪斯.貝斯(Thomas Bayes,1701–1761)用來研究彩卷中獎率的,用過去已知的機率來推導出未知機率,並且用新的證據來修正過去的預測;在預測工作中,並不是多就是好,很多人都以為,愈複雜的模型,使用越多參數,就會得到更精確的預測,然而機器學習則得出不同的結論,過度複雜的模型和參數會得出過度配適的結果,反而無法反映真實狀況。
只有更好,沒有最好。過度追求最美好的解方,可能就是沒有解方。遇到人生難解的問題,我們或許該學學電腦科學家的作法,把問題先鬆弛一下,運用限制鬆弛法、連續鬆弛法、付出點代價及改變規則的拉氏鬆弛法等等,解除一些限制,再看看能否解決再說;如果在舒適圈待久了,要如何能跳脫巢臼?像電腦那樣運用隨機性,也能快速接近最佳的解答哦。
電腦溝通時,如何讓機器確認接收方有無收到訊息?我們的生活中也會遇到訊息有沒有被對方充分接收和理解的問題,電腦是如何做的?電腦科學家能夠找到賽局理論中的奈許均衡嗎?這關係到我們如何猜測別人的想法,用以應付與眾人相關的社會和經濟問題。不過,當大家都用同樣的模型對賭對方的策略而跟進,就可能一起崩潰到萬劫不復。
《決斷的演算》為阿宅工程師平反,指出演算法可能為我們的生活或人生難題提供指導性原則。不過,我倒是有個從這本書衍生的想法:讀完這本書,就像是上了十一堂理性邏輯的演算法課,如果有個阿宅能夠把其中所有演算法應用到生活和人生的方方面面,我會極為敬佩他,也能肯定他很可能成為一位成功人士,即使他因為奉行演算法到不近人情的地步。許多改變世界的曠世天才,不也是有超乎常人的原則嗎?
然而,我們別忘了,《決斷的演算》也告訴我們,別過度配適,並不是多就是好,把書中所有提到的演算法落實到生活中,也不見得一定能解決大部分人生難題。或許,我們也該學學電腦科學家,先界定問題可解還是難解,然後再放鬆,給自己一些隨機性,別網路塞車,用新知識調整預測,搞清楚重要評量標準,認清自己還有多少時間,制定停止點,其他的就該怎麼生活就怎麼生活吧!
本文原刊登於閱讀‧最前線【GENE思書軒】。