作者 | 弗拉德
來源 | 弗拉德(公眾號:fulade_me)
人工智能
人工智能是計算機科學的一個分支,它企圖了解智能的實質,並生產出一種新的能以人類智能相似的方式做出反應的智能機器,該領域的研究包括機器人、語言識別、圖像識別、自然語言處理和專家系統等。人工智能從誕生以來,理論和技術日益成熟,應用領域也不斷擴大,可以設想,未來人工智能帶來的科技產品,將會是人類智慧的“容器”。人工智能可以對人的意識、思維的信息過程的模擬。人工智能不是人的智能,但能像人那樣思考、也可能超過人的智能。那讓我們來看一下都有哪些人工智能開發的框架。
Theano
早在2007加拿大的蒙特利爾大學就開始了Theano的開發,它最初是為了用於學術研究而設計的。雖然出身於學術界,但是在過去很長一段時間里面,Theano都是深度學習開發與研究的行業標准。
Theano其實是一個比較底層的庫,它比較適合數值計算和優化。支持自動函數梯度計算,支持Python接口,並且集成了Numpy。它並不只是專門用來做深度學習的,可以說Theano是Python的一個數值計算庫。它也有缺點,就是不支持GPU和水平擴展。
由於TensorFlow在谷歌的支持下強勢崛起,Theano可以說是日漸式微,這里面的有個標志性的事件就是Theano創始人之一Ian Goodfellow,他放棄了Theano轉去Google開發TensorFlow。
Caffe
Caffe是由就讀於加州大學伯克利分校的中國籍博士生賈揚清在2013年創建的,是一個老牌框架。
賈揚清本科和碩士都是清華畢業,他對兩個深度學習的框架都有貢獻,一個是TensorFlow,他以前是在Google工作。在2016年賈揚清加入到Facebook,開始了Caffe框架的開發。
Caffe的全稱是"Convolution Architecture For Feature Extraction",意思是能用於特征提取的卷積架構,它的設計初衷其實是為了針對計算機視覺。缺點是靈活性不足的問題,為了做模型調整會用到C++和CUDA。
在2017年4月,Facebook發布了Caffe2,這標志着Caffe有了一個很大的發展。我們可以把它看作是對Caffe更細粒度的重構,在實用的基礎上增加了擴展性和靈活性。隨着時間的發展,Facebook最后把Caffe2合並到了PyTorch上面了。
PyTorch
說PyTorch之前,我們得先說一說Torch。Torch是一個非主流的深度學習框架,它是基於Lua語言的。而現在主流的深度學習框架使用的語言基本都是Python,所以用Torch就會顯得很非主流。但是Facebook的人工智能研究所使用的就是Torch,Torch非常適用於卷積神經網絡,同時它的靈活度也很高。
有一個特點就是:它是命令式的,支持動態模型。大多數的機器學習框架都是支持靜態圖模型,也就是說在進行調試時,我們需要先把模型定義好,然后再進行運行和計算。而Torch它的靈活度更高,它可以在運行的過程中更改圖模型,這就叫做支持動態的圖模型。在2017年初,Facebook在Torch的基礎上,發布了一個全新的機器學習框架叫PyTorch。PyTorch可以說是Torch的Python版,增加了很多特性。
2018年4月Facebook宣布將Caffe2並入PyTorch,所以說Caffe2就以PyTorch的形式存在。
MXNet
MXNet是亞馬遜它支持的深度學習框架。MXNet嘗試把兩種模式無縫的結合起來,一種是在命令式編程上提供張量運算,一種是在聲明式的編程支持符號表達式。這樣用戶就可以自由的混合來實現他們自己的想法。也就是說,它結合了靜態定義計算圖和動態定義計算圖的優勢。另外MXNet支持的語言種類也比較多,除了常見的想Python還有C++,關鍵的他對R語音也支持的很好,對Go也有支持。但是它的學習曲線會比較高。
CNTK
CNTK又名:Microsoft Cognitive Toolkit。在2016年的微軟宣布在給github上開源CNTK(computational Network ToolKit)。CNTK對語音和圖像支持特別好,語音識別和圖像識別也比較快。它還有着更為強大的可擴展性,開發者可以使用多台計算機去實現GPU的擴展,從而能夠更加靈活地應對大規模的實驗。當然它也支持支持C#語言。
Keras
Keras是一個高級封裝的庫,同樣也非常的受歡迎。它可以跟Theano、CNTK、TensorFlow結合起來工作。它相當於架設在這些框架上的更高一層,因為更高一層,這使得它的使用非常的簡單。Keras強調的就是極簡主義,你只需要幾行代碼就能構建一個神經網絡。同樣它號稱為支持快速實驗而生,能夠把你的想法的迅速轉換成為結果。它的語法的也比較明細,文檔的也提供的非常好。當然了,它也是支持Python的。
DL4J
DJF4是一個基於JVM,聚焦行業應用,而且提供商業支持的分布式的深度學習框架。它的宗旨就是:在合理的時間里去解決各類涉及大量數據的問題。
從它的名字上不難看出,它其實是 Deep Learning For Java 的縮寫,它對Java的支持是它最大的特點。它對使用Java作為開發語言的開發者來說非常友好,它可以與Hadoop和Spark很好的結合起來,也可以使用任意數量的GPU或者CPU運行。
Chainer
Chainer的是一個專門為高效研究和開發深度學習算法而設計的開源框架,它也是基於Python的深度學習框架。Chanier在"實時"使構件計算圖,"邊運行邊定義"的方法使得構建深度學習網絡的變得很靈活。也就是說,Chanier是支持動態圖定義的。那這種方法可以讓用戶在每次迭代的時候可以根據條件去更改計算圖,也很容易使用標准的調試器和分析器來調試和重構。
PaddlePaddle
PaddlePaddle是百度旗下的深度學習開源平台,它支持並行分布式深度學習。在2016年9月1日百度世界大會上,當時百度的首席科學家吳恩達宣布:百度的深度學習平台將對外開放,命名為PaddlePaddle。吳恩達認為PaddlePaddle比一個PaddleP要更容易讓人記住,事實上也是,PaddlePaddle 比 Paddle更容易上口。百度的資深科學家,PaddlePaddle的研發負責人徐偉介紹:在PaddlePaddle的幫助下,深度學習模型的設計如同編寫偽代碼一樣容易,工程師只需要關注模型的高層結構,而無需擔心任何瑣碎的底層問題。
TensorFlow
TensorFlowA machine learning platform for everyone to solve real problems。對每個人來解決現實問題的機器學習平台,這也是TensorFlow存在的宗旨。它不但在上層支持神經網絡,它還很全面的支持別的機器學習的算法,像K-Means,決策樹,向量積等等。它對語言的支持也很多,Python、C++、Java。在硬件層面,它也可以利用CPU,GPU進行計算。
另外的谷歌還出了專門的處理器,叫TPU,也就是Tensor處理器,另外它也支持在移動端使用。還提供了一個叫TensorBoard的可視化工具。這個工具非常強大,它可以基於運行的一些日志和文件,可視化得把模型訓練和結果展現出來。
TensorFlow提供了不同層次的接口,從低層到高層。越低的層次越靈活,越容易去控制,越高層次是越容易使用。
TensorFlow支持的語言也非常多:Go、Python、C++、Java、Swift、R語音、C#、js等。
還有運行在Web端的TensorFlow.js,我們可以使用Javascript在網頁端進行機器學習的訓練和使用。在移動端同樣提供支持的是TensorFlowLite,我們可以把在服務器端訓練好的模型下發到移動端(Android、iOS、樹莓派等),在移動端通過TensorFlowLite來使用。