標籤:

工程才是做好AI的鑰匙

為InfoQ AI前線(2018年2月)寫了卷首語 《工程才是做好AI的鑰匙》電子書可免費下載:

AI前線(2018年2月) ?

www.infoq.com圖標

經常有人問我學好人工智慧的秘訣。我會先問下對方對數據結構、代碼設計、調試工具、代碼版本維護的入門問題。如果這些都不過關,我的回答就是「工程」。

做好AI應用,不僅是要懂AI「演算法」,更重要的是軟體工程能力和系統能力。在實踐中,Linux命令用得熟不熟,寫程序是不是有良好的風格,版本控制是不是成為習慣,是不是掌握基本的網路服務構架,這些基本功比會用Keras/TensorFlow重要多了。有想法的人很多,具體工程去做的人就少了,應先從最底層的工程練起。沒有具體的工程經驗,就是清談,是浪費時間。先過了系統運維關、資料庫關、代碼習慣關、基本軟體工程關,才能談得上落地一個AI的系統。

現實系統里行之有效的人工智慧演算法,都是很簡單的。能不能發揮好的根本,都在於如何把這些簡單的東西因地制宜綜合運用。為1%的核心演算法代碼跑好,要99%的「工程」代碼的支持。

比如對機器學習,無免費午餐定理告訴我們,一個演算法如果在一類問題上特別有效,那一定有一些問題它比隨機演算法還差。一個現實中可用的機器學習系統,幾乎一定是多種問題的混合問題。不會存在一種演算法是一個現實問題的靈丹妙藥。現實的問題的解決,一定是用一個良好的工程架構,讓多種演算法混合在一起解決問題。能拿捏這個架構設計的「度」,就是人工智慧工程師最核心的能力。

又比如邏輯這個分支。概念上其實沒有比邏輯更簡單的語言了:與、非、存在量詞。但是為了工程化這個簡單的東西,就衍生出巨大的一門學科:知識工程、語義網、知識圖譜。知識工程之所以難不在「知識」,而在「工程」。當關注「知識」的時候,總是可以映射最優秀的人的智能。但工程化的時候,必須適應群體無限的奇葩,和不可避免的各種成本的折衷。

AI應用落地,核心是工程問題,不是演算法問題,更不是「哲學」問題。一定要特別特別「土」,踏踏實實從樸素的運維、資料庫、數據清洗做起,從實際的工程中逐步演化。如何按天迭代? 如何構造聯調系統? 如何無標註數據啟動? 如何分離準確度和召回率要求? 如何統一運用規則和統計? 如何適應無明確衡量標準的開發? 如何設計可演進的數據模式? 如何提升數據可理解性? 如何逐步提升規則系統的表達力? 如何平衡黑箱和白箱模型的優缺點? 如何在優雅架構和工期間取捨? 等等,這些都是教科書上沒有的答案。只有扎紮實實從工程出發,才能實事求是地發展出低成本的、有生命力的AI系統。

如果僅僅是因為某個東西時髦就去學,比如因為這兩年AI火就去學AI,滿口ConvolutionalNN、RNN、LSTM,卻沒有興趣去理解這些東西背後的基本原理和應用範圍,對工程也是無益的。比如只知道「卷積」這個詞,卻不理解不同的卷積核對於圖像到底起什麼作用;只知道深度網路,卻連其他的神經網路一概不知;只知道word2vec分散式表示,卻連TFIDF和LDA都沒用過。這種趕時髦,對工程實踐害處大於用處。

掌握分很多層次。會用包是一個層次,會改進是一個層次,發優秀論文再進一個層次。至於懂得方法的邊界、工程上和其他方法融匯使用,就只有鳳毛麟角的人了。到AI架構師的層次,又需要通透理解多種方法的前沿。這樣的人,學校、研究院都培養不出來,都是通過工程逼出來、練出來、打出來的。光是懂演算法不行,還必須通透理解實踐的前沿;光是理解一個分支也不行,還必須通透理解幾個分支。

沒有銀彈,沒有奇蹟。都是扎紮實實的工程,多年的細節的打磨才能解決一點小事。也從來沒有一個所謂的偉大的想法,能跳過工程的考驗而就成功的。工程才是做好AI的鑰匙。


推薦閱讀:

從《攻殼機動隊》看未來人類發展,人人都將成為智能終端?
96分的模型跑出69分的效果,誰該背鍋?
朱天宇:AI不是風口!
人工智慧時代,誰更容易失業?答案是……
softmax regression 簡單實現

TAG:人工智慧 |