本文經O'Reilly授權發佈

大數據文摘字幕組作品

作者:effy

AI正在重塑人類社會的方方面面,例如研發新的藥物,改善人們的生活習慣等。那麼在這個嶄新的時代,AI是如何重塑軟件工程這個行業的呢?

本文基於Caffe的創始人、TensorFlow核心作者之一賈揚清在O'Reilly和Intel共同舉辦的AI Conference舊金山站所做的演講《在AI時代重新思考軟件工程》,通過揭祕傳統軟件工程的痛點,他希望向各位分享自己對人工智能時代,軟件工程行業發展的思考。

點擊觀看

時長14分鐘

帶有中文字幕

長期以來,我們一直把分辨某個物體、顏色、形狀的能力想成理所當然。什麼意思呢?比如,當文摘菌提道“斬男色”的時候,相信很多小姐姐都心領神會,但是你如何給不知道這個顏色的ta,或者計算機描述/形容“斬男色”?


注:斬男色,傳說塗上這個顏色的口紅可以就能天下無敵,撩弟無數,斬獲所有直男的心。


在圖像識別和處理領域,傳統的軟件工程是通過設計規則(rules),也就是使用硬編碼來描述物體特徵,來研究計算機視覺的問題。在深度學習之前,方向梯度直方圖(histogram of gradients 簡稱HOG)火遍了大江南北。


什麼是HOG?簡單的說,HOG試圖在圖像的局部收集統計數據,或者可以理解爲,它試圖找到物體各個方向上的邊界。比如,當你認真仔細看箭頭下的圖,(希望)你可以看出類似汽車的物體輪廓。



是不是彷彿回到了小時候體檢看色盲卡?再來一張,這張是不是好多了?



因此,傳統軟件工程需要告訴電腦,規則是什麼,或者特徵是什麼,並一步一步‘告訴’電腦該怎麼做。可想而知,這種設計本身限制了計算機視覺的進一步發展。


從邏輯編程到自調適模型:從授之以魚到授之以data


傳統圖片識別技術錯誤率在26%停滯不前,急壞了衆多科學家、學者、研究人員。



這時,一位名叫Alex Krizhevsky的小哥哥,提出用一種更抽象的方式寫模塊,設計出了我們今天稱爲‘卷積神經網絡‘的模型。並用大量的數據構建和訓練它,實現了圖像識別從傳統的邏輯編程到建模的轉變。



這種方法的效果驚天地泣鬼神,和傳統圖片識別技術相比,在準確性方面實現了飛越。AlexNet在2012年ImageNet中以15%的錯誤率取得前5的好成績。


AlexNet由5個卷積層和3個全連接層,650,000個神經元以及60,000,000個參數構成。其中,卷積層扮演着抽象和提取特徵的角色。


傳統圖像識別的方法,是將人爲指定的、通過HOG提取出來的特徵再放入分類器中,進行識別。而AlexNet實現了通過卷積層自主學習圖片特徵,並通過全連接層輸出概率,確定分類的‘一條龍’服務。真的非常優秀了!


reference:

http://www.image-net.org/challenges/LSVRC/2012/supervision.pdf


有意思的是,AlexNet還有生物後端的支持。研究發現,在我們的視覺皮層中,神經元會進行分層推斷。信息從一層傳遞到下一層,再到下一層,從而讓大腦提取越來越複雜的信息。


數據金礦


傳統的方式是如何編寫軟件呢?我們編寫軟件時,會把源代碼放入編譯器中,編譯器會將源代碼轉換成計算機能解讀、運行的低階機器語言。


而在人工智能領域,我們寫的程序或者說模型已經和傳統軟件工程編譯不同了。它不再是一組邏輯,而是會根據不同的訓練數據和目標數據,得到不同的程序和模型。這些模型可以推導出一個通用的規則,然後使用大量的數據和計算來得到精確的結果。


舉個例子,對於大約有一百二十萬張圖片的數據集來說,傳統的方式處理這些編譯的一個挑戰是,它需要進行大約百萬萬億次的計算(1 exaflop)來訓練一個圖像網絡模型。


這是什麼概念呢?如果讓每個倫敦人每秒都做一個浮點運算的話,需要大約四千年的時間來訓練這個模型。


其實我們已經意識到,人工智能的計算在某種程度上是非常野蠻的。特別是在卷積神經網絡,或者疊加的神經網絡,我們需要做大量的浮點運算(float operations)。


因此,在幾年前,我們就開始建立和研發更高效的硬件。而且,我們還建立起了數據中心、規模集羣或環境(scale clusters or environment)來進行計算。



與此同時,我們還看到了科學計算算法的迴歸,比如那些傳統的用來預測天氣的方法。


這都推動了軟件設計的發展,現在我們不再使用代碼進行編譯,而是用代碼和數據放在一個計算階段(compute phase),或者我們也可以稱其爲現代版的代碼編譯。


當然,引用一句諺語:巧婦難爲無米之炊。數據已經成爲了人工智能生態系統中一個非常重要的部分。


互聯網時代,大量的數據產生並充斥着我們的生活。那麼面對如同大量的金礦一般的數據,我們真的能從中開採出黃金嗎?或者我們的模型可以處理如此大量的數據麼?


在Facebook,有一羣非常優秀的小夥伴嘗試回答這個問題。他們通過在網上分享大量的公共圖片,和相關的信息,比如標籤,來訓練模型找出這些圖像中有哪些東西。


隨着這個項目的訓練數據不斷增加,最後達到大約四十五億張圖片,模型的質量和準確率也隨之上升。也就是說,只要有更多的數據,就能帶給我們更多更好更高質量的模型。


在這些領域中,我們看到的是用數據驅動的方法,代替硬編碼或者說傳統軟件工程的方案。我們要做的只是提供大量的數據,然後在沒有太多人工干預的情況下,就能得到理想的模型。完美!


算力呢?


人工智能時代的軟件工程逐漸形成三個關鍵部分的良性循環:我們設計的模型可以從大量的數據中獲取信息,利用我們現在擁有的巨大的計算能力,或者說更好的算法,開啓智能之門。


大量數據的涌入,使我們能夠爲這些複雜模型的培訓提供燃料。硬件的開發,使我們能夠獲得更多的計算資源,並且使我們能夠在幾天,幾小時甚至幾秒內完成這樣的任務。


而隨着硬件和計算機技術的發展,現在我們能夠將這些模型部署到各種設備上。以前,我們的手機就是手機。今天,我們的手機不止是一部電話,還是一個私人助理,一臺照相機和一種連接到智能世界的方式。


未來已來?or還未來?


有時我會想,我們還需要做些什麼呢?好像已經全部做完了呀。難道不是麼?人工智能漸漸變得常見並被大家瞭解和認識,我們已經有了很多高大上的模型和厲害的硬件設備,但是我們仍處於一個非常原始的階段。


當我們試圖管理實驗的模型,我們有時會使用一些非常古老的手工方法,比如說excel表格。現在,在傳統的軟件工程中有更好的方法,比如,持續集成(continuous integration)。


我們知道當我們在寫軟件的時候,有複雜的系統來進行版本控制(version control),以確保代碼的測試和質控。而當我們的項目考慮使用表格來管理我們的實驗時,這些問題並沒有出現。


所以問題來了,我們如何做到現代化的版本控制和現代的SDK和現代的持續集成呢?對於AI系統,這變得非常困難。不僅僅因爲算法在改變,數據每天都在變化。而反過來,這些又改變和影響了將要部署的模型和即將出現的新硬件。


這三個因素會相互作用,並交織在一起難捨難分。因此,現在的軟件工程不僅僅只是停留在代碼層面了,它還需要處理數據和計算資源,從而保證結果的準確性,並確保我們能夠對這些軟件和系統有效管理。


這是一個開放的問題,因爲我們還需要做很多工作,才能讓AI繼續發展下去。讓我開心和激動的是,越來越多的人對AI感興趣和加入。現在越來越多的學術論文在引用卷積神經網絡,數量呈現指數級的增長,這和摩爾定律非常相似。於我個人而言,我非常期待看到人工智能的進步和更多的應用,幫助我們的社會的推進和提升。



想面基賈揚清當面聽課嗎?今年6月份,O’Reilly AI Conference攜賈揚清、Ion Stoica等一衆AI領軍者也要來北京啦,屆時大數據文摘作爲合作媒體會將會爲大家帶來最新的資訊。另外。目前會議門票正在熱賣中,用大數據文摘專屬折扣碼“WENZHAI”可享八折優惠。


AI Conference部分講師名單


實習/全職編輯記者招聘ing

加入我們,親身體驗一家專業科技媒體採寫的每個細節,在最有前景的行業,和一羣遍佈全球最優秀的人一起成長。座標北京·清華東門,在大數據文摘主頁對話頁回覆“招聘”瞭解詳情。簡歷請直接發送至[email protected]


志願者介紹

後臺回覆志願者”加入我們


點「在看」的人都變好看了哦
相关文章