- 程序員的AI書:從代碼開始
- 張力柯 潘暉
- 1230字
- 2020-04-24 15:04:47
推薦序一
認識力柯兄多年,一直認為他是一員虎將——能用代碼說話,便絕不打無謂的嘴仗;能用技術與產品直接證明,便絕不空談“形式”和“主義”。這次,通過力柯兄寫的這本書,一如既往地看到他“心有猛虎”的一面:直截了當、大開大合。
在機器學習或者說工業界AI火起來的這幾年,程序員這一受眾群體一直缺少優秀的教程。有些教程過于淺顯,很難稱其為“入門教程”,只能稱其為科普書;有些教程則過于貼近理論推導,對夯實讀者的數理基礎大有裨益,也能給研究生提供參考,但對程序員來說,則理論有余而實踐不足,常常令注重工程實踐的他們一頭霧水:畢竟不是每個程序員都有耐心、有必要一門一門地撿回微積分、概率統計、偏微分方程、線性代數和數值計算等基礎學科的知識,再真正實現一個屬于自己的模型。如何在數學理論和工程實踐之間找到一個平衡點,讓具有工程背景的廣大讀者從中獲得實際的價值,而非進行簡單的腦力或數學訓練,這一直是我評價機器學習教程時最為看重的要素?,F在,我有幸從力柯兄的成書中找到了這些要素,實乃幸事!
這是一本寫給程序員看的機器學習指南。它有針對性地從程序員的視角切入(而非像市面上的大多數機器學習教程一樣,從數學的角度切入),介紹了工業界流行的若干模型及應用場景,同時涵蓋了神經網絡的原理和基礎實現、Keras庫的使用方法和TensorFlow的部署方案,可謂有的放矢。另外,本書章節不多,卻簡短有力。這不是一本科普讀物,不存在淺嘗輒止;也不是一本百科全書,不存在天書符號。這是一本有代碼的書,是一本談工程實現的書。我認為,這正是機器學習領域所缺少的那一類教程。
本書的上篇,讓我不由得想起多年前力柯兄剛從硅谷回國高就時,與我圍繞“怎樣的面試題對于機器學習程序員是合適的”這一話題展開的討論。那時AI正在升溫,無數有著各種背景、能力和水平的人都在嘗試接觸AI方面的內容,但對于人才的選拔和錄用,卻似乎沒有一個行業內的公認標準和規范。力柯兄的面試題十分簡單粗暴,要求面試者僅使用一些基礎的Python庫去實現一個深度神經網絡。這聽起來有點讓人匪夷所思,但事后細想,卻是大道至簡。這可以讓人拋去繁雜的模型,回歸神經網絡最本質的前向傳播和反向傳播,將一切都落實在代碼層面。雖然需要運用的數學知識不過是一點高等數學的皮毛,卻可以同時從工程和數學兩個角度考察候選人的基本功。這幾年間,機器學習和深度學習教程及相關公開課越來越多,我閱課無數,竟發現很少有一門課能夠沉下心來,仔仔細細地告訴讀者和學員,搭建和實現這些神經網絡的基礎元素從何而來,又為何如此。而本書的上篇,尤其是在第2章中,一絲不茍地介紹了神經元、激活函數和損失函數,從偏微分方程層面嚴謹地推導反向傳播,又從代碼層面給出了那道面試題的答案。這都讓我不由得敬佩力柯兄在工程上的執著。本書的下篇,則是標準的深度學習入門。
至此,我不再“劇透”,因為當你從實戰角度閱讀這些章節時,會有一種不斷發現珍寶的驚喜感,而我更愿意把這些“珍寶”留給本書的讀者。
周竟舸,Pinterest機器學習平臺技術負責人
2019年12月