來(lái)源:人民郵電報(bào) 時(shí)間:2018-09-18 10:58:05 作者:
開(kāi)源框架github排名
前世:深度學(xué)習(xí)異軍突起
一切還要從人工智能說(shuō)起。
人工智能的興起,離不開(kāi)機(jī)器學(xué)習(xí)。機(jī)器學(xué)習(xí)是實(shí)現(xiàn)人工智能的途徑,賦予非生物體一定思考和學(xué)習(xí)能力的方式與手段。機(jī)器學(xué)習(xí)現(xiàn)階段最熱門(mén)最有效的方法就是深度學(xué)習(xí)算法。
在深度學(xué)習(xí)興起之前,機(jī)器學(xué)習(xí)的主要方法是以做特征工程為主流的統(tǒng)計(jì)學(xué)算法,即通過(guò)參數(shù)調(diào)節(jié)不斷提取優(yōu)化特征。此類(lèi)方法的一大弊端就是對(duì)于語(yǔ)音視頻等多維度信號(hào),很難進(jìn)行特征提取。通過(guò)深度學(xué)習(xí),在神經(jīng)網(wǎng)絡(luò)的每一層,計(jì)算機(jī)都可自動(dòng)學(xué)習(xí)出特征,從而解決了多維度信號(hào)特征提取困難的問(wèn)題。
為了實(shí)現(xiàn)深度學(xué)習(xí)中的神經(jīng)網(wǎng)絡(luò),深度學(xué)習(xí)框架工具應(yīng)運(yùn)而生。研究人員和開(kāi)發(fā)者可以借助其更方便、快速地搭建自己的神經(jīng)網(wǎng)絡(luò),訓(xùn)練和驗(yàn)證網(wǎng)絡(luò)的學(xué)習(xí)能力。由于框架是對(duì)底層語(yǔ)言和重要算法模型的封裝,使用者可省去大量工程開(kāi)發(fā)精力,投入算法、網(wǎng)絡(luò)和模型問(wèn)題的研究。
今生:框架市場(chǎng)百家爭(zhēng)鳴
縱觀(guān)當(dāng)今深度學(xué)習(xí)框架市場(chǎng),可謂是百家爭(zhēng)鳴。各大巨頭紛紛意識(shí)到通過(guò)開(kāi)源技術(shù)建立產(chǎn)業(yè)生態(tài)是搶占產(chǎn)業(yè)制高點(diǎn)的重要手段,爭(zhēng)相推出了自家的框架。
按照框架面世的大概時(shí)間排列,其出現(xiàn)的先后順序如下:Theano(2012年以前)、Caffe(2013年底)、Torch(2014年)、DeepLearning4J(2014年)、TensorFlow(2015年)、Keras(2015年)、Neon(2015年)、Chainer(2015年)、PaddlePaddle(2016年)、PyTorch(2017年初)、Caffe2(2017年)。
根據(jù)github上的星級(jí),目前市場(chǎng)上的開(kāi)源框架可大致按下表排序:
國(guó)內(nèi)的互聯(lián)網(wǎng)企業(yè)也推出了自己的框架,如百度的PaddlePaddle、小米的MACE、騰訊的ncnn等。但由于篇幅限制,本文僅對(duì)排名前三的框架以及框架鼻祖Theano以及剛剛崛起頗具潛力的新生代框架Pytorch予以介紹。
TensorFlow由谷歌大腦團(tuán)隊(duì)開(kāi)發(fā),其特點(diǎn)是使用數(shù)據(jù)流圖進(jìn)行數(shù)值計(jì)算。圖中的節(jié)點(diǎn)表示數(shù)學(xué)運(yùn)算,線(xiàn)表示它們之間通信的多維數(shù)據(jù)數(shù)組即張量。數(shù)據(jù)流圖用“結(jié)點(diǎn)”和“線(xiàn)”的有向圖來(lái)描述數(shù)學(xué)計(jì)算。這些數(shù)據(jù)“線(xiàn)”可以輸運(yùn)大小可動(dòng)態(tài)調(diào)整的“張量”。張量從圖中流過(guò)的直觀(guān)圖像是這個(gè)工具取名為“TensorFlow”的原因。TensorFlow是目前使用最廣的深度學(xué)習(xí)框架,但是卻非常底層,使用TensorFlow需要編寫(xiě)大量的代碼。
Caffe支持視覺(jué)領(lǐng)域的算法框架,對(duì)基于深度卷積神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)框架支持效果很好,可以方便地進(jìn)行CNN模型的訓(xùn)練和測(cè)試。其代碼易懂、高效、上手簡(jiǎn)單,實(shí)現(xiàn)基礎(chǔ)算法方便快捷,作為快速開(kāi)發(fā)和工程應(yīng)用非常適合;劣勢(shì)是開(kāi)發(fā)新算法不是特別靈活,需要使用C++和CUDA編程,安裝過(guò)程也是比較費(fèi)事耗時(shí)的龐大工程。因此,我們建議可以用Keras進(jìn)行實(shí)驗(yàn)和測(cè)試,然后遷移到Caffe中進(jìn)行生產(chǎn)?;贑affe,F(xiàn)acebook又推出了Caffe2,能夠支持大規(guī)模分布式計(jì)算和移動(dòng)部署。未來(lái)Caffe2有望完全取代Caffe。
Keras的句法相當(dāng)明晰,文檔比較全面,而且支持受眾度較為廣泛的Python語(yǔ)言;其使用體驗(yàn)很友善,能較為直觀(guān)地了解指令、函數(shù)和每個(gè)模塊之間的鏈接方式。Keras是一個(gè)非常高層的庫(kù),可以工作在Theano和TensorFlow之上,你只需幾行代碼就能構(gòu)建一個(gè)神經(jīng)網(wǎng)絡(luò),實(shí)現(xiàn)相同功能時(shí)所需的代碼量遠(yuǎn)少于TensorFlow。
Theano是歷史上第一款深度學(xué)習(xí)框架,開(kāi)創(chuàng)了深度學(xué)習(xí)的革命化先河。和TensorFlow類(lèi)似,Theano是一個(gè)比較低層的庫(kù)。也因此它并不適合深度學(xué)習(xí),而更適合數(shù)值計(jì)算優(yōu)化。它支持自動(dòng)的函數(shù)梯度計(jì)算,帶有Python接口并集成了Numpy,這使得它從一開(kāi)始就成為通用深度學(xué)習(xí)領(lǐng)域最常使用的庫(kù)之一。今天,Theano依然效果良好,但由于它不支持多GPU和水平擴(kuò)展,在TensorFlow的浪潮下,Theano倍感吃力。2017年9月,Theano開(kāi)發(fā)團(tuán)隊(duì)宣布將停止項(xiàng)目所有維護(hù)和更新,從此Theano正式退出歷史舞臺(tái)。但其深遠(yuǎn)的影響力和多年的積累,依然擁有相當(dāng)一部分使用者。
Torch是一個(gè)很著名的框架,它是Facebook的人工智能研究所用的框架,DeepMind在被谷歌收購(gòu)前也使用的是它。Torch的編程語(yǔ)言是Lua,在深度學(xué)習(xí)編程語(yǔ)言絕大部分以Python實(shí)現(xiàn)為主的形勢(shì)下,一個(gè)以L(fǎng)ua為編程語(yǔ)言的框架的最大劣勢(shì)莫過(guò)于此。
為了破解這個(gè)局面,F(xiàn)acebook人工智能研究院推出了Pytorch,一個(gè)python優(yōu)先的深度學(xué)習(xí)框架。2017年1月,F(xiàn)acebook將Python版本的Torch庫(kù)開(kāi)源。除了解決編程語(yǔ)言的問(wèn)題,PyTorch還有一個(gè)優(yōu)勢(shì),它提供動(dòng)態(tài)計(jì)算圖。這意味著圖是在運(yùn)行時(shí)生成的,允許處理可變長(zhǎng)度的輸入和輸出,在使用 RNN 時(shí)非常有用,有助于構(gòu)建神經(jīng)網(wǎng)絡(luò)計(jì)算圖,而無(wú)需手動(dòng)操縱張量和參數(shù)。PyTorch目前已經(jīng)成為深度學(xué)習(xí)框架市場(chǎng)上最具競(jìng)爭(zhēng)力的一款軟件。
來(lái)世:降低框架適配成本是關(guān)鍵
看到這兒,你或許有些頭大:這么多深度學(xué)習(xí)框架該如何選擇?這也是業(yè)界很多開(kāi)發(fā)者的痛點(diǎn):各種框架如雨后春筍般崛起,碎片化程度堪比如今的安卓終端系統(tǒng)。而碎片化問(wèn)題嚴(yán)重影響了使用者的開(kāi)發(fā)效率,提高了適配成本,造成了很多不必要的時(shí)間和精力耗費(fèi)。
其實(shí),框架的本質(zhì)都是基于基礎(chǔ)語(yǔ)言編寫(xiě)的易執(zhí)行后端,以及易解釋高級(jí)語(yǔ)言編寫(xiě)的前端,前后端使用計(jì)算圖作為橋梁。未來(lái),一種基于將框架前后端模塊分離剝開(kāi)的模式,將是深度學(xué)習(xí)框架的發(fā)展方向。前后端的分離使得開(kāi)發(fā)者可以使用輕量級(jí)的前端適配不同的框架,而不修改繁重的后端結(jié)構(gòu),提高了研發(fā)效率,也降低了適配成本。
框架平臺(tái)占據(jù)人工智能產(chǎn)業(yè)生態(tài)的核心地位,具有統(tǒng)領(lǐng)產(chǎn)業(yè)進(jìn)步節(jié)奏、帶動(dòng)終端場(chǎng)景與云端服務(wù)協(xié)同發(fā)展的重要作用,處于承上啟下的關(guān)鍵地位,其意義媲美移動(dòng)互聯(lián)網(wǎng)操作系統(tǒng)。隨著深度學(xué)習(xí)框架的不斷演進(jìn),以深度學(xué)習(xí)為代表的人工智能必將大放異彩,成為改變?nèi)祟?lèi)歷史,推動(dòng)智能化社會(huì)發(fā)展的關(guān)鍵技術(shù)。
(中國(guó)信息通信研究院泰爾終端實(shí)驗(yàn)室 曾晨曦 段虎才)
責(zé)任編輯:方茶云