1. 程式人生 > >Eclipse Deeplearning4j GitChat達人課介紹

Eclipse Deeplearning4j GitChat達人課介紹

原文連結:https://blog.csdn.net/valada/article/details/84991256

作者:萬宮璽

隨著機器學習、深度學習為主要代表的人工智慧技術的逐漸成熟,越來越多的 AI 產品得到了真正的落地。無論是以語音識別和自然語言處理為基礎的個人助理軟體,還是以人臉識別為基礎的刷臉付費系統,這些都是 AI 技術在現實生活中的實際應用。應當說 AI 正在走進千家萬戶,來到你我的身邊。

另一方面,從研發角度來講,AI 產品的落地並不是一件容易的事情:

  • AI 技術數學理論要求高,數理統計、神經理論與腦科學、優化理論、矩陣論……
  • AI 硬體層面要求非常高,GPU、TPU、FPGA……

如何基於目前的主流研究成果和硬體,對 AI 產品進行一站式的開發?這正是當前企業工程師面臨的實際痛點。

對此,多家企業及研究機構推出了自己的解決方案,如 Google 推出並開源了 TensorFlow,Facebook 主導 PyTorch 和 Caffe 2,Amazon 選擇 MXNet 並打算投資圍繞 MXNet 的系統,微軟開發並大力推廣 CNTK…

這些都是以 Python 和 C/C++ 語言為主,而在目前企業專案中,無論是 Web 應用、Andriod 開發還是大資料應用,Java 語言都佔有很大的比例。此外,我們必須看到,越來越多的從事傳統 Java 應用開發的工程師嘗試將 AI 技術融入到專案中,或者自身在嘗試轉型 AI 領域。因此如果有類似 TensorFlow、Caffe 這些 AI 解決方案而又同時基於 Java 的,那麼無疑會為專案的推進及個人的發展帶來很多便利。

Deeplearning4j 正是這類解決方案中的佼佼者。

Deeplearning4j 是什麼

Deeplearning4j 是由美國 AI 創業公司 Skymind 開源並維護的一個基於 Java/JVM 的深度學習框架。同時也是在 Apache Spark 平臺上為數不多的,可以原生態支援分散式模型訓練的框架之一。此外,Deeplearning4j 還支援多 CPU/GPU 叢集,可以與高效能異構計算框架無縫銜接,從而進一步提升運算效能。在 2017 年下半年,Deeplearning4j 正式被 Eclipse 社群接收,同 Java EE 一道成為 Eclipse 社群的一員。

圖片

為什麼選擇 Deeplearning4j

1.基於 Java,專為企業應用而生

Deeplearning4j 是基於 Java 的深度學習開源框架。從實際開發的角度上,它是面向 Layer 程式設計的神經網路開發框架,對很多常見的神經網路結構做了高度的封裝,熟悉 Keras 的朋友可以認為 Deeplearning4j 是 Java 版本的 Keras。同時 Deeplearning4j 也完美相容 Scala 和 Clojure。

2.豐富的開源生態圈,遵循 Apache 2.0

Deeplearning4j 也擁有自己的生態。在 Deeplearning4j 的相關開源專案中,就有專門為張量運算而開發的 ND4J 和資料處理的 DataVec。它們的作用相當於 Python 中的 NumPy 和 Pandas。當然,除了這些專案以外,Arbiter、RL4J 等專案也大大豐富了 Deeplearning4j 的生態圈。

3.與 Hadoop 和 Spark 整合,支援分散式 CPU 和 GPU

Deeplearning4j 是原生支援在 Apache Spark 上構建分散式深度學習解決方案的框架。由於在企業的實際應用場景中,大資料的統計和儲存往往會依賴 Hive/HDFS 等儲存介質。而演算法模型的構建必須依賴龐大的資料,因此如果可以完成一站式的資料儲存、資料提取和清洗、訓練資料的構建、模型訓練和調優的所有開發環節,無疑是非常理想的解決方案。Deeplearning4j 以資料並行化為理論基礎構建了分散式神經網路建模的解決方案,為大資料 + 演算法的開發提供了直接的支援。

Deepleanring4j 支援多 CPU/GPU 叢集的建模。就像在上文中提到的,GPU 等硬體的成熟大大加速了 AI 的發展。Deeplearning4j 通過 JavaCPP 技術呼叫 cuBLAS 來實現在 GPU 上的加速建模。對於 GPU 叢集的支援則需要依賴 Spark。

圖片

4.越來越受開發人員歡迎
自 Deeplearning4j 從 2016 年左右開源以來,功能優化與新特性的豐富使得專案本身不斷得到完善,在 GitHub 上的 Commiter 活躍度與 Star 數量也不斷增加,使得該開源框架越來越得到國內外企業的關注。就目前 Skymind 官網提供的資訊來看,就有數十家明星企業和研發機構在部署使用 Deeplearning4j,其中就不乏有 Oracle、Cisco、IBM、軟銀、亞馬遜、阿里巴巴等知名企業。

而隨著 Deeplearning4j 在工業界的使用逐漸增多,更多的研發人員希望有一套教程可以用來輔助開發和作為參考,因此我在 GitChat 平臺編寫了這門《Deepleraning4j 快速入門》,希望可以幫助讀者儘可能輕鬆與快速地掌握 Deeplearning4j 的使用。

Deeplearning4j 的最新進展

目前 Deeplearning4j 已經來到了 1.0.0-beta3 的階段,馬上也要釋出正式的 1.0.0 版本。本課程我們主要圍繞 0.8.0 和 1.0.0-alpha 展開(1.0.0-beta3 核心功能部分升級不大),這裡羅列下從 0.7.0 版本到 1.0.0-alpha 版本主要新增的幾個功能點:

  • Spark 2.x 的支援(>0.8.0)
  • 支援遷移學習(>0.8.0)
  • 記憶體優化策略 Workspace 的引入(>0.9.0)
  • 增加基於梯度共享(Gradients Sharing)策略的並行化訓練方式(>0.9.0)
  • LSTM 結構增加 cuDNN 的支援(>0.9.0)
  • 自動微分機制的支援,並支援匯入 TensorFlow 模型(>1.0.0-alpha)
  • YOLO9000 模型的支援(>1.0.0-aplpha)
  • CUDA 9.0 的支援(>1.0.0-aplpha)
  • Keras 2.x 模型匯入的支援(>1.0.0-alpha)
  • 增加捲積、池化等操作的 3D 版本(>1.0.0-beta)

除此之外,在已經提及的 Issue 上,已經考慮在 1.0.0 正式版本中增加對 YOLO v3、GAN、MobileNet、ShiftNet 等成果的支援,進一步豐富 Model Zoo 的直接支援範圍,滿足更多開發者的需求。

你能從課程學到什麼

本課程主要面向:

  • 對 Deeplearning4j 入門感興趣的初學者
  • 希望轉型人工智慧領域的 Java 工程師
  • 有科學計算背景的高校/企業工作人員

我將結合 Deeplearning4j 的特性來介紹目前主流深度學習研究成果,通過大量的實際案例來講解 Deeplearning4j 在結構化資料、自然語言處理、機器視覺領域的應用,具體內容涉及:

  • 多層感知機在分類和迴歸問題上的應用
  • 深度信念網路在資料壓縮問題上的應用
  • 卷積神經網路在影象分類和目標檢測問題上的應用
  • 迴圈神經網路在文字分類/文字生成/序列標註等問題上的應用
  • ……

課程還將結合 Deeplearning4j 支援的特性,從本地單 CPU/多 CPU 建模開始介紹,循序漸進,逐步將單 GPU/多 GPU 並行以及 Spark 叢集建模的詳細內容介紹給大家,從而在巨集觀層面儘可能對 Deeplearning4j 的內容介紹得詳盡且實用。

由於 Deeplearning4j 生態圈的內容豐富,我將著重就最常用的 ND4J、DataVec、RL4J 做詳細介紹。

圖片

作者簡介

萬宮璽,蘇寧易購高階演算法工程師。現任職於蘇寧易購搜尋研發中心,對機器學習/深度學習在自然語言處理、機器視覺等領域的應用開發有著豐富的經驗,先後參與部門反作弊系統、智慧問答機器人、Query 語義挖掘與分析系統等機器學習專案的開發。

學習建議

由於 AI 是一項跨多學科且對理論和工程開發都有著一定要求的技術,因此實際動手操作非常重要。只有自己動手做過一兩個專案或者參加過一些演算法比賽,研發人員才會對如何做好演算法專案和產品有感性的認識,而不會僅僅停留在理論層面。踩坑雖然痛苦,但其實也是加深對理論理解的必需過程,在這個方面並沒有太多捷徑可走。

在學習本課程前,希望讀者有一定的 Java 工程基礎,以及對機器學習/深度學習理論的簡單瞭解。對優化理論、微分學、概率統計有一定的認識,對理解神經網路的基礎理論(如 BP 演算法)將大有裨益。

最後需要說明的是,機器學習、深度學習領域發展迅速,我個人雖然專注機器學習領域的開發與應用多年,但是經驗依然處於初窺門徑的階段,因此課程中難免存在錯誤和疏漏。希望大家在學習過程中發現任何問題及時幫忙指出,我會盡可能在第一時間修正。同時,我自己也希望和所有喜歡 AI 技術和本課程的朋友多些交流,不斷完善和提高課程的質量。

課程目錄

在這裡插入圖片描述

識別二維碼或點此試讀

在這裡插入圖片描述