如何進行機器學習框架選擇

劉美利發表於2018-08-17

人工智慧正值發展熱頭,為了開發和部署人工智慧應用程式,湧現出了很多機器學習框架。這些框架直接跨越開發、測試、最佳化和生產等流程,為開發人員提供了一個很好的研發捷徑。有的框架注重自身的可用性,有的框架側重於生產部署和引數最佳化,它們都有各自的優缺點,這也增加了研發人員選擇的難度。

目前,處於最佳框架列表榜首的有:MXNET、Keras、PyTorch、Tensorflow。這些機器學習框架都是資料科學家最常用的,一般用於影像識別、預測和推薦。資料科學家們一般會優先考慮那些能夠為他們簡化演算法過程的框架。公司一般傾向於將大量的時間花費在輔助工序上,例如:資料準備、轉移演算法到生產中、確定機器學習標準等。想要選擇正確的機器學習框架,你還需針對具體的問題而決定,例如:

  1. 是用於深度學習還是機器學習?

  2. 什麼樣的硬體、軟體或者雲服務適合擴充套件?

  3. 開發人工智慧應用的APT程式語言是什麼?

對於機器學習的最佳程式語言,最受歡迎的應該是Python和R。當然,僅次其後的Java、C++和Scala也是不錯的選擇。如果說最佳,Python必須是莫屬。原因很簡單,因為R是統計學家設計的語言,資料結構簡單。而 Python是計算機學家設計的,包含更豐富的資料結構,是一種更具實用性的程式語言。

深度學習和機器學習

深度學習和機器學習看似都屬於人工智慧領域,實則二者不在一個層次上。通俗來說,機器學習是一種實現人工智慧的方法,而深度學習是實現機器學習的技術。 

深度學習本身並不是一種獨立的學習方法,其本身也會用到有監督和無監督的學習方法來訓練深度神經網路。目前深度學習發展火熱,但機器學習也不甘落後,雖然基於一種方法層面,但發展速度也不減深度學習。

機器學習框架和深度學習框架之間有區別。本質上,機器學習框架涵蓋用於分類,迴歸,聚類,異常檢測和資料準備的各種學習方法。深度學習框架涵蓋具有許多隱藏層的各種神經網路拓撲。這些層包括模式識別的多步驟過程。網路中的層越多,可以提取用於聚類和分類的特徵越複雜。

深度學習框架有:Caffe,CNTK,DeepLearning4j,Keras,MXNet、TensorFlow。深度學習框架專用於神經網路編碼,最佳的框架選擇推薦是TensorFlow。TensorFlow是可移植的機器學習和神經網路庫,有很強的執行性和伸縮性,但學習難度大。TensorFlow擁有各種各樣的模型和演算法,它們對深度學習非常重視,並且在具有GPU(用於訓練)或Google TPU(用於生產規模預測)的硬體上具有出色的效能。

機器學習框架有:Scikit-learning、Spark MLlib。機器學習的最佳框架選擇是Scikit-learn。SciKit-learn 是老牌的開源 Python 演算法框架,它與 TensorFlow 的主要區別是:TensorFlow 更底層。而 SciKit-learn 提供了執行機器學習演算法的模組化方案,很多演算法模型直接就能用。Scikit-learn是一個強大的、成熟的機器學習Python庫,包含各種各樣成熟的演算法和整合圖。

另外還有一種跨越這兩大類別的“長老級”框架:Theano。當然具體的框架選擇還是要基於所開發的資料型別和應用程式型別。

小專案vs大專案

在開發初期,AI應用程式開發人員會嘗試著執行幾個任務來確定哪一部分在小組資料上執行的最好。當研發者處理更大專案的大資料集時,框架的選擇是不一樣的。支援分散式體系結構的框架是一個很好的選擇,例如H2O或Apache Sparks MLlib。大型專案的伸縮性是一個大問題,對於深度學習來說也是如此。比如,AI開發人員想要進行圖示註冊,他們可以下載TensorFlow,並在桌面上執行同樣的演算法嘗試不同的工具。只要他們明確了哪種方法最可行,便可以嘗試大資料集。

開源有助於豐富社群

人工智慧技術正在進行當中,開源框架是一個顯而易見的事實。客戶端通常喜歡用開源的、可跨平臺的API。開發人員社群對開源框架提供了很大的支援。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31542119/viewspace-2200317/,如需轉載,請註明出處,否則將追究法律責任。

相關文章