【TensorFlow 開發者峰會】重磅發布 TensorFlow.js,完全在瀏覽器運行機器學習

北京時間 3 月 31 日舉行的 2018 TensorFlow 開發者峰會上,TensorFlow 宣布重大更新:增加支持 JavaScript,並推出開源庫 TensorFlow.js,用戶可以完全在瀏覽器定義、訓練和運行機器學習模型。谷歌大腦負責人 Jeff Dean、TensorFlow 總監 Rajat Monga 等人進行了 Keynote 演講。

直播地址:youtube.com/watch?

Jeff Dean 主旨演講:用超強大的計算力,替代 ML 專家

北京時間 3 月 31 日舉行的 2018 TensorFlow 開發者峰會上,Google Brain 負責人、谷歌高級研究員 Jeff Dean、TensorFlow 總監 Rajat Monga 等人進行了 Keynote 演講。

Jeff Dean 也是目前最受歡迎的深度學習框架 TensorFlow 的締造者之一,他曾經就 TensorFlow 的高級使用,如何用 TensorFlow 實現大規模機器學習等問題做過多次演講。今年初,Jeff Dean 執筆撰寫谷歌大腦成績單,介紹了 TensorFlow 取得的一系列重要更新。

TensorFlow 用戶的分布地圖

TensorFlow 是 GitHub 上的第一個機器學習平台,也是 GitHub 上的五大軟體庫之一,被許多公司和組織所使用,包括 GitHub 上與 TensorFlow 相關的超過 24,500 個不同的軟體倉庫。預編譯的 TensorFlow 二進位文件已經在 180 多個國家被下載了超過 1000 萬次,GitHub 上的源代碼現在已經有超過 1200 個貢獻者。

在 TensorFlow 1.0 發布之後的兩年中,TensorFlow 不斷更新升級,逐漸成為機器學習社區最流行的深度學習框架。下圖是從開源以來,TensorFlow 的重大更新,例如 TensorBoard、XLA New APIs、High-level APIs、tfkeras、Eager Execution、TF Lite 等。

在演講中,Jeff Dean 先以 NAE 列出的 「21 世紀亟需解決的問題」 開頭,他說,機器學習會在所有這些問題中起到作用。而且,機器學習是關鍵,尤其是推動醫療的進展、為科學發現提供工具等方面。

Jeff Dean 說,目前機器學習領域的一般方案是:ML 的專門知識 + 數據 + 計算力。但是能不能用更強大的計算力替代 ML 專家或者 ML 專業知識,這一點谷歌正在踐行。

Jeff Dean 接下來介紹了 AutoML。

自動化機器學習的目標是為計算機開發能夠自動解決新的機器學習問題的技術,而不用每次遇到新問題都需要人類機器學習專家干預。如果我們想要真正的智能系統,這是所需要的最基本的能力。AutoML 是使用強化學習和進化演算法設計神經網路結構的新方法。

ML + 醫療是強大的組合。谷歌在 AI 醫療方面取得了一系列成就,例如使用深度學習從視網膜眼底照片預測心血管疾病的研究。

增加支持 JavaScript,完全在瀏覽器定義、訓練和運行機器學習模型

TensorFlow 開發者峰會上還宣布了一件大事:

TensorFlow 宣布推出 TensorFlow.js,這是一個開源庫,可以使用 JavaScript 和 high-level layers API 完全在瀏覽器中定義、訓練和運行機器學習模型。如果你是機器學習的初學者,那麼 TensorFlow.js 是開始學習的好方法。或者,如果你是機器學習開發者,但對於 JavaScript 是新手,那麼請繼續閱讀,了解更多在瀏覽器內進行機器學習的新機會。我們將簡要介紹一下 TensorFlow.js,並介紹一些試用的資源。

在瀏覽器運行機器學習

完全在瀏覽器中運行機器學習程序可以開發新的機會,例如互動式機器學習!在 TensorFlow 開發者峰會上,Daniel Smilkov 和 Nikhil Thorat 演示了如何使用計算機視覺和網路攝像頭訓練模型來控制 PAC-MAN 遊戲,這是完全在瀏覽器進行的。

demo:storage.googleapis.com/

代碼:github.com/tensorflow/t

使用神經網路將你的網路攝像頭變成 PAC-MAN 的控制器

如果你想嘗試其他遊戲,例如 Emoji Scavenger Hunt——這次是使用手機上的瀏覽器。

Emoji Scavenger Hunt 是使用 TensorFlow.js 構建的另一個有趣的 demo。你可以用手機試一下

從用戶的角度來看,在瀏覽器中運行的 ML 意味著不需要安裝任何庫或驅動程序。只需打開一個網頁,即可運行你的程序。此外,它也可以使用 GPU 加速運行。TensorFlow.js 自動支持 WebGL,並在 GPU 可用時在後台加速代碼。用戶也可以通過移動設備打開網頁,在這種情況下,模型可以利用感測器數據,例如陀螺儀或加速度計。最後,所有數據都保留在客戶端上,使得 TensorFlow.js 可用於低延遲推斷以及隱私保護的應用程序。

你可以用 TensorFlow.js 做什麼?

如果你使用 TensorFlow.js 進行開發,可以考慮以下三種 workflow:

  • 你可以導入現有的預訓練的模型進行推理。如果你有一個以前離線訓練好的現成的 TensorFlow 或 Keras 模型,就可以將其轉換為 TensorFlow.js 格式,並載入到瀏覽器中進行推理。
  • 你可以重新訓練導入的模型。正如在上面的 Pac-Man 演示中,你可以使用遷移學習來增強現有模型,使用 「Image Retraining」 技術,用瀏覽器中收集的少量數據進行離線訓練。這是快速訓練精確模型的一種方法,只需使用少量數據。
  • 直接在瀏覽器中創建模型。你還可以使用 TensorFlow.js,完全在瀏覽器中使用 Javascript 和 high-level layers API 進行定義、訓練和運行模型。如果你熟悉 Keras,那麼應該會很熟悉 high-level layers API。

一些代碼示例

以下內容展示了如何在瀏覽器中導出用 Python 定義的模型進行推理,以及如何完全用 Javascript 定義和訓練模型。這裡有一段代碼定義了一個用於來對花朵進行分類的神經網路,就像在 TensorFlow.org 的入門指南中的代碼一樣。在這裡,我們使用一堆 layers 來定義一個模型。

這裡使用的 layers API 支持示例目錄中的所有 Keras 層(包括 Dense,CNN,LSTM 等)。然後,我們可以使用 Keras 兼容的 API 來訓練我們的模型:

這個模型現在可以用來做預測:

TensorFlow.js 還包含 low-level API(以前稱為 deeplearn.js),並且支持 Eager 執行。

上圖是 TensorFlow.js API 的概覽。TensorFlow.js 由 WebGL 支持,並提供用於定義模型的 high-level layers API 和用於線性代數和自動微分的 low-level API。TensorFlow.js 支持導入 TensorFlow SavedModels 和 Keras 模型。

TensorFlow.js 和 deeplearn.js 有什麼區別?

好問題!TensorFlow.js 是用於機器學習的 JavaScript 工具生態系統,是 deeplearn.js 的接替者,deeplearn.js 現在已經改名 TensorFlow.js Core 了。TensorFlow.js 還包含一個 Layers API,它是用於構建使用 Core 的機器學習模型的更高級的庫,以及用於自動移植 TensorFlow SavedModels 和 Keras hdf5 模型的工具。

更多材料,請訪問 TensorFlow.js 的主頁:js.tensorflow.org/


(本文首發於新智元微信公眾號:AIera,歡迎關注,歡迎投稿!加入新智元微信社群,請聯繫微信:aiera2015_2)

推薦閱讀:

基於不平衡樣本的推薦演算法研究
Introduction: Tracking, Fusion and Deep learning for ADAS
谷歌傳道AI方法論:通過免費在線課程教你掌控人工智慧和機器學習
EdX-Columbia機器學習課第5講筆記:貝葉斯線性回歸
機器學習導論——Day2、3

TAG:TensorFlow | 谷歌Google | 機器學習 |