人工智慧太厲害了,我們該怎麼辦?/洪士灝
我們為什麼要推計算思維呢? 因為未來各行各業都需要與電腦合作,否則有可能被電腦和機器人淘汰;例如這篇〈機器人搶工作 律師、藥劑師也遭殃〉所談到的狀況。如果不懂計算思維,很容易就迷惘了。
最近像這樣的文章和書籍很多。研究未來學的人認為人工智慧是未來的重要趨勢,極盡能事去想像未來,但究竟有多少真實會發生,有多少只是虛無飄渺的幻想?
我想,很少人有能力確定,不過當前許多學生都跑來研究人工智慧相關的議題,則已成為我在台大所看到的事實。
人工智慧的困難
我三十四年前在高中時,就對於人工智慧很感興趣,開始學LISP,後來進到台大念電機系,修了兩門人工智慧的課,還旁聽過神經網路;到密西根大學念書也修過人工智慧,但我沒有繼續研究人工智慧,因為我覺得當時研究者走偏了。
而且當年電腦的運算速度,遠遠不足以支持有意義的人工智慧,所以根本做不出東西。
我猜對了:1990年代之後,人工智慧成為票房毒藥,沉寂了近二十年。
我選擇做電腦系統,看著電腦系統的效能持續成長;電腦系統的研究者想出各種方法,來收割不斷成長的電腦效能。過去這三十年,最忙碌的研究領域之二,是計算機結構和系統軟體,我有幸能悠游於兩者之間,探討一些軟硬體整合的議題。
如今,單一處理機的運算能力約為30年前人工智慧全盛時期的100萬倍(以摩爾定律概算,假定每18個月電腦效能增加一倍),而且只要願意付些許錢,就可以租用雲端的上百台電腦,運算能力更是30年前的一億倍以上。
要注意到,這一億倍的運算效能,是人工智慧東山再起的關鍵:沒有足夠的效能,電腦很難生出智慧。然而,如今的運算效能,是否足以支持未來學想像中的人工智慧,則是一個大哉問。
摩爾定律與人工智慧
大部份未來學專家的預測,都是基於以往的摩爾定律;但這幾年摩爾定律已經放緩,甚至有可能停滯,主要是成本考量。
以往這麼多年透過個人電腦、電子商務、行動運算、雲端服務等應用,半導體產業有足夠的利潤做研發來支撐摩爾定律,而大數據分析和人工智慧是否足以繼續支撐摩爾定律的延續?
如果摩爾定律停滯,那該如何是好?
有些人工智慧應用需要比目前更高百倍的計算能力,有的實驗研究要成為產品之前,需要將龐大的運算能力縮小進到生活周邊;因此我認為我們做計算系統的,在產品化的過程中,還是扮演舉足輕重的角色,將來應該會有做不完的人工智慧系統設計的工作。
創造人工智慧系統的關鍵
要創造出人工智慧的系統,關鍵在於要有能夠密切垂直整合的團隊,必須要有三種專家密切配合:
領域專家:例如找律師、藥劑師來指導或教導電腦該領域的專業技能。
人工智慧專家:綜合運用機器學習、數據分析、資料探勘等方式設計人工智慧演算法與軟體。
系統專家:提供人工智慧所需的系統整合、資料蒐集、處理和計算能力,針對人工智慧應用優化系統軟體、設計晶片。
台灣比諸於其他許多國家,由於有硬體產業的基礎,非常適合發展「3. 系統專家」(這也是我想培育的,也是目前即欠缺的人才),加上台灣目前很多學生對人工智慧很有興趣、學得很快,所以我不擔心會短缺「2. 人工智慧專家」。
台灣在各行各業也有很多領域專家,但是能否聚集人才成為優質研發團隊,是真正的重點。
我想,很多有識之士已經看到這個局面,這是值得台灣去發展的好機會。我希望國家和社會多投入一些資源鼓勵產學界共同組成「對」的團隊,來把握這樣的機會,讓學術界多做些有益於這類幫助國家產業發展的研發工作。
然而,在謀求發展的機會的同時,我們也應該做好教育的工作,讓未來的世代能夠好好面對電腦和機器人;與其教學生背誦記憶一堆電腦瞬間可解的問題,不如教他們如何活用電腦、想辦法與電腦和機器人共榮。
另外,科技的民主化以及財富的合理分配,也將會是越來越重要的課題。我們絕對不希望大家多年努力的成果,被少數資本家收割,讓科技成為資本家搜刮社會資源和剝奪人民權益的打手──這是社會大眾需要慎重看待和避免的議題。
技術面的問題
現在來談談技術面。
首先是關於「摩爾定律」,我在半年前寫了一〈後摩爾定律的世界和台灣的產業發展〉,有興趣的人可以參考一下。我當時說:
說白一點,摩爾定律是錢砸出來的。摩爾定律的黃金時代,開始於個人電腦急速成長的時代,但個人電腦的效能在十年前就已經能夠滿足大多數個人,所以「世界」對於摩爾定律的期待逐漸降低。
雖然智慧手機和平板的異軍突起,但主要是希望摩爾定律能夠提供更高的性能耗能比(power-performance);然而這幾年手機平板已趨於飽和,也沒看到真正個人所需要的高性能耗能比的應用(killer apps)。
再加上像Qualcomm、Samsung這樣的公司在推出新的行動晶片上,屢次因為晶片過熱而踢到鐵板,所以在既然沒有消費者的需求,晶片製造商也裹足不前的情況下,自然就會降低對於摩爾定律的挹注。
我想,在缺乏資金挹注的情況下,摩爾定律在技術上能延續的機率不高,即便不少研究者熱中於此。除非有真正大眾需要的應用,或是再度出現軍備競賽,否則很難改變摩爾定律的終結。
但任何事都可能有例外,不能太鐵嘴,還好我最後有加上一個以「除非」開頭的句子。
人工智慧是否能成為大眾真正需要的應用,或是用於軍事用途? 我想其可能性還不小,所以我在這幾個月跟一些業界朋友說,不要再搞那些傳統的消費電子產品了,要想想如何將「智慧」加進產品之中。
怎麼把「智慧」加進小型的裝置之中?基本上,有下列方法:
由小型裝置自己做
藉由網路把工作送到集中式的伺服器去做
藉由網路把計算工作送到周遭多台機器分工合作
上述三種的組合
先說「自己做」行不行?現在很多人手上的手機,能做多少事情?
其實手機可以做很多事情,只是會遇到過熱和電量不足的問題;但是這兩個問題影響較大的是較長時間使用的應用。
如果我們要的是「即時性的智慧」,那麼問題應該比較像是「如果手機在五秒內全速執行,能夠解決那些問題?」。
舉例來說,即將出現在手機市場上的Qualcomm旗艦處理機Snapdragon 820有多厲害呢?據報導,這顆晶片的4核CPU比前一代S810的8核快35%、省電30%、支援600Mbps的無線網路;其中的繪圖處理單元(GPU)也快了40%、省電40%、還支援OpenCL 2.0。
不只如此,他們還有一顆名為「Spectra」的影像訊號處理器(image signal processor),可以加速影像處理和支援電腦視覺(computer vision)。
要自己做,可以,得想辦法把各種運算能力整合到晶片上;要讓手機晶片有智慧,不能只靠在CPU上跑的純軟體,一定不夠力的。
有些應用可藉由通用圖形處理器(GPGPU)來加速以資料為主的運算(data-parallel computing);例如做機器學習的開源軟體「Mahout」和「Caffe」,都可以用OpenCL程式碼跑在GPU上。
小型特殊化架構
另外,以影像和聲音為主的應用,則最好設法在源頭解決問題;也就是說,在感測器紀錄影像或聲音之後馬上送到訊號處理機,使用專門特殊化(specialized)的計算架構來提升效率,其實電腦視覺也可算是初步的人工智慧。
從上述的例子,可以看到「特殊化」處理機的趨勢越來越明顯,因為用CPU跑純軟體太沒有效率。
時下很多人討厭寫C程式,喜歡用像是Java、Javascript、Python之類的高階語言來開發應用。但對於開發與效能息息相關的系統軟體的人來說,光是懂得寫C程式可能還不夠,要懂得multithread、OpenCL、CUDA才會善用多核心的CPU/GPU;要懂得訊號處理機的架構和專用語言才能發揮其能力,甚至要會使用「硬體描述語言」才能用FPGA來加速計算。
我預測未來這十年,是大家各憑本事、各顯神通,想盡辦法來打造智慧系統的黃金年代;我們將會看到百家爭鳴,在計算架構和軟體設計上不斷推陳出新,快速發展。
當然,演算法也極為重要──再厲害的運算能力,也挽救不了愚笨的演算法。
而且,針對大系統所開發的演算法和軟體,不見得適用於小機器,例如把Google釋出的Tensorflow裝在小機器上,可能會發現它的效率不彰,所以各公司可尋找屬於自己的利基市場。
當然,如果不限定要帶在身上,智慧型裝置也可能出現在車上、電線桿上的監視錄影機。因為體積和電力供應較大,我們有機會將百倍於手機的運算能力放進這些裝置。
新興的人工智慧應用
所以某些人工智慧的應用,可能會先出現在這類裝置上,例如前不久的CES 2016消費性電子展,我們就看到了NVIDIA和Qualcomm都推出車用的處理機來搶攻這類市場,例如NVIDIA號稱性能比Macbook Pro強150倍的車用人工智慧電腦NVIDIA DRIVE PX 2、以及具有機器智能神經學習系統的高通Snapdragon 820A車用處理器等等。
這是個新興市場,我希望台灣的業界人士看到以上幾段會頗為振奮;尤其是那些在硬體公司寫系統軟體的朋友們,這是值得把握的機會。
如果您能夠針對某個智慧型應用設計出又快又省電的系統,那就有機會逐鹿天下。不過呢,要把握機會,必須先搞清楚這些研發工作將會需要「緊密的垂直整合」,最好有一個人才濟濟的團隊。
針對應用的需求規劃系統軟硬體,要有「軟體為主,硬體為輔」的思維,最好如我在〈深化產學合作!向沒有能力領導創新的大企業說掰〉這篇專訪上談到的,要找到軟硬兼備的系統架構師(system architect)來領導研發工作。
集中運算處理
當然,我們也可如第二種方法:「藉由網路把工作送到集中式的伺服器去做」,來提升小型設備的智慧。
但首先,網路傳輸需要時間,不利於即時性的應用;其次是隱私性和安全性的問題,我們未必希望讓大公司那麼清楚的知道我們的一舉一動,所以也可能不希望把全部的工作送到集中式的伺服器去做。
再來,極為耗費運算資源的工作,除非Google能夠由此獲得廣告利益,否則它未必願意提供免費的伺服器資源來幫大眾做這個,所以並非所有應用都會有免費服務。
同時,在資料中心做人工智慧的運算,更需要高效率的加速技術。因此現今很多大公司都在積極找高手來加速需要大量運算的服務,例如微軟有個專門以FPGA加速資料中心服務的研究團隊Catapult,陸續發表加速搜尋引擎和機器學習的技術。
網路分工計算
第三種方法與第二種方法的差別,在於利用較近的機器做計算來縮短時間,選擇能夠信任的機器來保護隱私,以及以互助會的模式來分享互惠資源。
我們做過這類模式的相關研究,也實際建構出系統,例如這篇將Android程式中大量數據處理的工作轉移給其他機器的作法。[footnote]註:Shih-Hao Hung, Tien-Tzong Tzeng, Gyun-De Wu, Jeng-Peng Shieh. A Code Offloading Scheme for Big-Data Processing in Android Applications, Software — Practice and Experience, first published online May 2014.[/footnote]
雖然目前還缺乏需要這種模式的高運算量行動應用,不過我相信在未來身邊需要人工智慧的時候,應該會有這類的需求和做法。
結語
實際的作法,也可能是以上三種方法的排列組合;至於如何排列組合,就考驗系統架構師的能力了。
台灣現在很缺系統架構師的人才,缺到業界連如何善用系統架構師、去哪裡找這些人、如何培養這種人都不知道。
以前做代工不需要這種人才就算了,如果現在還不知道,那就難做了。現在業界有不少地方都說要做人工智慧,但我奉勸想加入這類團隊的朋友,先看看帶頭大哥懂不懂,有沒有兩把刷子再說。