人工智能、深度学习和AIoT
1 引言
如果從人類最初的幻想開始算起,人工智能的歷史非常久遠,也許能與人類文明比肩。而現代化的人工智能歷史是從1956年達特茅斯會議開始的。在這之后,人工智能的研究幾經起落,符號主義、聯結主義、專家系統等都曾經興盛一時。如今,深度學習又代表人工智能走上了時代潮頭,幾乎滲透到了這個時代的每一個領域。
然而,不管是哪一種技術手段,到目前為止,人工智能終究不過是一種對人類智能的拙劣模仿。每一種學說和流派都只是站在某一個角度來看待、模仿人類某一方面的思維、語言和行動。
從某種程度上說,是深度學習讓人工智能走出學術象牙塔和科幻作品,在二十一世紀的第二個十年火遍整個世界。然而令人遺憾的是,這種盛況的出現并不是因為人工智能理論的突破,而是因為人類社會整體科技和生活方式的發展。
正如很多人了解的那樣,如今蓬勃發展的人工智能技術有三大支柱,分別是算法、算力和數據。準確地說,這三根支柱支撐起來的不是人工智能技術,而是深度學習技術。再進一步地說,真正促使人工智能在二十一世紀騰飛的,不是算法,而是算力和數據。
2 深度學習的基石
早在1957年,Rosenblatt就在Cornell航空實驗室發明感知機——一種簡單的人工神經網絡。然而,單層感知機能解決的問題是十分有限的,為此,Minsky甚至專門寫了一本叫《感知機》的書與Rosenblatt論戰,并取得了完勝。感知機的發展也因此而停滯,直到六十多年后才出現了多層感知機——深度神經網絡。Rosenblatt的那個年代也是一個神仙打架的時代,Minsky更不用多說,他是達特茅斯會議的發起人之一、圖靈獎獲得者,更有一個響亮的稱號——“人工智能之父”。如果僅僅是將人工神經網絡的層數加深就能解決問題,這些宗師級的人物會想不到嗎?當時擺在Rosenblatt眼前的事實是,他不知道如何對多層感知機進行訓練。這就像一座無法逾越的大山,讓當時的人看不到感知機未來的希望,直到計算機硬件水平發展到了二十世紀末才讓多層感知機有了出現的基礎。
1986年,Rummelhart、McClelland和Hinton在多層感知器中使用BP算法,才解決了深度人工神經網絡訓練的問題。1990到1998年期間,Lecun等人陸續發表了關于第一個深度卷積神經網絡LeNet的論文,LeNet也成功應用于手寫體字符識別應用中,在MNIST數據集上實現了99.2%的準確率。以最典型的LeNet-5為例,LeNet-5網絡一共由7層組成,分別是三個卷積層(C1、C3、C5),兩個下采樣層(S2、S4),一個全連接層(F6)和一個輸出層(softmax)。LeNet基本具備了現代CNN網絡的特點,其局部感受野、權值共享和下采樣的核心思想至今依然影響著CNN網絡的發展。然而,真正使深度神經網絡聲名鵲起的卻并不是LeNet,而是還要等到2012年的AlexNet。在這之前,還有兩個工作是至關重要的。一個是斯坦福大學李飛飛教授發起的ImageNet項目,一個是NVIDIA推出的通用并行計算架構CUDA。
ImageNet是一個包含超過1400萬張圖像和2萬多個類別的大規模標注圖像數據集,這些數據可以免費提供給研究人員用于非商業用途。2010年到2017年期間,ImageNet項目每年舉辦一次大規模視覺識別挑戰賽,即ILSVRC。在歷年的ILSVRC中涌現出了大量經典的、甚至劃時代的深度學習算法,例如Inception、ResNet等。正是ImageNet和ILSVRC的出現,給深度學習的發展加上了液氮加速器。在2012年,AlexNet在ILSVRC競賽上大放異彩,正式宣布了深度學習時代的開啟。
NVIDIA是一家做顯卡出身的公司,其最早推出的GPU產品(GeForce 256,1998年)最先在游戲領域得到了青睞,因為其特有的并行處理能力可以加快游戲的圖形幀速度,這是CPU難以做到的。而并行處理能力,恰好也是深度神經網絡中的矩陣運算所需要的。因此,將GPU用于深度神經網絡的訓練就順理成章了。為了讓工程師和科學家們更好地利用GPU進行通用計算,NVIDIA在2007年發布了面向開發者的通用并行計算架構CUDA,這直接推動了GPU進入深度學習領域,并逐漸取得了業界無可撼動的老大哥地位。目前,NVIDIA GPU依然是深度學習社區最為青睞的計算機硬件產品,其構建起的深度學習生態也已成為NVIDIA最為寬廣的商業護城河,其他大部分企業只能望洋興嘆。
介紹完ImageNet和NVIDIA,回過頭來再看AlexNet的成功。AlexNet能在2012年ILSVRC競賽一舉奪魁,固然離不開Hinton、Krizhevsky等人在算法上做出的努力,但這些努力卻更多的體現在如何對深度神經網絡進行更好的訓練上,例如使用Dropout、數據增廣、激活函數ReLU,并采用了多GPU訓練。我們應該看到AlexNet的成功還有另外兩塊至關重要的基石,那就是相比于前深度學習時代的以NVIDIA GPU為代表的超大算力和以ImageNet為代表的海量數據。沒有這兩者,深度學習便無從談起。
3 深度學習的本質
深度學習雖然在第三次人工智能浪潮中取得了令人驚嘆的表現,但難以回避的是,其從一開始就有著令人不安的缺陷,那就是不可解釋性。深度學習不但沒有符號主義嚴密的邏輯關系,甚至也丟掉了統計學習分而治之(divide and conquer)的思想,它所呈現出的是一種端到端(end to end)的黑盒模式,只有輸入和輸出,沒有能令人信服的理由。因為不可解釋,所以也不可靠。因此,深度學習在很多對安全要求極為嚴苛的領域都難以實用。
然而不可否認的是,從結果上看,深度學習確實在一些領域取得了質的突破,甚至在某些限制性任務上超出了人類的平均水平,例如ResNet在2015年ILSVRC競賽的分類任務上歷史性超過人類,Alpha Go擊敗人類頂級棋手。
正如世界上所有事物一樣,深度學習也具有著讓人矛盾的兩方面,一方面是遠超傳統算法的魯棒性、泛化性和準確性,另一方面是令人難以捉摸的不可解釋性。而這兩方面的原因都應該從其本質上去尋找。而深度學習的本質是高維擬合。
到目前為止,不論人工智能技術怎樣發展,其不變的技術核心還是數學建模,還是在用各種數學模型來解決實際問題。最簡單的數學模型是線性擬合,復雜一點可以做曲線擬合或平面擬合,再復雜一點可以做超平面擬合,也就是從某些角度增加模型的維度。深度學習的核心特征是深層結構和海量參數,本質上是在用海量參數高維擬合復雜數據,而這些參數都是通過訓練策略模型自己“學習”到的,我們不知道哪些參數有什么樣的現實意義,所以模型可解釋性極差。但也是因為高維擬合,深度學習對問題的建模往往更加準確,所以在統計學意義上,深度學習算法常常是更優的。
從這個角度看,深度學習其實是一門工程,一門能夠實現一定人工智能效果的計算機工程,談不上科學,最多是腦科學、心理學等科學理論的拙劣應用。很多深度學習領域的從業者往往自嘲為“煉丹師”,因為真正在深度學習落地的環節,很多時候起決定性作用的不是算法上的差異,而是工程設計上的優劣。但如果將問題維度升級,深度學習也是可以幫助我們進行科學研究的,比如數據挖掘。計算機和我們人類不同的是,人類擅長演繹,而計算機擅長歸納。面對海量數據,人類很難從中歸納出隱藏很深的規律,但計算機可以,也不一定這就是科學規律,但這最起碼給科學家提供了一些方向,再去證實或證偽,從這個角度而言,深度學習也是有助于科學發現的。
4 深度學習的應用
既然深度學習是一門工程,那只有能用起來它才有發展的生命力,否則遲早會被歷史淘汰。應用就是深度學習的靈魂。事實上,深度學習領域的很多創新也都是為了能讓深度學習算法真正用起來而設計的,比如殘差結構是為了解決在模型訓練中的梯度消失問題,批歸一化(Batch Normalization)是為了解決訓練中的局部最優問題。
與傳統計算機應用不同的是,深度學習的應用為了實現落地,深度學習從硬件到軟件發展出了一個龐大的工程生態。
深度學習的硬件可以分為兩部分,一部分是訓練端(類似于軟件的開發側),一部分是推理端(類似于軟件的應用側)。訓練端的深度學習硬件要對大量數據進行并行處理,對算力的規模、速度要求極高,是一種高速密集并行計算模式。目前訓練端的深度學習硬件主要以NVIDIA GPU為主。在此之外,國外還有Google TPU、AMD GPU等;國內有華為昇騰、百度昆侖芯等。NVIDIA最先開辟了深度學習硬件領域。憑借著先發優勢和多年耕耘,NVIDIA建立起的行業生態非常成熟,與同類公司相比優勢不可以道里計。推理端的深度學習硬件因為要保證算法的推理速度,因此更看重計算的效率,在很多場景下,任務對算法的響應速度要求很高,這時甚至需要將推理芯片部署到數據端,采用一種邊緣計算模式。相比于訓練端,推理端的深度學習硬件類型更豐富,按類型可以分為GPU、ASIC和FPGA三種。和訓練端情況類似的是,NVIDIA同樣占據了市場和生態的優勢位,但不同的是,由于推理端靠近場景應用,在通用計算外,面向特定領域特定場景的硬件也能占據一席之地,因此有更多公司參與進來,形成了一個更為多元的局面。除NVIDIA Jetson外,國外還有Google Coral、Intel神經計算棒、Xilinx FPGA等;國內有華為Atlas、百度昆侖芯、寒武紀思元、地平線征程等。
相比其他計算機軟件,深度學習軟件對硬件更為依賴,這也是NVIDIA能在深度學習領域建立起巨大生態優勢的關鍵原因之一。得益于最早進入深度學習領域,目前最為活躍的深度學習框架基本都建立在NVIDIA生態基礎上,例如深度學習兩大開源框架TensorFlow和PyTorch都對NVIDIA GPU有著很好的支持。而且除非自研芯片,否則新推出的深度學習框架也會首選適配NVIDIA GPU,而不是其他硬件。以下是在國內外最知名的兩個開源代碼托管平臺碼云(Gitee)和Github上的深度學習框架情況對比。
碼云(Gitee)
| 1 | MindSpore | 57650 | 3400 | 7100 | 1073 | 華為 |
| 2 | PaddlePaddle | 38537 | 321 | 3900 | 864 | 百度 |
| 3 | OneFlow | 8943 | 12 | 32 | 152 | 清華 |
| 4 | MegEngine | 2280 | 6 | 16 | 35 | 曠視 |
| 5 | Jittor | 2894 | 23 | 58 | 46 | 清華 |
Github
| 國外 | ||||||
| 1 | TensorFlow | 139261 | 87500 | 169000 | 3236 | |
| 2 | Pytorch | 54187 | 16900 | 60600 | 2557 | |
| 3 | Theano | 28127 | 2500 | 9600 | 351 | 蒙特利爾大學 |
| 4 | MXNet | 11893 | 6900 | 20200 | 874 | Amazon |
| 5 | Caffe | 4156 | 1900 | 4300 | 269 | BAIR |
| 國內 | ||||||
| 1 | MindSpore | 56741 | 601 | 3200 | 421 | 華為 |
| 2 | PaddlePaddle | 38699 | 4800 | 19200 | 651 | 百度 |
| 3 | OneFlow | 8948 | 477 | 4000 | 清華 | |
| 4 | MegEngine | 2894 | 497 | 4400 | 40 | 曠視 |
| 5 | Jittor | 1539 | 270 | 2600 | 35 | 清華 |
深度學習框架實際上是一套對上快速開發算法、對下方便調用計算機硬件資源的軟件工具箱,因此既和深度學習算法關系密切,又和計算機硬件強相關。根據使用階段不同,深度學習框架也分為訓練端和推理端兩類。除了NVIDIA本身不做框架外,一般發布新框架的公司會與自己推出的硬件綁定,也會適配其他流行的深度學習框架。值得注意的是,為了增強不同框架的模型之間的可交互性,還有一種專門用來做中間表示的開放模型ONNX。通過ONNX,很多框架模型之間可以靈活轉化,極大地方便了深度學習模型的部署。
4 AIoT
如果說應用是深度學習的靈魂,那AIoT就是深度學習的未來。
AIoT是AI和IoT的綜合,也就是人工智能+物聯網。根據高德納技術成熟度曲線理論,目前深度學習已經處于高期望峰值與泡沫化谷底之間,亟需通過大規模的落地應用來實現再次的穩步爬升。
就目前的技術發展來看,深度學習很難實現所謂通用人工智能,人工智能技術在很長一段時間里還會遵守“沒有免費的午餐(No Free Lunch Theorem, NFL)”理論。因此,深度學習的應用必須要結合具體場景,建立云邊端協同和萬物互聯的AI應用未來。
5 小結
本文簡單回顧了人工智能和深度學習的發展脈絡,對深度學習的基礎、本質和發展進行了一定的思考。觀點純屬一家之言,歡迎批評討論。
參考文章
總結
以上是生活随笔為你收集整理的人工智能、深度学习和AIoT的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: LinuxCNC性能剖析
- 下一篇: AI 趋势