深扒人工智慧——基礎技術篇

上一篇《深扒人工智慧——現狀篇》將人工智慧產業分為三個層面:基礎技術層、應用技術層和產品服務層。接下來三篇文章我們將分別介紹這三個層面的具體狀況。本篇介紹基礎技術層。基礎技術層包括機器學習、人工智慧晶元等基礎支撐技術。

機器學習

機器學習主要研究機器模擬人的學習行為,以獲取新的知識或技能。機器學習是人工智慧基礎技術層的軟體核心。

機器學習一般分為訓練(Training)和推斷(Inference)兩個階段。在訓練階段,機器需要讀取大量的訓練數據(類似人類的經驗)經過大規模的訓練生成一個模型(類似人類學習得到的技能)。在推斷階段,機器利用訓練得到的模型,可以預測新數據的結果。

目前主流的機器學習分支主要有統計學習和深度學習。統計學習已經被成功應用到現代社會的各個方面,而深度學習技術是近年來人工智慧熱潮的直接推動力。深度學習框架是深度學習的核心工具,本節主要介紹主流的深度學習框架。

深度學習框架

伴隨著人工智慧的熱潮,很多互聯網公司和研究機構都投入重兵參與研發深度學習框架,並將其開源以擴大影響力。目前市面上深度學習框架層出不窮、數目眾多,我們從中選擇影響力較大且有代表性的11個進行介紹,包括TensorFlow、MXNet、Caffe、Caffe2、CNTK、Deeplearning4j、PaddlePaddle、Keras、Torch、PyTorch、Theano等。

TensorFlow

TensorFlow由Google於2015年推出,網路結構基於計算圖,架構靈活,對分散式提供原生支持。它依託Google強大的研發實力和業界影響力,社區活躍,文檔豐富,生態完備,還配備了網路結構可視化工具TensorBoard。TensorFlow是目前關注度最高的深度學習框架

TensorFlow的定位不局限於深度學習,而是面向使用計算圖的所有機器學習任務,因而架構龐雜、概念繁多,有一定的學習門檻,單機性能還沒有優化到足夠好,在性能評測中往往落於下風。

MXNet

MXNet由開源社區DMLC(Distributed?Machine?Learning?Community)開發,核心開發者是陳天奇、李沐等中國人。MXNet的設計目標是高性能和靈活性。MXNet架構非常靈活,用戶可以混合使用符號編程模式和指令式編程模式,原生支持多GPU、多機的分散式訓練,可運行於雲端、桌面和移動端,並在性能和內存效率上做了很多優化。MXNet的介面支持的語言是最豐富的,包括C++, Python, Julia, Matlab, JavaScript, Go, R, Scala, Perl等。MXNet目前已經被亞馬遜AWS選為官方深度學習框架。MXNet是一款來自開源社區,各方面都非常非常優秀,可以與目前最火的TensorFlow對標的深度學習框架。相比TensorFlow,MXNet還具有輕量級、高性能、介面語言更豐富的優勢。

目前MXNet開發者的主要精力仍專註在框架開發上,周邊的文檔、樣例還不夠豐富,入門難度較大。

Caffe

Caffe目前由伯克利視覺學中心(Berkeley?Vision?and?Learning?Center,BVLC)維護,創始人是賈清揚,賈也是TensorFlow、Caffe2的作者。Caffe專精於計算機視覺領域,易上手,速度快,代碼質量較高,運行穩定,是第一個主流的工業級深度學習框架。Caffe有一個很大的優勢是社區積累了大量已經訓練好的模型,方便開發者共享復用。

Caffe的網路結構基於層,靈活性較差,新增功能麻煩,目前項目已經很少更新。

Caffe2

Caffe2由Facebook於2017年4月推出,目前就職於Facebook?FAIR實驗室的賈清揚是其核心開發者。Caffe2沿襲了大量的 Caffe 設計,但網路結構改為了更為靈活的計算圖。Caffe2是一個輕量級、高性能的深度學習框架,定位於生產環境,跨平台特性優良,可以在 iOS、Android 和樹莓派上訓練和部署模型。

Caffe2框架較新,目前功能還不夠豐富,實現分散式訓練較麻煩。

CNTK

CNTK由微軟於2016年1月推出,基於計算圖,支持多GPU、多機的分散式訓練,代碼質量高,經歷了微軟多條產品線的考驗,性能優異,相比其它框架有一定優勢。CNTK源自語音領域,針對該領域做了很多優化。

相比已有主流庫,CNTK並沒有太多差異化優勢,易用性也相對較差。

Deeplearning4j

Deeplearning4j(簡稱DL4J)由商業智能和企業軟體公司Skymind牽頭開發,是用Java和Scala開發的深度學習框架。DL4J可以很好地利用Java社區在分散式計算、雲計算上的優良生態,通過集成Hadoop和Spark用於分散式訓練。此外DL4J還提供了商業版的支持。

PaddlePaddle

PaddlePaddle由百度研發,是國內公司首款開源深度學習框架。它簡單易用,高效強大,可以支撐複雜集群環境下超大模型的訓練,已經應用於百度多條產品線。它自帶了很多常用演算法(NLP相關演算法居多),開發者稍作修改即可復用。

PaddlePaddle的網路結構基於層,靈活性較差,增加新功能較麻煩。

Keras

Keras主要由Francois Chollet一人開發,是一個元框架,底層封裝了TensorFlow和Theano,設計參考了Torch,為開發者提供了非常易用的介面,適合快速搭建原型。Keras社區活躍,文檔豐富,是很好的入門框架。也由於Keras封裝得太高級,因而不方便深度開發,不合適做深入的演算法研究。

Torch7

Torch7是一個LuaJIT上的科學計算框架,靈活性和性能俱佳,適合用於科研。Facebook力推,並為其開發了一系列工具。不過Torch7的介面語言只有Lua,不像Python那麼主流,是阻擋開發者的門檻。

PyTorch

PyTorch由Facebook於2017年1月發布,基於Torch,使用Python開發,彌補了Torch沒有Python介面的缺點。它非常現代而且輕量級,更為靈活,支持動態圖,非常適合科研。目前框架較新,還不太成熟。

Theano

Theano由蒙特利爾大學於2008年推出,歷史久遠,使用Python開發,比較底層,建模能力強,派生出了大量包括Keras在內的深度學習包。Theano存在編譯時間長,代碼比較hacky,調試困難,可移植性較差等問題。

人工智慧晶元

人工智慧晶元是深度學習的硬體基礎,為人工智慧的發展提供了源源不斷的計算力,是人工智慧發展的三大驅動因素之一。

通用處理器CPU早已經被實踐證明並不適合深度學習,目前適用於深度學習的晶元主要分為四大類:GPU、FPGA、ASIC和類腦晶元。

從使用場景上看,深度學習一般也分為訓練和推斷兩個階段。訓練市場占整個深度學習市場的5%,其餘95%都是推斷市場。

在訓練階段,大量訓練數據被輸入深度神經網路進行學習並最終生成模型。GPU並行度非常之高,在此場景下非常高效,是業內的不二選擇。

推斷階段又可以細分為服務端的推斷和終端設備上的推斷。

在服務端的推斷,GPU依然是第一選擇,但FPGA也有一定的優勢。百度大腦項目在推斷階段採用FPGA後將性能提高了3至4倍,功耗降低了50%。微軟在數據中心也大規模使用FPGA。谷歌則專門打造了TPU。

在終端設備上的推斷,對低功耗、實時性要求更高,FPGA與ASIC憑藉良好的運行能效比漸漸佔據主流。中國的深鑒科技、地平線機器人等創業公司也都專註在基於FPGA平台提供終端設備的晶元集成方案。

GPU

GPU(Graphics Processing Unit,圖形處理器),適合做大批量同構數據的處理。在深度學習上可以提供比CPU高數十倍乃至於上百倍的性能。GPU因其並行計算優勢最先被引入深度學習。GPU的發明者Nvidia佔據了70%的市場份額。借著人工智慧的東風,Nvidia的股價在2016年飆漲了230%。

FPGA

FPGA(Field Programmable Gate Array,現場可編程門陣列),適合做需要低延遲的流式處理,其峰值計算性能遠低於GPU,但可對硬體編程,因而可以針對特定的機器學習演算法開發特定的架構。百度、微軟、IBM等公司都有專門做FPGA的團隊為伺服器加速。FPGA的可配置性更適合企業、軍工等應用。FPGA相比GPU而言在能耗和體積上更有優勢,所以也被大量的運用在一些需要便攜性的產品中(比如大疆的無人機)。目前Xilinx和Altera總計佔據了FPGA85%的市場份額,Altera已經被Intel於2015年以167億美元收購。

ASIC

ASIC(Application Specific Integrated Circuits,專用集成電路)是一種專用晶元,性能高、低功耗、量產成本低,但開發周期長、可配置性有限。中國的寒武紀是全球首款專為深度學習打造的專用晶元。Google專為TensorFlow深度學習框架定製的晶元TPU(Tensor Processing Unit)也是一款ASIC。

類腦晶元

類腦晶元是指參考人腦神經元結構和人腦感知認知方式來設計的晶元。隨著各國「腦計劃」的興起和開展,湧現出了大量神經形態晶元研究成果,受到國際上的廣泛重視並為學界和業界所熟知。例如IBM 公司的 TrueNorth 以及高通公司的 Zeroth,歐 盟支持的 SpiNNaker 和 BrainScaleS、斯坦福大學的 Neurogrid。類腦晶元更好的模擬了人的神經網路,可能具有非常大的潛力。但截止目前,還沒有量產的類腦晶元。


推薦閱讀:

TAG:人工智慧 | 深度學習DeepLearning | 晶元集成電路 |