為什麼機器學習行業的發展離不開 “開源”

發表於2017-03-29

2016 年底,Google DeepMind 開源了它們的機器學習平臺 — DeepMind Lab。儘管像霍金教授這樣的專家曾就人工智慧技術發出過警告,谷歌仍決定向其他開發人員開源其軟體,這也是它們進一步發展機器學習能力的一部分。他們不是唯一一家這樣做的科技公司,Facebook 去年開源了其深度學習的軟體,Elon Musk 的非營利組織 OpenAI 也釋出了 Universe,這是一個可用於訓練 AI 系統的開放軟體平臺。所以,為什麼谷歌、OpenAI,以及其他的公司或機構都選擇開源了它們的平臺,這將會對機器學習的採用產生怎樣的影響?

為什麼開源機器學習?

上面所提到的例子給了我們美好的願景,其實如果仔細觀察,會留意到機器學習一直是開源的,而且開放的研發是機器學習有如今這樣關注度的根本原因。

通過向公眾提供自己學習平臺,Google 已經驗證了其 AI 研究的意識越來越高。這樣做其實有很多優點,例如可為 Alphabet 發掘到新的人才和有能力的創業公司。同時,開發者能訪問 DeepMind Lab 將有助於解決他們研究機器學習的一個關鍵問題 —— 缺乏訓練環境。OpenAI 為 AI 推出了一個新的虛擬學校,它使用遊戲和網站來訓練 AI 系統。

目前非常需要向公眾提供機器學習平臺這樣的舉動。

5 個開源機器學習專案的優勢

  • 重現科學的結果和公平的比較演算法:在機器學習中,經常使用數值模擬來提供實驗驗證和方法比較。這種方法之間的比較是基於嚴格的理論分析的。開源工具和技術提供了一個機會,可以使用公開的原始碼徹底地進行研究,而不依賴於提供方。
  • 快速查詢和修復 bug:當你使用開源軟體執行機器學習專案時,易於檢測和解決軟體中的 bug。
  • 以低成本、重用的方法加快科學研究的發展:眾所周知,科學的進步總是以現有的方法和發現為基礎,機器學習領域也不例外。機器學習中開源技術的可用性可很好地將大量現有資源投入研究和專案。
  • 長期的可用性和支援:無論是個人研究者、開發者,還是資料科學家,開源可能都可以作為一種媒介,以確保每個人都可以在改變工作後使用他/她的研究或發現。因此,通過在開源許可證下發布程式碼可增加獲得長期支援的機會。
  • 各行業更快地採用機器學習技術:開源軟體有顯著的典範,它支援著建立數十億美元的機器學習公司和行業。研究人員和開發者採用機器學習的主要原因是有免費提供高質量的開源實現。

加快開源機器學習的採用曲線

開源機器學習的進步將使得人工智慧的採用曲線更加陡峭,從而促使開發者和創業公司努力使 AI 更智慧。軟體平臺的可用性正在改變企業開發 AI 的方式,促使他們跟隨 Google,Facebook 和 OpenAI 的腳步進行更透徹的研究。

開放機器學習平臺的轉變是確保 AI 可為每個人所用而不是隻被掌握在少數技術巨頭手中的重要階段。

個人認為,科技巨頭髮布開源機器學習專案有三個原因:

  • 僱傭已經與開源社群接觸並通過開源專案建立了對機器學習的認識的工程師
  • 控制一個機器學習平臺,使它們為自己更廣泛的 SDK 或雲平臺策略更好地工作
  • 發展整個市場,因為他們的市場份額已經達到了飽和點

當一家創業公司釋出一個開源專案時,它會引起注意,其中一些會被轉化為付費客戶和招聘。根據創業公司自己的定義,他們是嘗試在特定市場上立足,而不是擴大現有市場。開源是無摩擦的,為另一個使用者提供服務並使組織能夠解決實際問題不會花費任何東西,從而使程式碼具有更大影響。

開源打破了建立專利技術的公司的限制。其中一個連鎖效應可能是關注價值所在的轉變,隨著整個 AI 技術的商業化,關注點已從核心機器學習技術轉向構建最佳模型,這需要大量的資料和領域專家來建立和訓練模型。對於這點,具有網路影響力的大型企業具有天然優勢。

開源機器學習中的最佳框架

現在有大量的開源機器學習框架,使機器學習工程師能夠:

  • 構建、實施和維護機器學習系統
  • 生成新專案
  • 建立新的有影響力的機器學習系統

一些重要的框架包括:

  • Apache Singa 是一個通用、分散式、深度學習的平臺,用於在大型資料集上訓練大型深度學習模型。它被設計有基於層次抽象的本能程式設計模型。支援各種流行的深度學習模型,包括卷積神經網路(CNN),受限玻爾茲曼機(RBM),以及迴圈神經網路(RNN)等能量模型。為使用者提供了許多內建圖層。
  • Shogun 是歷史最悠久,也是最受尊敬的機器學習庫之一。Shogun 於 1999 年建立,採用 C++ 編寫,但不只限於在 C++ 中使用。感謝 SWIG 庫,Shogun 可用於以下程式語言和環境:
    • Java
    • Python
    • C#
    • Ruby
    • R
    • Lua
    • Octave
    • Matlab

Shogun 旨在面向廣泛的特性型別和學習環境進行統一的大規模學習,如分類、迴歸、降維、聚類等。它包含了幾項獨有的最先進的演算法,如豐富的高效 SVM 實現,多核心學習,核心假設檢驗,以及 Krylov 方法等。

  • TensorFlow 是一個採用資料流圖(data flow graphs),用於數值計算的開源軟體庫。TensorFlow 使用資料流圖進行數值計算,通過節點(Nodes)和線(edges)的有向圖來闡述數學計算。節點在圖中表示數學操作,也可以表示資料輸入(feed in)的起點/輸出(push out)的終點,或者是讀取/寫入持久變數(persistent variable)的終點。圖中的線則表示在節點間相互聯絡的多維資料陣列,這些資料 “線” 可以輸運 “size 可動態調整” 的多維資料陣列,即 “張量”(tensor)
  • Scikit-Learn 通過構建在數個現有的 Python 包(NumPy,SciPy 和 matplotlib)之上,用於數學和科學工作,充分利用了 Python 的廣度。生成的庫可以用於互動式 “工作臺” 應用程式,也可以嵌入到其他軟體中並重用。該套件在 BSD 許可證之下發布,因此它完全是開源和可重用的。Scikit-learn 包括許多用於標準機器學習任務(如聚類,分類,迴歸等)的工具。由於 scikit-learn 是由一大群開發者和機器學習專家開發的,所以新技術有希望會很快被引入。
  • MLlib (Spark) 是 Apache Spark 的機器學習庫。其目標是使實用的機器學習具有更好的可擴充套件性和易於使用。它由常見的學習演算法和實用程式組成,包括分類、迴歸、聚類、協同過濾、降維,以及較底層的優化原語和高層的管道 API。Spark MLlib 被認為是在 Spark Core 之上的分散式機器學習框架,主要由於其分散式的基於記憶體的 Spark 架構,幾乎是 Apache Mahout 使用的基於磁碟的實現的九倍。
  • Amazon Machine Learning 是一項使任何技能水平的開發者都能輕鬆使用機器學習技術的服務。Amazon Machine Learning 提供了視覺化工具和嚮導,指導你完成建立機器學習(ML)模型的過程,而無需學習複雜的 ML 演算法和技術。它連線到儲存在 Amazon S3,Redshift 或 RDS 中的資料,可以對所述的資料執行二進位制分類,多類分類或迴歸,以建立一個模型。
  • Apache Mahout 是 Apache 軟體基金會的一個自由開源專案。目標是為協作過濾、聚類和分類等多個領域開發免費的分散式或可擴充套件的機器學習演算法。Mahout 為各種數學運算提供了 Java 庫和 Java 集合。Apache Mahout 是使用 MapReduce 範例在 Apache Hadoop 之上實現的。如果大資料儲存在 Hadoop 分散式檔案系統(HDFS)中,Mahout 提供的資料科學工具,可以在這些大資料集中自動找到有意義的模式,從而將這些大資料快速輕鬆地轉化為 “大資訊”。

最後要說的

機器學習確實可以在開源工具的幫助下解決真正的科學技術問題。如果機器學習是為了解決真正的科學技術問題,社群需要建立在彼此的開源軟體工具之上。我們認為,機器學習開源軟體有一個緊急需求,它將滿足多個角色,其中包括:

  • 更好的方法來重現結果
  • 為質量軟體實施提供學術認可的機制
  • 通過站在其他人的肩膀(不一定是技術巨頭)上以加速研究過程

相關文章