思考:開發者如何挑選最合適的機器學習框架?

dicksonjyl560101發表於2018-07-26

http://blog.itpub.net/31077337/viewspace-2158437/


如今,各種各樣的機器學習工具活躍在開源社群,這些工具有助於減輕配置和測試AI相關工作的負載。但是,如何評估並選擇適合自己的工具成為了開發者必須認真思考的問題,有些人可能希望在訓練新的AI演算法時專注於易用性,而其他人可能會優先考慮引數最佳化和生產部署,不同的框架在不同的領域又具備著不同的優劣勢,這讓開發者難以抉擇。


現在比較流行的機器學習框架有TensorFlow、MXNet、Scikit-learn、Keras和PyTorch,這些通常被資料科學家用於訓練各種用例演算法,比如預測、影像識別和推薦。因為資料科學家往往更喜歡能夠輕鬆構建演算法的機器學習框架,但這只是整個人工智慧開發流程中很小的部分,企業通常會花更多時間在一些輔助工作上,比如準備資料、將演算法轉移到生產環境、配置機器學習引數、排除研究環境和生產環境模型之間的差異。


選擇機器學習框架之前需要考慮的三個問題!

根據Forrester Research 的AI方向副總裁兼首席分析師Mike Gualtieri的說法,研發人員在選擇機器學習框架時需要思考如下三個問題:

1、該框架用於深度學習還是經典的機器學習?

2、在開發AI模型時,首選的程式語言是什麼?

3、開發過程使用哪些硬體、軟體和雲服務進行擴充套件?

選擇深度學習還是經典的機器學習?

深度學習是機器學習中的一個分支,在演算法層面,經典的機器學習演算法未必不能實現深度學習的功能,很多機器學習演算法在應用程式中都可以完美的完成各項深度學習任務,雖然有些框架在某種程度上支援這兩種演算法,但機器學習框架往往表現更好。

從差異性的角度來說,深度學習框架更加偏重神經網路方向,尤以TensorFlow最為知名,其他在深度學習中表現良好的機器學習框架還有MXNet和Caffe,這些框架支援編寫用於影像標記和高階自然語言處理的演算法以及其他應用程式。

深度學習和機器學習框架最大的不同在於所處理的資料結構有所差異,深度學習框架可以被訓練用於處理結構化資料,但是機器學習框架不適用於非結構化資料。在選擇框架前,你一定要了解企業的資料型別以及要構建的應用程式型別。

經典的機器學習演算法適用於各種最佳化和統計分析,最受歡迎的機器學習框架是Scikit-learn。Scikit-learn適合在Python中編寫,但Comprehensive R Archive Network(也稱為CRAN)可能更適合在R中編寫應用程式。其他流行的軟體包有Apache Spark MLlib和H2O.ai等,H2O.ai有一套開源機器學習演算法並且執行良好。

開發AI模型,首選的程式語言是什麼?

就程式語言而言,Python和R是機器學習開發者普遍的選擇。當然,你可以使用其他語言,比如C、Java和Scala。Gualtieri表示,目前的大多數機器學習應用都是用Python編寫的,因為R語言是由統計學家設計的,並不是最優雅的程式語言。相比較而言,Python是一種更加現代化的程式語言,並且Caffe和TensorFlow也是開發機器學習模型的Python編碼器的主流選擇。

測試環境與實際生產環境的差異

在開發的早期階段,資料科學家可能會針對不同的資料集選擇模型或演算法,但是,如果你決定對生產環境中的所有資料集執行同一個模型,那麼你可以檢視一些支援分散式體系結構的框架,比如Apache Spark的MLlib或H20,因為可擴充套件性是一個很實際且很重要的問題。

在深度學習中有很多類似的場景,比如,AI開發人員想要對影像進行標註,他們可以下載TensorFlow並在桌面執行以訓練演算法和試驗不同的模型,一旦他們整理出了一個可行的模型,往往會迫不及待得丟到整個生產環境,但這個模型不一定適合整個生產開發環境,因為測試環境與其有著很大差異,並且也需要考慮硬體條件和雲服務支援。

在AI演算法的訓練階段,可擴充套件性是指可以分析的資料量以及資料分析速度,使用分散式演算法和分散式處理可以顯著提高效能。在實際部署階段,可擴充套件性更多得與可立即命中模型的併發使用者或應用程式的數量有關。很多AI專案出現問題的原因在於訓練環境和生產環境千差萬別,資料科學家卻只使用一套工具。

引數最佳化

選擇機器學習框架的另一個關鍵因素是引數最佳化,每種演算法都採用不同的方法來分析訓練資料並將其學習的內容應用於新的示例。每個引數都可以透過旋鈕和刻度盤的不同組合來調節,透過調整不同變數的權重和異常值以列舉一些可能的組合。在選擇機器學習框架時,重要的是考慮這些引數是希望自動調整還是手動調整,需要調整的旋鈕和錶盤越多,找到合適的組合就越困難。

機器學習框架是否是解決特定問題的最佳選擇,這是企業要考慮的最後一個問題,我們可以將機器學習開發工具分為三類:notebook-based, multi-modal和automated。

  • notebook-based - 使用基於Python的Jupyter等工具,提供對機器學習模型定製的所有方面的複雜控制,機器學習框架使用此概念來減少自定義的繁重工作。

  • multi-modal(多模式)本質上是一種將資料科學與專用工具(如Salesforce Einstein)相結合的低質量程式碼編寫方式,使開發人員能夠將核心AI模型擴充套件到特定用例。

  • Automated(自動化方法)使用工具自動為給定的輸入資料集嘗試各種可能的演算法,直到確定特定用例的最佳備選者。這些工具包括Google AutoML,DataRobot和H20.ai等產品。

自動化確實很有吸引力,因為資料科學家的技術水平未必很高,尤其是現在社會整體人才稀缺的情況下,並且透過自動化工具的支援,統計學家有時也可以完成一些資料科學家的工作,當然,不要期待這些自動化工具完全替代人工。

開源機器學習框架提供了豐富的社群支援

Teradata營銷副總裁Chad Meley表示,儘管供應商正在努力開發機器學習工具和框架,但開源框架將繼續在該領域佔據主導地位,因為這些框架集合了世界各地相關領域專家的智慧。

很多比較大的雲供應商也在積極提供自己的框架,比如谷歌、亞馬遜等,根據企業IT戰略展示,CIO可能更希望與特定的雲供應商保持一致,或者強調跨多個雲和本地部署的可移植性。目前,谷歌支援的TensorFlow框架在市場中擁有最高份額,緊隨其後的是Caffe、Keras、MXNet、CNTK和PyTorch。

此外,Spark提供的MLlib也是一個不錯的選擇,它還提供了SQL、圖形處理和流處理等功能。Spark本身易於使用且擁有龐大的使用者群體,這確保了技術的穩步提升,並且生命力十分頑強,可以確保在未來的很長一段時間內依舊存活。

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

相關文章