出版故事 /出版前哨
2017.08.21
為什麼我們能跟電腦學決策?讀者大推:「真是過癮!」
文/
為什麼我們能跟電腦學決策?
想像你正在舊金山找房子。這城市可說是全美最難找到房子的地方,有繁榮的高科技業,加上嚴格的分區使用法規,因此房價跟紐約一樣昂貴,很多人認為甚至不輸給紐約。新物件出現沒多久就下架,房地產公開說明會人山人海,往往必須私下先塞訂金支票給屋主才買得到。
由於市場如此熱絡,很難容許理性消費者先蒐集資料,深思熟慮後才下決定。四處閒逛或透過網路買屋的人,可以比較許多選擇後再下決定,但想在舊金山買房子的人,要不就買下眼前這棟房子,拋下其他選擇,要不就馬上走人,不再回頭。
假設有一段時間,為了簡化狀況,你只想盡可能提高買到最好房子的機率。你的目標是把在「錯過好機會」和「說不定還有好機會」之間徘徊的機率降到最低。你立刻發現自己陷入兩難:如果沒有判斷基準,要怎麼知道某棟房子是不是最佳選擇?但如果看過的房子不夠多,又怎麼知道判斷基準在哪?你取得的資訊越多,越能掌握真正的好機會,但在此之前錯過好機會的機率也越高。
那麼你該怎麼做?倘若蒐集資訊反而可能不利,那麼該如何做出明智決定?這種狀況十分殘酷,簡直可以說是矛盾。
大多數人面臨這類問題時,直覺上通常認為必須在取捨間取得某種平衡,得看過夠多的房子才能建立標準,再依據標準找出想要的房子。這種權衡概念非常正確,但大多數人沒辦法明確說出平衡點在哪。所幸這確實有明確答案:
是37%。
如果你希望達成買到最佳房子的最佳機率,請把總時間的37%拿來看房子(如果打算花一個月找房子,那就是十一天)。把清單留在家裡,單純用來設定標準。但是花了37%的時間之後,就要準備出手,只要一發現比已經看過的房子更好的選擇就買下來。這不只是尋找和放棄之間的平衡點,也是經過驗證的最佳解決方案。
我們之所以知道答案,是因為找房子屬於數學中的「最佳停止問題」。37%法則定義出一連串解答這類問題的簡單步驟,電腦科學家稱之為演算法。其實最佳停止問題可以用來解決生活中的許多狀況,找房子只是其中一例。生活中我們經常遇到選擇或放棄一連串選項的情形,比方說:要在停車場繞幾圈才找得到車位?投資高風險事業要多久才會開始回收?賣房賣車時要忍耐多久才能等到更好的價錢?
還有一種更難抉擇的狀況亦屬此類問題,那就是約會。最佳停止是連續單偶制的科學原理。
簡單的演算法不僅可協助你找到好房子,還適用於遭遇最佳停止問題的各種狀況。
我們每天都在跟這類問題纏鬥不休(只不過比起停車,詩人花比較多墨水描述愛情的磨難),有些狀況也真的很折騰。但其實沒必要這麼糾結,有些問題數學已經解決了。心急如焚的房客、駕駛人和忐忑不安的求婚者,其實都沒必要煩惱;他們不需要心理治療師,只需要演算法。心理治療師可以教他們,如何避免過於衝動和過度思考;演算法則能明確告訴他們,這個平衡點就是37%。
******
由於我們生活的空間和時間都有限,每個人都遭遇到一類問題。在一天或十年中,我們應該做什麼、或應該不做什麼?應該容忍什麼程度的混亂?什麼樣的秩序算是過度?新事物和心頭好各佔多少比例,才能使生活最讓人感到滿足?
似乎只有人會面臨這類問題?其實不然。半個多世紀以來,電腦科學家一直在探究這類日常困境,有時還試圖解決,像是:處理器該如何分配它的「注意力」,以最少時間執行使用者要它做的工作,同時盡量少做白工?它什麼時候應該轉而處理不同工作,一開始又應該接受幾項任務?怎麼運用有限的記憶體資源最好?它應該蒐集更多資料,或是依據已有的資料採取行動?
人類要把握每一天已經很不容易,電腦卻能輕鬆寫意地把握每一毫秒。電腦的工作方式可以帶給我們許多啟發。
討論演算法對人類生活的助益,似乎有點奇怪。說到「演算法」,許多人想到的是大數據、大政府和大企業神祕難解的算計。這類算計在現代世界基礎建設中的比重越來越大,但稱不上實用智慧或人生指南。不過演算法其實是解決問題的一連串步驟,而且範圍比電腦更廣,歷史也更悠久。早在機器使用演算法之前,人類就已經開始使用它們了。
(中略)
本書將探討人類演算法的設計概念,也就是:針對每天面臨的挑戰尋找更好的解決方案。把電腦科學解決問題的方法套用到日常生活上,會影響許多層面。首先,演算法能提供實用且具體的建議,協助解決特定問題。最佳停止問題告訴我們,何時該大膽跳過、何時又該留意機會。開發與利用取捨告訴我們,如何在嘗試新事物和享受喜愛的事物間找到平衡點。排序理論教我們如何(以及是否應該)整理辦公室。快取理論教我們如何把物品收進櫥櫃。排程理論則教我們如何安排工作。
到了下一個階段,電腦科學告訴我們一套字彙,用來了解這些領域中更深入的原理。卡爾。薩根(Carl Sagan)曾說:「科學不只是知識,更是一種思考方式。」即使是混亂得難以進行嚴謹數值分析或有現成答案的狀況,運用直覺和化簡問題後加以思考所得到的概念,也能讓我們了解關鍵問題和獲得進展。
更廣泛地說,以電腦科學的眼光看問題,有助於我們了解人類心智的特質、合理性的意義,並且探究最古老的問題:人類如何求生。把認知當成「解決環境造成的基本運算問題的方法」仔細探討,可能徹底改變我們對人類理性的看法。
就算電腦科學真能告訴我們如何思考以及該怎麼做好了,但我們想照著做嗎?看看科幻片裡的人工智慧和機器人,你該不會想要像它們那樣過活吧?說到研究電腦內部運作可能教我們如何思考、下決定、該相信什麼以及怎麼做好,許多人不只會把它想得太簡單,實際上是會想錯方向。
部分原因是,說到電腦,我們想到的是冰冷的機械化確定性系統——機器套用死板的演繹邏輯,點滴不漏地羅列所有選擇,琢磨出正確答案,無論必須思考得多久、多辛苦。的確,最早構思出電腦的人就希望電腦是這樣:艾倫。圖靈(Alan Turing)定義中的運算就像數學家一樣,仔細執行一連串冗長運算,得出萬無一失的正確解答。
因此說來你或許會驚訝──現代電腦面臨難題時,其實不是這麼做的。當然,直截了當的計算對現代電腦而言輕而易舉。跟人類交談、修復損壞的檔案或下贏一盤圍棋等,這類沒有明確規則、缺少必要資料,或是必須考慮多如繁星的可能才能找出正確解答的問題,才是電腦科學最大的挑戰。研究人員為了解決極端困難的問題而開發的演算法,已經使電腦不再需要依賴繁重的計算。相反地,執行實際工作必須接受機率,以時間換取精確性,還要懂得運用近似法。
電腦解決真實世界問題的能力越來越強,不僅提供演算法給人運用到生活上,還定下更好的標準讓我們得以比較人類認知本身。近十幾二十年,行為經濟學主張:人類既不理性又容易犯錯,主因是人類大腦結構缺陷重重且各不相同。這個妄自菲薄的說法日益流行,但仍有些問題有待探討。舉例來說,為什麼即使是四歲小孩,執行視覺、語言和因果推論等認知任務時,依然能超越超級電腦?
電腦科學衍生的日常問題解決方案,則對人類心智提出完全不同的看法。它們認為生活本就是困難重重,人們犯下的錯誤透露的,是問題本身的困難之處,而非人類大腦不可靠。以演算法的方式思考世界,了解問題的基本結構,以及解決方案的特質,能讓我們了解人類其實已經很了不起,同時更了解我們犯的錯。
事實上,人類經常面對電腦科學家傷透腦筋的許多難題。我們經常得克服不確定性、時間限制、資訊不足和變動快速的世界,做出決定。在某些狀況下,即使最尖端的電腦科學,也設想不出效率極高又永遠正確的演算法。對於某些狀況,或許根本沒有這樣的演算法。
然而即使在尚未找到完美演算法的領域,一代代電腦科學家和棘手真實世界問題纏鬥多年後,也得出了許多心得。這些得來不易的規則違反我們心目中的合理性,聽起來也不像數學家描述世界的那些條理分明的嚴密規則。這些規則說:不一定要考慮所有選擇,不一定非得追求看來最好的結果,偶爾可以製造混亂。看到紅綠燈就等一下。相信直覺,別思考太久。放鬆,拋個硬幣。寬恕,記住這個教訓就行。誠實對待自己。
(中略)
今天,演算法設計不僅必須藉助電腦科學、數學和工程,還要藉助統計學和作業研究等。我們思考為機器設計的演算法與人類心智的關聯時,也需要參考認知科學、心理學、經濟學和其他學科。(中略)我們將探討電腦和人類面臨的最大挑戰:如何運用有限的空間、有限的時間、有限的注意力、未知的事物、不完整的資訊,以及無法預知的未來;如何輕鬆而自信地達成這個目標;以及如何在此同時與其他目標相同的人溝通。
最後,我們不僅將深入了解各類日常問題、以全新方式觀察人們遭遇的各種困境背後的美麗結構、認識人類和電腦的解決方式融合程度極高,還將獲得更深刻的東西:我們會有描述周遭世界的新語彙,並且有了機會重新認識自己。
想像你正在舊金山找房子。這城市可說是全美最難找到房子的地方,有繁榮的高科技業,加上嚴格的分區使用法規,因此房價跟紐約一樣昂貴,很多人認為甚至不輸給紐約。新物件出現沒多久就下架,房地產公開說明會人山人海,往往必須私下先塞訂金支票給屋主才買得到。
由於市場如此熱絡,很難容許理性消費者先蒐集資料,深思熟慮後才下決定。四處閒逛或透過網路買屋的人,可以比較許多選擇後再下決定,但想在舊金山買房子的人,要不就買下眼前這棟房子,拋下其他選擇,要不就馬上走人,不再回頭。
假設有一段時間,為了簡化狀況,你只想盡可能提高買到最好房子的機率。你的目標是把在「錯過好機會」和「說不定還有好機會」之間徘徊的機率降到最低。你立刻發現自己陷入兩難:如果沒有判斷基準,要怎麼知道某棟房子是不是最佳選擇?但如果看過的房子不夠多,又怎麼知道判斷基準在哪?你取得的資訊越多,越能掌握真正的好機會,但在此之前錯過好機會的機率也越高。
那麼你該怎麼做?倘若蒐集資訊反而可能不利,那麼該如何做出明智決定?這種狀況十分殘酷,簡直可以說是矛盾。
大多數人面臨這類問題時,直覺上通常認為必須在取捨間取得某種平衡,得看過夠多的房子才能建立標準,再依據標準找出想要的房子。這種權衡概念非常正確,但大多數人沒辦法明確說出平衡點在哪。所幸這確實有明確答案:
是37%。
如果你希望達成買到最佳房子的最佳機率,請把總時間的37%拿來看房子(如果打算花一個月找房子,那就是十一天)。把清單留在家裡,單純用來設定標準。但是花了37%的時間之後,就要準備出手,只要一發現比已經看過的房子更好的選擇就買下來。這不只是尋找和放棄之間的平衡點,也是經過驗證的最佳解決方案。
我們之所以知道答案,是因為找房子屬於數學中的「最佳停止問題」。37%法則定義出一連串解答這類問題的簡單步驟,電腦科學家稱之為演算法。其實最佳停止問題可以用來解決生活中的許多狀況,找房子只是其中一例。生活中我們經常遇到選擇或放棄一連串選項的情形,比方說:要在停車場繞幾圈才找得到車位?投資高風險事業要多久才會開始回收?賣房賣車時要忍耐多久才能等到更好的價錢?
還有一種更難抉擇的狀況亦屬此類問題,那就是約會。最佳停止是連續單偶制的科學原理。
簡單的演算法不僅可協助你找到好房子,還適用於遭遇最佳停止問題的各種狀況。
我們每天都在跟這類問題纏鬥不休(只不過比起停車,詩人花比較多墨水描述愛情的磨難),有些狀況也真的很折騰。但其實沒必要這麼糾結,有些問題數學已經解決了。心急如焚的房客、駕駛人和忐忑不安的求婚者,其實都沒必要煩惱;他們不需要心理治療師,只需要演算法。心理治療師可以教他們,如何避免過於衝動和過度思考;演算法則能明確告訴他們,這個平衡點就是37%。
******
由於我們生活的空間和時間都有限,每個人都遭遇到一類問題。在一天或十年中,我們應該做什麼、或應該不做什麼?應該容忍什麼程度的混亂?什麼樣的秩序算是過度?新事物和心頭好各佔多少比例,才能使生活最讓人感到滿足?
似乎只有人會面臨這類問題?其實不然。半個多世紀以來,電腦科學家一直在探究這類日常困境,有時還試圖解決,像是:處理器該如何分配它的「注意力」,以最少時間執行使用者要它做的工作,同時盡量少做白工?它什麼時候應該轉而處理不同工作,一開始又應該接受幾項任務?怎麼運用有限的記憶體資源最好?它應該蒐集更多資料,或是依據已有的資料採取行動?
人類要把握每一天已經很不容易,電腦卻能輕鬆寫意地把握每一毫秒。電腦的工作方式可以帶給我們許多啟發。
討論演算法對人類生活的助益,似乎有點奇怪。說到「演算法」,許多人想到的是大數據、大政府和大企業神祕難解的算計。這類算計在現代世界基礎建設中的比重越來越大,但稱不上實用智慧或人生指南。不過演算法其實是解決問題的一連串步驟,而且範圍比電腦更廣,歷史也更悠久。早在機器使用演算法之前,人類就已經開始使用它們了。
(中略)
本書將探討人類演算法的設計概念,也就是:針對每天面臨的挑戰尋找更好的解決方案。把電腦科學解決問題的方法套用到日常生活上,會影響許多層面。首先,演算法能提供實用且具體的建議,協助解決特定問題。最佳停止問題告訴我們,何時該大膽跳過、何時又該留意機會。開發與利用取捨告訴我們,如何在嘗試新事物和享受喜愛的事物間找到平衡點。排序理論教我們如何(以及是否應該)整理辦公室。快取理論教我們如何把物品收進櫥櫃。排程理論則教我們如何安排工作。
到了下一個階段,電腦科學告訴我們一套字彙,用來了解這些領域中更深入的原理。卡爾。薩根(Carl Sagan)曾說:「科學不只是知識,更是一種思考方式。」即使是混亂得難以進行嚴謹數值分析或有現成答案的狀況,運用直覺和化簡問題後加以思考所得到的概念,也能讓我們了解關鍵問題和獲得進展。
更廣泛地說,以電腦科學的眼光看問題,有助於我們了解人類心智的特質、合理性的意義,並且探究最古老的問題:人類如何求生。把認知當成「解決環境造成的基本運算問題的方法」仔細探討,可能徹底改變我們對人類理性的看法。
就算電腦科學真能告訴我們如何思考以及該怎麼做好了,但我們想照著做嗎?看看科幻片裡的人工智慧和機器人,你該不會想要像它們那樣過活吧?說到研究電腦內部運作可能教我們如何思考、下決定、該相信什麼以及怎麼做好,許多人不只會把它想得太簡單,實際上是會想錯方向。
部分原因是,說到電腦,我們想到的是冰冷的機械化確定性系統——機器套用死板的演繹邏輯,點滴不漏地羅列所有選擇,琢磨出正確答案,無論必須思考得多久、多辛苦。的確,最早構思出電腦的人就希望電腦是這樣:艾倫。圖靈(Alan Turing)定義中的運算就像數學家一樣,仔細執行一連串冗長運算,得出萬無一失的正確解答。
因此說來你或許會驚訝──現代電腦面臨難題時,其實不是這麼做的。當然,直截了當的計算對現代電腦而言輕而易舉。跟人類交談、修復損壞的檔案或下贏一盤圍棋等,這類沒有明確規則、缺少必要資料,或是必須考慮多如繁星的可能才能找出正確解答的問題,才是電腦科學最大的挑戰。研究人員為了解決極端困難的問題而開發的演算法,已經使電腦不再需要依賴繁重的計算。相反地,執行實際工作必須接受機率,以時間換取精確性,還要懂得運用近似法。
電腦解決真實世界問題的能力越來越強,不僅提供演算法給人運用到生活上,還定下更好的標準讓我們得以比較人類認知本身。近十幾二十年,行為經濟學主張:人類既不理性又容易犯錯,主因是人類大腦結構缺陷重重且各不相同。這個妄自菲薄的說法日益流行,但仍有些問題有待探討。舉例來說,為什麼即使是四歲小孩,執行視覺、語言和因果推論等認知任務時,依然能超越超級電腦?
電腦科學衍生的日常問題解決方案,則對人類心智提出完全不同的看法。它們認為生活本就是困難重重,人們犯下的錯誤透露的,是問題本身的困難之處,而非人類大腦不可靠。以演算法的方式思考世界,了解問題的基本結構,以及解決方案的特質,能讓我們了解人類其實已經很了不起,同時更了解我們犯的錯。
事實上,人類經常面對電腦科學家傷透腦筋的許多難題。我們經常得克服不確定性、時間限制、資訊不足和變動快速的世界,做出決定。在某些狀況下,即使最尖端的電腦科學,也設想不出效率極高又永遠正確的演算法。對於某些狀況,或許根本沒有這樣的演算法。
然而即使在尚未找到完美演算法的領域,一代代電腦科學家和棘手真實世界問題纏鬥多年後,也得出了許多心得。這些得來不易的規則違反我們心目中的合理性,聽起來也不像數學家描述世界的那些條理分明的嚴密規則。這些規則說:不一定要考慮所有選擇,不一定非得追求看來最好的結果,偶爾可以製造混亂。看到紅綠燈就等一下。相信直覺,別思考太久。放鬆,拋個硬幣。寬恕,記住這個教訓就行。誠實對待自己。
(中略)
今天,演算法設計不僅必須藉助電腦科學、數學和工程,還要藉助統計學和作業研究等。我們思考為機器設計的演算法與人類心智的關聯時,也需要參考認知科學、心理學、經濟學和其他學科。(中略)我們將探討電腦和人類面臨的最大挑戰:如何運用有限的空間、有限的時間、有限的注意力、未知的事物、不完整的資訊,以及無法預知的未來;如何輕鬆而自信地達成這個目標;以及如何在此同時與其他目標相同的人溝通。
最後,我們不僅將深入了解各類日常問題、以全新方式觀察人們遭遇的各種困境背後的美麗結構、認識人類和電腦的解決方式融合程度極高,還將獲得更深刻的東西:我們會有描述周遭世界的新語彙,並且有了機會重新認識自己。

