新手入門機會來了 | 深度學習入門必備的13張小抄(附下載)

  • 2019 年 10 月 6 日
  • 筆記

機器學習領域的知識太多了,學習的工具包,命令、操作和公式都是數不勝數,讓「新軍」們理解記住太難了!所以,學生時代的一件利器派上用場了,那就是人見人愛的「小抄」,這可是個好東西。

比如說下面這些深度學習小抄,由GitHub用戶kailashahirwar從各處搜集而來:

TensorFlow

Keras

一圖看懂各種神經網路

NumPy

SciPy

Pandas

Scikit-learn

Matplotlib

數據可視化工具ggplot2

PySpark

全部小抄見GitHub:

https://github.com/kailashahirwar/cheatsheets-ai

在這篇文章中,你將會見識到各種機器學習工具。了解它們為什麼重要,以及可供選擇的工具類型。

為什麼要使用工具?

機器學習工具使得應用機器學習更快,更簡單,更有趣。

  • 更快:好工具可以自動化應用機器學習過程中的每一步。這意味著,從提出創意到得到結果的時間大大縮短。如果你從頭開始自己實現每一個功能,這花的時間要比選擇現有工具要長的多。
  • 更簡單:你可以花時間來選擇合適的工具,而不是研究、實現技術來完成任務。如果你自己實現,你必須對每一個過程都十分精通。這需要研究,資深經驗來理解技術,以及高水平的工程技能來確保有效執行。
  • 有趣:對於初學者得到良好結果的門檻低。你可以花費額外的時間來得到更好的結果,或者進行更多的項目實踐。如果不使用這些工具,你將會花費大部分時間來構建你自己的工具,而沒將時間集中在獲取結果上。

有目的地選擇工具

你不希望為學習、使用機器學習工具而學習、使用機器學習工具。必須有目的地使用工具。

機器學習工具可以讓你在機器學習項目中交付結果。當你試圖決定是否要學習新工具或是新功能的時候,問自己這麼一個問題:

這些工具如何幫助我在機器學習項目中交付結果?

機器學習工具不僅僅是機器學習演算法的實現。它們可能是,但在你解決機器學習問題的過程中,它們也可以為每一個過程提供幫助。

好工具 VS 強大工具

你想在你正在解決的問題上使用最好的工具。那麼如何區分好的機器學習工具與強大機器學習工具之間的區別呢?

  • 直觀的介面:強大的機器學習工具在應用機器學習過程的子任務上提供直觀的介面。在任務的介面中有良好的映射以及適應性。
  • 最佳實踐:強大的機器學習工具體現了過程,配置和實現的最佳實踐。比如自動配置機器學習演算法,工具內部結構良好的處理方式。

值得信賴的資源:強大的機器學習工具維護良好,時常保持更新,並具有社區人群。尋找關於一個工具相關的活動,是此工具被使用的標誌。

何時使用機器學習工具

機器學習工具能夠節省你的時間,並在項目中持續為你提供良好的結果。以下是使用機器學習工具能夠為你帶來的一些好處:

  • 入門:當你剛剛入門時,機器學習工具可以引導你完成整個項目並快速得到良好的結果,而且會給予你繼續下一個項目的信心。
  • 日常:如果你想快速得到一個問題的良好結果,機器學習工具可以讓你集中關注特定的問題,而不是得到答案需要的技術深度。
  • 項目工作:當你正在從事大型工程時,機器學習工具可以幫助你制定原型解決方案,進行需求分析,並且給出你可能要實現的系統的模板。

平台 VS 庫

機器學習工具有許多。Google搜索到的結果就足以讓你頭暈目眩了。

一種有用的機器學習工具分類方式是將它們分成平台和庫。平台為你運行一個項目所需的全部功能,而庫只為你完成一個項目提供部分功能。

這麼區分並不完美,因為有些機器學習平台同時也是庫,有些庫也提供了圖形化用戶介面。然而,這提供了很好的比較方式,從特定目的工具中區分具體使用情形。

機器學習平台

機器學習平台提供了從頭到尾完成一個機器學習項目的功能。也就是,數據分析,數據準備,建模和演算法評估及選擇。

機器學習平台的特徵有:

  • 它們提供了機器學習項目中每一個過程所需要的功能。
  • 介面可以是圖形化的,也可以是命令行,平台將所有的或部分介面結合起來。
  • 它們提供功能的松耦合,你可以在特定項目中將各個部件結合起來。
  • 它們是為通用目的用途和探索而量身訂製的,而不是為了速度,可擴展性和準確性。

以下是一些機器學習平台:

  • WEKA Machine Learning Workbench。
  • R Platform。
  • Python SciPy的子集(比如 Pandas和 scikit-learn)。

機器學習庫

機器學習庫提供了完成一個機器學習項目部分模組的功能。比如,一個庫可能提供了一系列建模演算法。

機器學習庫的特徵有:

  • 它們為一個機器學習項目中一個或多個步驟提供了特定的功能。
  • 它們的介面通常是需要編程的應用程式編程介面。
  • 它們為特定用例,問題類型或環境量身訂製。

以下是一些機器學習庫:

  • python中的 scikit-learn。
  • Java中的 JSAT。
  • .Net中的 Accord Framework。

機器學習工具介面

另一種區分機器學習工具的方式是根據它們提供的介面。

這可能令人迷惑,因為一些工具提供了多個介面。然而,這可能為你挑選機器學習工具提供了起點,甚至可能為你區分這些工具提供了幫助。

下面是一些常見的介面

  • 圖形化用戶介面

機器學習工具提供了圖形用戶介面,包括窗口,得分,點擊,專註於可視化。圖形化用戶介面的好處有:

  • 允許掌握較少技術的用戶完成機器學習工作。
  • 專註於處理過程,以及如何最大限度地利用機器學習技術。
  • 用戶可以使用介面進行結構化處理。
  • 更注重於資訊的圖形化展示,比如可視化。

以下是一些有圖形化介面的機器學習工具:

  • KNIME。
  • RapidMiner。
  • Orange。
  • 命令行介面

機器學習工具提供了命令行介面,包括命令行程式,命令行參數,注重於輸入和輸出。命令行用戶介面的好處有:

  • 允許不是程式設計師的技術用戶完成機器學習項目。
  • 提供了許多專門的程式或機器學習項目特定子任務的編程模型。
  • 根據需要的輸入和將會得到的輸出分解機器學習任務。
  • 通過記錄或腳本命令和命令行參數來促進有復驗性的結果。

以下是一些提供命令行介面的機器學習工具:

  • Waffles。
  • WEKA Machine Learning Workbench。

如果你喜歡在命令行下工作,看看這本書《 Data Science at the Command Line: Facing the Future with Time-Tested Tools 》,可以讓你了解如何在命令行下解決機器學習問題。

  • 應用程式編程介面

機器學習工具提供了應用程式編程介面,可以讓你自由決定在你的程式中使用什麼元素以及如何使用。應用程式編程介面的好處有:

  • 你可以將機器學習演算法合併到自己的軟體項目當中。
  • 你可以創建自己的機器學習工具。
  • 你可以在機器學習項目中靈活使用自己的處理流程和自動操作。
  • 你可以將自己的方法與庫提供的方法以及擴展提供的方法結合。

以下是一些帶有應用程式編程介面的機器學習工具:

  • 面向Python的 Pylearn 2。
  • 面向Java的 Deeplearning4j。
  • 面向C的 LIBSVM。 參考文章:
  • 25個Java機器學習工具&庫
  • 最好的Python機器學習庫

本地機器學習工具 VS 遠程機器學習工具

比較機器學習工具最後一個方法是這個工具是本地工具還是遠程工具。

本地工具是你下載並安裝的,在本地使用,而遠程工具運行在第三方伺服器上。

這樣區分也許有些模糊,因為有些工具可以以本地或遠程的方式運行。另外,如果你是優秀的工程師,你可以在自己的伺服器上配置幾乎所有的工具作為託管解決方案。

然後,這麼區分可能很有用,能夠幫助你理解和選擇機器學習工具。

  • 本地工具

本地工具是下載、安裝並運行在本地環境的。

  • 專為記憶體中數據和演算法設計。
  • 由運行配置和參數控制。
  • 集成到你自己的系統,以滿足你的需求。

以下是一些本地工具:

  • 面向C++的 Shogun Library
  • 面向Go的 GoLearn
  • 遠程工具

遠程工具託管在伺服器上,並且可以從本地環境調用。這些工具通常被稱為將機器學習作為服務(MLaaS)。

  • 專為運行更大規模數據設計。
  • 在多系統,多核心和共享記憶體上運行。
  • 為適應大規模系統,所以服務提供的演算法更少。
  • 更簡單的介面,在運行配置和演算法參數上提供較少的控制。
  • 通過遠程過程調用集成到你本地環境中。

以下是一些遠程工具:

  • Google Prediction API。
  • AWS Machine Learning。
  • Microsoft Azure Machine Learning。

參考文章:

  • 七種基於雲計算的機器學習服務
  • 機器學習API Top 10:AT&T Speech、IBM Watson和Google Prediction

也有一些工具可以讓你建立自己的遠程解決方案,並作為服務集成到你的本地環境中。比如:

  • 面向Hadoop的 Apache Mahout。
  • 面Spark的 MLlib。
  • PredictionIO。

總結

在這篇文章中,你了解到了為什麼工具在應用機器學習中很重要。你了解到,沒有良好的機器學習工具,你就必須從無到有實現所有的技術,而這需要專業技術知識和高效工程實踐。

你學習到了三種結構化看待機器學習工具的方式:

  • 平台 VS 庫
  • 圖形化用戶介面 VS 命令行介面 VS 應用程式編程介面
  • 本地工具 VS 遠程工具

你在使用什麼機器學習工具呢?歡迎評論並分享你正在使用的機器學習工具。