人工智能深度學習Caffe框架介紹,優秀的深度學習架構
在深度學習領域,Caffe框架是人們無法繞過的一座山。這不僅是因為它無論在結構、性能上,還是在代碼質量上,都稱得上一款十分出色的開源框架。更重要的是,它將深度學習的每一個細節都原原本本地展現出來,大大降低了人們學習研究和開發的難度。
一、從Caffe的開發中了解到的用戶需求:
深度學習的框架總會不斷改變,Caffe也會有被新框架代替的一天。但是在開發Caffe的過程中,賈揚清發現大家喜歡的框架其實有着很多相似的地方,這些閃光點擁有很長的生命周期,發現並掌握人們這些共同偏好將為以后開發新的框架積累經驗。
Caffe之所以廣受歡迎可能是因為有以下的四個特點:
1、 穩定的模型架構
Caffe通過Protobuf來定義一個網絡的結構,而這個由Google開源的庫具有優秀的版本兼容性。隨着Caffe的框架源碼的不斷更新迭代,之前定義的網絡結構依然能兼容解析,模型仍然能正確加載運行。
2、較好的設備抽象
合理的設備抽象能夠精簡代碼,提高框架適用性。在這方面Caffe做了比較好的嘗試,模型的訓練和使用與不同的平台耦合比較低,只要平台能解析網絡結構並讀取二進制的模型參數,就能運行該模型。這樣大大拓展了框架的應用范圍,自然更加符合用戶的使用需求。
3、清晰的說明教程
如何讓首次接觸到框架的人通過說明教程就能最快地熟悉運用,這對於一個新面世的框架來說尤為重要。以Caffe為例,用戶只需要將官方文檔的例子跑一遍,基本就能清楚Caffe的操作過程和細節,這給它的廣泛傳播提供了最堅實的基礎。
4、開放的模型倉庫
目前Caffe還維護了一個Model Zoo, 許多論文的作者會將模型發布到這里,其它用戶可以利用這些材料輕松地將模型復現,還可以在github上參與開發討論,從而更深入地學習實踐。
二、現有深度學習框架的側重點:
1、人們的需求多種多樣,目前,還沒有任何一種深度學習的框架能夠滿足人們所有的需求。對於工業界而言,從業者看重的是框架的穩定性強、數據量大、速度快、容易進行數據整合等。
2、對於學術界來說,學者們更希望框架容易調試、靈活性要強、迭代要快。因此,比照現有深度學習框架的特點,Theano、Torch可能會更加適合學術界,而D4J等可能就要更適合工業界一些,至於Caffe、Tensorflow等為代表的框架則是介於二者之間。
三、對未來機器學習框架設計的一些思考:
1、使用計算圖 (computation graph)
Caffe框架在實現網絡的forward, backward, update時,是通過Solver, Net, Layer之間遞進地逐步回調對應的forward, backward, update來實現的,在加入並行化之后,為了用計算來覆蓋數據傳輸的時間,這些回調的運用會變得相對復雜。
因此,目前許多框架都在往computation graph的風格上偏移。這種基於computation graph的深度學習框架不僅在網絡的更新方面更加直接,而且在並行方面,無論是數據並行方式還是模型並行方式,都能做到接近線性的提速。大家未來也可以在這個方向做些嘗試。
2、高效方便地輸入數據
對於Caffe用戶而言,首要問題便是如何導入數據。尤其是在算法比較簡單時,保證數據輸入的高效性將成為制約模型的首要因素。之前進行的某個項目里,在8個GPU(Titan X)上訓練AlexNet,需要達到每秒鍾處理1600張圖片(3.14GB/s)的要求。甚至對於另外一些模型而言,還需要更多的吞吐量。如果數據接口沒有做好,是絕對無法達到這樣的要求的。
3、更快的速度
網絡結構實現需要在靈活性和速度上進行權衡,這種權衡可以體現在框架設計的粗細粒度上。例如一個Inception的結構,是做成像Caffe這樣通過各個層的累積來形成,還是直接由Conv2D, BiasAdd, Relu這樣的基本計算來直接構造一個Inception結構。這樣不同粗細粒度的構建方法體現了整個框架對速度或是靈活性的權衡。
另外,對於底層的實現,最好用硬件供應商提供的數值計算庫,比如CuDNN, MKL-DNN,Accelerate,Eigen,NNPack等。
4、 可移植性
要提升框架的實用價值,就必須提升其訓練出的模型的可移植性。換句話說,也就是要讓框架訓練出的模型具有平台無關性,包括了系統層面(windows、linux、android、iOS、OS X等)及硬件層面(CPU、GPU、FPGA、ARM等)。這就必須使得設計出的模型更加輕量。
-----------------------------------------
人工智能范疇及深度學習主流框架
工業機器人,家用機器人這些只是人工智能的一個細分應用而已。
圖像識別,語音識別,推薦算法,NLP自然語言,廣告算法,預測算法,數據挖掘,無人駕駛、醫療咨詢機器人、聊天機器人,這些都屬於人工智能的范疇。
人工智能現在用到的基礎算法是深度學習里面的神經網絡算法,具體應用場景有不同的專業算法
實際上很多細分領域的,差別還是很多的
機器人的對運動控制算法,圖像識別算法要求比較高
像alphaGo,推薦算法,語音識別這些就主要靠深度學習算法和大數據訓練了
深度學習的開源框架現在主流的有:caffeonspark(微軟), tensorflow(google),Theano,dl4j, Torch,Keras
caffeonspark用在視覺圖片識別上比較好,dl4j用在NLP上做類似問答搜索的比較多,tensorflow用在學習新的算法上比較好
可以看本人另外一篇博客:
人工智能范疇及深度學習主流框架,IBM Watson認知計算領域IntelligentBehavior介紹 - 流風,飄然的風 - 博客園
http://www.cnblogs.com/zdz8207/p/DeepLearning-framework-ibm-watson.html