人工智慧深度學習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用在學習新的演算法上比較好
關注主頁一起學習交流