深度學習框架的前世今生

1 前世:深度學習異軍突起

一切還要從人工智能說起。

人工智能的興起,離不開機器學習。機器學習是實現人工智能的途徑,賦予非生物體一定思考和學習能力的方式和手段。機器學習現階段最熱門最有效的方法就是深度學習算法。

在深度學習興起之前,機器學習的主要方法是以做特徵工程為主流的統計學算法,即通過參數調節不斷提取優化特徵。此類方法的一大弊端就是對於語音視頻等多維度信號,很難進行特徵提取。通過深度學習,在神經網絡的每一層,計算機都可自動學習出特徵,從而解決了多維度信號特徵提取困難的問題。

為了實現深度學習中的神經網絡,深度學習框架工具應運而生。研究人員和開發者可以藉助其更方便、快速地搭建自己的神經網絡,訓練和驗證網絡的學習能力。由於框架是對底層語言和重要算法模型的封裝,使用者可省去大量工程開發精力,投入算法、網絡和模型問題的研究。

2 今生:各大巨頭不甘示弱 框架市場百家爭鳴

縱觀當今深度學習框架市場,可謂是百家爭鳴。各大巨頭紛紛意識到通過開源技術建立產業生態是搶佔產業制高點的重要手段,爭相推出了自家的框架。

按照框架面世的大概時間排列,其出現的先後順序如下:Theano(2012年以前)、Caffe(2013年底)、Torch(2014年)、DeepLearning4J(2014年)、TensorFlow(2015年)、Keras(2015年)、Neon(2015年)、Chainer(2015年)、PaddlePaddle(2016年)、PyTorch(2017年初)、Caffe2(2017年)。

根據github上的星級,目前市場上的開源框架可大致按下表排序:

表1 開源框架github排名

深度學習框架的前世今生

國內的互聯網企業也推出了自己的框架,如百度的PaddlePaddle、小米的MACE、騰訊的ncnn等。但由於篇幅限制,本文僅對排名前三的框架以及框架鼻祖Theano以及剛剛崛起頗具潛力的新生代框架Pytorch予以介紹。

● Tensorflow

深度學習框架的前世今生

TensorFlow由谷歌大腦團隊開發,其特點是使用數據流圖進行數值計算。圖中的節點表示數學運算,線表示它們之間通信的多維數據數組即張量。數據流圖用“結點”和“線”的有向圖來描述數學計算。這些數據“線”可以輸運大小可動態調整的“張量”。張量從圖中流過的直觀圖像是這個工具取名為“Tensorflow”的原因。TensorFlow是目前使用最廣的深度學習框架,但是卻非常底層,使用 TensorFlow 需要編寫大量的代碼。

● Caffe

深度學習框架的前世今生

Caffe支持視覺領域的算法框架,對基於深度卷積神經網絡的學習框架支持效果很好,可以方便地進行CNN模型的訓練和測試。其代碼易懂、高效、上手簡單,實現基礎算法方便快捷,作為快速開發和工程應用非常適合;劣勢是開發新算法不是特別靈活,需要使用 C++ 和 CUDA 編程,安裝過程也是比較費事耗時的龐大工程。因此,我們建議可以用 Keras 進行實驗和測試,然後遷移到 Caffe 中進行生產。

基於Caffe, Facebook又推出了Caffe2,能夠支持大規模分佈式計算和移動部署。未來Caffe2有望完全取代Caffe。

● Keras

Keras的句法相當明晰,文檔比較全面,而且支持受眾度較為廣泛的Python語言;其使用體驗很友善,能較為直觀地瞭解指令、函數和每個模塊之間的鏈接方式。 Keras 是一個非常高層的庫,可以工作在 Theano 和 TensorFlow之上,你只需幾行代碼就能構建一個神經網絡,實現相同功能時所需的代碼量遠少於TensorFlow。

● Theano

Theano是歷史上第一款深度學習框架,開創了深度學習的革命化先河。和 TensorFlow 類似,Theano 是一個比較低層的庫。也因此它並不適合深度學習,而更適合數值計算優化。它支持自動的函數梯度計算,帶有 Python 接口並集成了 Numpy,這使得它從一開始就成為了通用深度學習領域最常使用的庫之一。 今天,Theano 依然效果良好,但由於它不支持多 GPU 和水平擴展,在 TensorFlow 的浪潮下,Theano 倍感吃力。2017年9月,Theano開發團隊宣佈將停止項目所有維護和更新,從此Theano正式退出歷史舞臺。但其深遠的影響力和多年的積累,依然擁有相當一部分使用者。

● Torch & PyTorch

深度學習框架的前世今生

Torch 是一個很著名的框架,它是Facebook的人工智能研究所用的框架,DeepMind在被谷歌收購前使用的也是它。Torch的編程語言是Lua,在深度學習編程語言絕大部分以 Python 實現為主的形勢下,一個以 Lua 為編程語言的框架的最大劣勢莫過於此。

為了破解這個局面,Facebook人工智能研究院推出了Pytorch,一個python優先的深度學習框架。2017年1月,Facebook 將 Python 版本的 Torch 庫開源。除了解決編程語言的問題,PyTorch還有一個優勢,它提供動態計算圖。這意味著圖是在運行時生成的,允許處理可變長度的輸入和輸出,在使用 RNN 時非常有用,有助於構建神經網絡計算圖,而無需手動操縱張量和參數。PyTorch目前已經成為深度學習框架市場上最具競爭力的一款軟件。

3 來世:降低框架適配成本是破局關鍵

看到這兒,你或許有些頭大:這麼多深度學習框架該如何選擇?這也是業界很多開發者的痛點:各種框架如雨後春筍般崛起,碎片化程度堪比如今的安卓終端系統。而碎片化問題嚴重影響了使用者的開發效率,提高了適配成本,造成了很多不必要的時間和精力耗費。

其實,框架的本質都是基於基礎語言編寫的易執行後端,以及易解釋高級語言編寫的前端,前後端使用計算圖作為橋樑。未來,一種基於將框架前後端模塊分離剝開的模式,將是深度學習框架的發展方向。前後端的分離使得開發者可以使用輕量級的前端適配不同的框架,而不修改繁重的後端結構,提高了研發效率,也降低了適配成本。

框架平臺佔據人工智能產業生態的核心地位,具有統領產業進步節奏、帶動終端場景與雲端服務協同發展的重要作用,處於承上啟下的關鍵地位,其意義媲美移動互聯網操作系統。隨著深度學習框架的不斷演進,以深度學習為代表的人工智能必將大放異彩,成為改變人類歷史,推動智能化社會發展的關鍵技術。

曾晨曦,都靈理工大學通信工程專業碩士,現就職於中國信息通信研究院泰爾終端實驗室,從事移動互聯網和人工智能研究,主要研究方向為計算機視覺相關的各類神經網絡算法。

聯繫方式:[email protected]

段虎才,中科院信號與信息系統博士,現就職於中國信息通信研究院泰爾終端實驗室,從事移動互聯網軟件開發工作,任移動互聯網與軟件部技術總監。

聯繫方式:[email protected]


分享到:


相關文章: