書評:《演算法之美( Algorithms to Live By )》
來自專欄 Linux 開源評論31 人贊了文章
又一次為了工作圖書俱樂部而讀書。除了其它我親自推薦的書,這是我至今最喜愛的書。
作為計算機科學基礎之一的研究領域是演算法:我們如何高效地用計算機程序解決問題?這基本上屬於數學領域,但是這很少關於理想的或理論上的解決方案,而是更在於最高效地利用有限的資源獲得一個充分(如果不能完美)的答案。其中許多問題要麼是日常的生活問題,要麼與人們密切相關。畢竟,計算機科學的目的是為了用計算機解決實際問題。《 演算法之美(Algorithms to Live By)》提出的問題是:「我們可以反過來嗎」——我們可以通過學習計算機科學解決問題的方式來幫助我們做出日常決定嗎?
本書的十一個章節有很多有趣的內容,但也有一個有趣的主題:人類早已擅長這一點。很多章節以一個演算法研究和對問題的數學分析作為開始,接著深入到探討如何利用這些結果做出更好的決策,然後討論關於人類真正會做出的決定的研究,之後,考慮到典型生活情境的限制,會發現人類早就在應用我們提出的最佳演算法的特殊版本了。這往往會破壞本書的既定目標,值得慶幸的是,它決不會破壞對一般問題的有趣討論,即計算機科學如何解決它們,以及我們對這些問題的數學和技術形態的了解。我認為這本書的自助效用比作者打算的少一些,但有很多可供思考的東西。
(也就是說,值得考慮這種一致性是否太少了,因為人類已經擅長這方面了,更因為我們的演算法是根據人類直覺設計的。可能我們的最佳演算法只是反映了人類的思想。在某些情況下,我們發現我們的方案和數學上的典範不一樣,但是在另一些情況下,它們仍然是我們當下最好的猜想。)
這是那種章節列表是書評里重要部分的書。這裡討論的演算法領域有最優停止、探索和利用決策(什麼時候帶著你發現的最好東西走,以及什麼時候尋覓更好的東西),以及排序、緩存、調度、貝葉斯定理(一般還有預測)、創建模型時的過擬合、放鬆(解決容易的問題而不是你的實際問題)、隨機演算法、一系列網路演算法,最後還有遊戲理論。其中每一項都有有用的見解和發人深省的討論——這些有時顯得十分理論化的概念令人吃驚地很好地映射到了日常生活。這本書以一段關於「可計算的善意」的討論結束:鼓勵減少你自己和你交往的人所需的計算和複雜性懲罰。
如果你有計算機科學背景(就像我一樣),其中許多都是熟悉的概念,而且你因為被普及了很多新東西或許會有疑惑。然而,請給這本書一個機會,類比法沒你擔憂的那麼令人緊張。作者既小心又聰明地應用了這些原則。這本書令人驚喜地通過了一個重要的合理性檢查:涉及到我知道或反覆思考過的主題的章節很少有或沒有明顯的錯誤,而且能講出有用和重要的事情。比如,調度的那一章節毫不令人吃驚地和時間管理有關,通過直接跳到時間管理問題的核心而勝過了半數的時間管理類書籍:如果你要做一個清單上的所有事情,你做這些事情的順序很少要緊,所以最難的調度問題是決定不做哪些事情而不是做這些事情的順序。
作者在貝葉斯定理這一章節中的觀點完全贏得了我的心。本章的許多內容都是關於貝葉斯先驗的,以及一個人對過去事件的了解為什麼對分析未來的概率很重要。作者接著討論了著名的棉花糖實驗。即給了兒童一個棉花糖以後,兒童被研究者告知如果他們能夠剋制自己不吃這個棉花糖,等到研究者回來時,會給他們兩個棉花糖。剋制自己不吃棉花糖(在心理學文獻中叫作「延遲滿足」)被發現與未來幾年更好的生活有關。這個實驗多年來一直被引用和濫用於各種各樣的宣傳,關於選擇未來的收益放棄即時的快樂從而擁有成功的生活,以及生活中的失敗是因為無法延遲滿足。更多的邪惡分析(當然)將這種能力與種族聯繫在一起,帶有可想而知的種族主義結論。
我對棉花糖實驗有點興趣。這是一個百分百讓我憤怒咆哮的話題。
《演算法之美》是我讀過的唯一提到了棉花糖實驗並應用了我認為更有說服力的分析的書。這不是一個關於兒童天賦的實驗,這是一個關於他們的貝葉斯先驗的實驗。什麼時候立即吃棉花糖而不是等待獎勵是完全合理的?當他們過去的經歷告訴他們成年人不可靠,不可信任,會在不可預測的時間內消失並且撒謊的時候。而且,更好的是,作者用我之前沒有聽說過的後續研究和觀察支持了這一分析,觀察到的內容是,一些孩子會等待一段時間然後「放棄」。如果他們下意識地使用具有較差先驗的貝葉斯模型,這就完全合情合理。
這是一本很好的書。它可能在某些地方的嘗試有點太勉強(數學上最優停止對於日常生活的適用性比我認為作者想要表現的更加偶然和牽強附會),如果你學過演算法,其中一些內容會感到熟悉,但是它的行文思路清晰,簡潔,而且編輯得非常好。這本書沒有哪一部分對不起它所受到的歡迎,書中的討論貫穿始終。如果你發現自己「已經知道了這一切」,你可能還會在接下來幾頁中遇到一個新的概念或一個簡潔的解釋。有時作者會做一些我從沒想到但是回想起來正確的聯繫,比如將網路協議中的指數退避和司法系統中的選擇懲罰聯繫起來。還有意識到我們的現代通信世界並不是一直聯繫的,它是不斷緩衝的,我們中的許多人正深受緩衝膨脹這一獨特現象的苦惱。
我認為你並不必須是計算機科學專業或者精通數學才能讀這本書。如果你想深入,每章的結尾都有許多數學上的細節,但是正文總是易讀而清晰,至少就我所知是這樣(作為一個以計算機科學為專業並學到了很多數學知識的人,你至少可以有保留地相信我)。即使你已經鑽研了多年的演算法,這本書仍然可以提供很多東西。
這本書我讀得越多越喜歡。如果你喜歡閱讀這種對生活的分析,我當然是贊成的。
Rating: 9 out of 10
Reviewed: 2017-10-22
via: https://www.eyrie.org/~eagle/reviews/books/1-62779-037-3.html
作者:Brian Christian;Tom Griffiths 譯者:GraveAccent 校對:wxy
本文由 LCTT 原創編譯,Linux中國 榮譽推出
推薦閱讀: