余偉豪+李忠+安建琴+宋奕瑤
引言
2016年3月,谷歌公司開發(fā)的人工智能圍棋程序AlphaGo和韓國九段圍棋選手李世乭進行了五場比賽,最終AlphaGo以4:1的結果大勝對手。隨后,升級版的AlphaGo,即Master又在網絡上與中日韓選手對戰(zhàn),橫掃中日韓圍棋高手,無一敗績。最近全新升級的AlphaGo與世界排名第一的中國九段棋手柯潔進行對戰(zhàn),結果三戰(zhàn)全勝!這使得人工智能在全球范圍內引起了廣泛的關注和討論,而AlphaGo采用的深度學習方法,也掀起了一股深度學習的浪潮。
1深度學習簡介
深度學習從傳統(tǒng)的人工神經網絡發(fā)展而來。自20世紀80年代以來,人工神經網絡得到了巨大的發(fā)展,其中以BP算法為代表的傳統(tǒng)人工神經網絡方法的在分類、聚類方面得到了廣泛應用。然而,BP算法本身的缺陷也是明顯的,容易過擬合以及只能訓練有標簽的數據。與傳統(tǒng)的人工神經網絡相比,深度學習網絡增加了網絡中的隱含層數,傳統(tǒng)人工神經網絡一般在5層以內,而深度學習網絡至少達到7層及以上。隨著網絡規(guī)模的增加,對神經網絡模型的訓練和優(yōu)化難度也變得困難。2006年,Geoffrey Hinton等人在《Science》上發(fā)表了文章,提出的用于深度信任網絡(Deep Belief Network,DBN)的無監(jiān)督學習算法,解決了深度學習模型優(yōu)化困難的問題,拉開了深度學習的大幕。同時,計算機技術不斷發(fā)展,使得計算能力大大提升,也極大地促進了深度學習地發(fā)展。目前,基于深度學習的人工智能應用在各個方面,主要包括計算機視覺、自然語言處理、語音識別、信息檢索等方向。
2深度學習框架
深度學習的研究方式和過去傳統(tǒng)的研究方式大不相同。在深度學習領域,已經有很多的科研機構和世界一流的院校開發(fā)了多種深度學習工具,這些學習工具或者說深度學習庫在許多領域大顯身手,如計算機視覺、自然語言處理、自動駕駛等。對于研究者來說,選擇合適的框架來解決某一方面的問題是十分必要的。下面介紹目前流行的幾種深度學習框架,并進行分析比較,以期為研究人員選擇合適的框架提供參考。
2.1TensorFlow
TensorFlow最初是谷歌公司內部使用的深度神經網絡庫,屬于谷歌“BRAIN”項目。2015年11月,谷歌正式發(fā)布這一系統(tǒng)并宣布開源。TensorFlow支持多種編程語言,比如c++和Python,用戶可以在TensorFlow下靈活地構建神經網絡模型,并且可以方便地修改和優(yōu)化模型。在TensorFlow框架中,所有的計算任務都是基于“圖”的。在圖中,可以存在很多個節(jié)點(operation),一個節(jié)點可以獲得零個或者多個張量(tensor),每個張量是一個類型化的多維數組。這種特殊的數據表示形式,可以讓用戶高效方便地構建深層神經網絡。TensorFlow框架自帶一個非常好用的工具Tensorboard,它是一款可視化工具,可以讓用戶直觀地看到數據在神經網絡中的變化,也可以看到整個網絡的結構。用戶通過這個功能,會非常方便和直觀地觀察自己的神經網絡模型,并且很直觀地進行修改。
一個TensorFlow程序通??煞譃閮蓚€過程,一個是構造階段,另一個是執(zhí)行階段。在構造階段,用戶通過編寫程序構造出一張計算圖,創(chuàng)建圖本質上來說就是創(chuàng)建節(jié)點(op)對象以及如何把它們連接起來的過程。在執(zhí)行階段,因為所有的圖都是在Session中啟動,所以第一步是創(chuàng)建Session對象,第二步對變量進行初始化,然后執(zhí)行節(jié)點間相應操作并更新變量值,最終保存數據。
2.2Caffe
Caffe是由FaceBookAI平臺的首席工程師賈揚清開發(fā),它集成了許多優(yōu)秀的深度卷積模型,在圖像處理方面表現(xiàn)優(yōu)秀,在2014年的ImageNet挑戰(zhàn)賽中,Caffe獲得冠軍,使得它一鳴驚人。Caffe網絡結構是通過編輯文檔構建的,對于初學者來說易于使用,因為不需要對具體的代碼有深刻了解,便可以構建自己的網絡模型,也可以對一些先進的網絡模型進行分析和改進。Caffe框架支持并行計算,配合英偉達公司的cuda技術,使用GPU加速使得計算高效。根據相關計算,Caffe可以在單個英偉達K40 GPU上每天處理6000萬張圖像,相當于一張圖片僅用2.5 ms!因此被廣泛地部署于商業(yè)應用和實驗研究。
Caffe使用的核心語言是c++,具有跨平臺的特性,便于移植,同時提供給用戶Python和Matlab接口進行開發(fā),同時還提供了很多已經訓練好的深度學習模型,如LeNet-5、AlexNet等。用戶使用這些模型的時候,只需針對具體問題模型的參數或結構做一些改進,就可以快速、高效地開發(fā)出新的應用。
2.3CNTK
CNTK(Computational Network Toolkit)是由軟件巨頭微軟公司研發(fā)的開源平臺框架,最初用于處理自然語言,支持Windows系列平臺,也支持Linux。與Caffe相同,CNTK也是基于c++架構,為用戶提供的編程接口是Python和c++,支持跨平臺的CPU/GPU部署,但不支持Arm架構,所以不能部署在移動設備上。
CNTk使用圖進行計算,這一點和Tensorflow相同。另外,CNTK支持細粒度的網絡層構建,用戶不需要使用低層次的語言就能構建復雜的層類型。
2.4MxNet
MXNet是一款為效率和靈活性而設計的深度學習框架,由美國華盛頓大學和卡內基梅隆大學聯(lián)合開發(fā),核心是一個動態(tài)的依賴調度,允許用戶進行混合符號編程和命令式編程,最大限度地提高效率和生產力。
MXNet很容易定義數據結構,支持多GPU并行計算,并方便地加以擴展,為分布式系統(tǒng)提供了優(yōu)化的數值計算模式,像Python和R語言一樣,可以自動執(zhí)行常見的操作。因此,在使用標準的神經網絡時,只需要幾行簡單的代碼就可以表示。endprint
2.5Theano
Theano是一個基于Python的深度學習框架,出自于蒙特利爾大學的實驗室。Theano最早是用來做線性代數運算,但目前已專門用來計算由張量表示的重復操作的數學表達式。對于這類復雜的數學表達式,用戶可以在Theano框架下快速編碼和計算,無論是通過GPU還是CPU都可以編譯和執(zhí)行。Theano有著龐大的用戶群,使得Theano在不斷地完善。
還有其他幾種深度學習框架,如Torch、Deeplea.rning4J、PyTorch、PaddlePaddle等,感興趣的讀者可以查閱相關文獻資料。
2.6幾種框架的分析比較
可以說,以上幾種常用的深度學習框架各具特色,都可以完成深度學習建模和計算,對人工智能的發(fā)展具有深遠影響。下面從是否開源、核心語言、編程接口、CPU、GPU、操作系統(tǒng)和現(xiàn)有模型等七個方面對它們進行分析比較,結果見表1。
3高性能計算加速技術
近些年來,計算機技術飛速發(fā)展,一方面計算機的運算能力得到了巨大提升,另一方面,隨著工藝和技術的不斷改進,計算機硬件已經變得越來越便宜,高性能的計算機不斷向著微型化和民用化的方向發(fā)展。正因為計算機硬件越來越便宜同時計算性能越來越強大,才為深度學習提供了硬件基礎。深度神經網絡在訓練過程中會進行大量的浮點運算,如果僅僅靠CPU計算去訓練一個深度網絡模型,需要花費很長的時間。目前解決這個問題的方案主要有三種:
第一種是使用GPU加速。圖形處理器GPU(Graphics Processing Unit)是相對于CPU的一個概念,伴隨著多媒體計算的迅猛增長而被提出,并最終成為一個獨立于傳統(tǒng)CPU的處理器。如今,GPU通用計算技術發(fā)展已經引起業(yè)界很大的關注,事實也證明在浮點運算、并行計算等部分計算方面,GPU可以提供數十倍乃至上百倍于CPU的性能。與CPU相比,GPU有以下優(yōu)點:
(1)計算能力強大
GPU具有更加強大的計算能力,在相同時期,GPU的浮點計算的理論峰值能力相比CPU要高出一個數量級。
(2)價格相對便宜
對于個人和小機構用戶來說,要獲得高性能計算,如果使用傳統(tǒng)的基于CPU集群的計算機系統(tǒng),價格昂貴,對場地、供電等各方面要求也較高。而對于GPU,只需在支持獨立顯卡的PC上安裝一塊顯卡,就能獲得相同數量級的并行計算能力。一塊英偉達GTX TITAN的價格只在一萬元左右,對于個人和一般小機構用戶基本滿足需求。
第二種方案是使用ASIC(Application SpecificIntegrated Circuit),即專用集成電路,這是一種比GPU更加高效的硬件加速方式,一方面因其高度的定制化在提升計算能力的同時也限制了它的可遷移性。另一方面,ASIC的價格昂貴,個人和一些小機構用戶難以承擔。綜合這兩方面,目前深度學習的研究者幾乎很少考慮使用ASIC為計算機加速。
第三種解決方案是使用FPGA(Field-Program-mable Gate Array),即現(xiàn)場可編程門陣列,它是在PAL、GAL、CPLD等可編程器件的基礎上進一步發(fā)展的產物,是作為專用集成電路(ASIC)領域中的一種半定制電路而出現(xiàn)的,既解決了定制電路的不足,又克服了原有可編程器件門電路數有限的缺點。FPGA在GPU和ASIC中取得了權衡,很好地兼顧了處理速度和控制能力。一方面,F(xiàn)PGA是可編程重構的硬件,因此相比GPU有更強大的可調控能力;另一方面,與日增長的門資源和內存帶寬使得它有更大的設計空間。更方便的是,F(xiàn)PGA還省去了ASIC方案中所需要的流片過程。FPGA的一個缺點是其要求使用者能使用硬件描述語言對其進行編程。但是,已經有科技公司和研究機構開發(fā)了更加容易使用的語言,比如Impulse Accelerated Tech-nologies Inc開發(fā)的C-to-FPGA編譯器,使得FPGA更加契合用戶的使用;耶魯的E-Lab開發(fā)了Lua腳本語言等,這些工具在一定程度上縮短了用戶的開發(fā)時限,使研究更加簡單易行。
4深度學習云平臺
盡管高性能加速技術發(fā)展迅速,GPU也變得越來越便宜,降低了深度學習的門檻,但是對于個人和小微用戶來說,搭建自己的深度學習硬件環(huán)境存在一定困難。這是因為,一方面用戶需要對硬件非常了解;另一方面,隨著數據量的不斷增加,搭建的硬件平臺容量不足,擴展能力有限;還有就是成本因素,購買并維護深度學習的硬件環(huán)境是一筆不低的開銷。有鑒如此,深度學習云平臺應運而生。云平臺很好地解決了硬件的可拓展性問題,用戶可以按需分配硬件資源,一切都在“云”上運行。
目前,各大科技巨頭都相繼推出了自己的深度學習云平臺,為研究者和數據科學家提供在線的高性能云計算服務。國內的深度學習云平臺包括百度的百度深度學習,騰訊的DI-X深度學習平臺,阿里巴巴的阿里云等;國外的有Google的基于Tensor-Flow的Google Cloud Machine Learning平臺,亞馬遜的Amazon Web Services(AWS)等。每個平臺都有自己特色,用戶可以根據自己的需要去選擇相應平臺。
百度深度學習是一款面向海量數據的深度學習平臺,基于PaddlePaddle/TensorFlow開源計算框架,支持GPU運算,依托百度云分布技術,為深度學習技術的研發(fā)和應用提供可靠性高、擴展靈活的云端托管服務。通過百度深度學習平臺,可以輕松訓練神經網絡,實現(xiàn)情感分析、機器翻譯、圖像識別等,也可以利用百度云的存儲和虛擬化產品直接將模型部署到應用環(huán)境。
5結束語
深度學習已然成為人工智能的代名詞,越來越多的科研人員和機構都紛紛投入到深度學習的研究當中。盡管深度學習的發(fā)展歷史很短,但深度學習編程框架已有多種,研究人員可以根據需要選擇合適的深度學習開發(fā)平臺。由于深度學習層數很多,計算任務多數基于“計算圖”完成,計算量巨大,因此需要硬件加速提高效率,以滿足用戶要求。人工智能正經歷著歷史上最迅猛的發(fā)展時期,可以預見,隨著深度學習理論和計算機技術的發(fā)展,未來高度智能化的人工智能產品將會遍布在人類生活的方方面面,人工智能正在改變著世界。endprint