實戰 | 深度學習輕鬆學:如何用視覺化介面來部署深度學習模型 轉載 2017年12月27日 00:00:00 109 翻譯 | AI科技大本營 參與 | 王赫 上個月,我有幸結識了 DeepCogn
翻譯 | AI科技大本營
參與 | 王赫
上個月,我有幸結識了 DeepCognition.ai 的創始人。
Deep Cognition (深度認知) 建立的深度學習工作室,為很多準備部署深度學習框架和採用人工智慧技術的機構打破了諸多難以逾越的障礙。
究竟什麼是深度學習?
在我們說明Deep Cognition是如何簡化深度學習和人工智慧之前,先讓我們定義一些深度學習的主要概念。
深度學習,它的核心是用連續"層狀"結構來逐級遞進的學習有意義的特徵表示,其作為機器學習的一個特定的子研究領域,現已成為了一種新的從資料中抽取可學習特徵表示的方法。
在深度學習中,由多個處理層構成的計算模組可以學習到具有多重抽象級別的資料特徵。
這些層狀的特徵表示正是通過一個稱為”神經網路”的模型來學習的,其結構依次層疊在一起。
實際上,我們在深度學習中使用的是一種稱為人工神經網路(ANN)的東西。這個網路是受到生物神經網路的啟發,用於估計或近似地趨近於一個依賴於海量未知輸入變數的函式。
雖然,深度學習在機器學習中是一個相當古老的領域,但其在2010年初才開始漸漸顯露鋒芒。在此之後的幾年裡,深度學習取得了很大的成就。Francois Collet 在下面列出了其中的主要成就:
-
接近人類水平的影象分類技術。
-
接近人類水平的語音識別技術。
-
接近人類水平的手寫筆跡轉錄技術。
-
經過改良的機器翻譯技術。
-
經過改良的文字到語音轉換技術。
-
數字助理,如Google Now或Amazon Alexa。
-
接近人類水平的自動駕駛技術。
-
經過改良的廣告精準投放,如Google,百度和Bing所使用的。
-
經過改良的搜尋引擎結果。
-
對自然語言問題解答。
-
遠超人類能力的遊戲,如Go。
為什麼深度學習如此的牛逼?
正如 François Collet 在他的書中所說的那樣,直到21世紀後期,我們仍然沒有可以訓練非常深的神經網路的可靠方法。因此,當時的神經網路仍然很淺,只能用一到兩層來表示,所以它們還不能挖掘出像SVMs或隨機森林那樣更加精細的淺層特徵。
但在近十年以來,隨著幾個簡單但又重要的演算法的改進與發展、硬體(主要是GPU)的進步以及大資料的指數級積累,在現今深度學習的幫助下,你也可以在自家的膝上型電腦(或雲端)上執行一個小型深度學習模型。
究竟該如何深度學習呢?
來看看我們通常是如何做深度學習的。
儘管這不是一個新的領域,但我們可以通過一種全新的方式與計算機進行互動來深度學習。而這個領域最重要的一個事件就是TensorFlow的建立。
TensorFlow是一個使用資料流圖進行數值計算的開源軟體庫。資料流圖中的節點表示數學運算,而圖中的邊表示在它們之間交流的多維資料陣列(張量)。
什麼是張量?
根據數學的定義,張量是由數字或函式構成的簡單陣列,它們按照一定的規則進行座標變換。
但是從這個角度而言,張量可以是向量和矩陣向更高維度的泛化推廣。 在TensorFlow的內部,張量被表示為基本資料型別的n維陣列。
我們需要使用張量的原因是因為 NumPy(在Python裡進行科學計算的基礎軟體包)缺乏建立張量的能力。 我們可以將張量與NumPy之間互相轉換。 由於其構造早已明確的被定義為陣列/矩陣,所以這是完全可能的。
通過結合了諸多優化編譯技術的計算代數程式,TensorFlow使得執行許多難以計算的數學表示式變得非常簡單。
Keras
雖然這不是一個關於TensorFlow的部落格,何況網上有很多優質的TensorFlow資源帖子。但在本文中介紹一下Keras依然是很有必要的。
Keras是一個高階的神經網路API,它用Python編寫,並且能夠在TensorFlow,CNTK或Theano之上執行。 它的開發重點就是能夠快速構建實驗模型。 要知道,能夠做好研究的關鍵就是能夠儘可能快的從想法點子到最終實驗結果。
這就是François Collet所構建該框架的初衷,也是為了讓大眾在深度學習面前能勇敢的邁出第一步。
TensorFlow本來有一個不復雜的Python API,但Keras可以更容易讓很多人進入到深度學習領域中。 還應該提及的是,Keras現在已經正式成為Tensorflow的一部分:https://www.tensorflow.org/api_docs/python/tf/contrib/keras
深度學習框架
我對深度學習框架進行了比較。
Keras現在在流行度上優勝於其他框架,顯而易見的可以看到人們更喜歡其簡單的介面和可用性。
如果你想了解更多關於keras的資訊,請訪問我在LinkedIn上釋出的帖子:https://www.linkedin.com/feed/update/urn:li:activity:6344255087057211393
Deep Cognition
因此,通常我們會進行深度學習程式設計,然後學習新的API。其中有些API要更復雜一些,也有一些是非常容易的,比如Keras。但是如何通過點選幾個按鈕就可以輕鬆建立和部署深度學習框架呢?
這就是Deep Cognition所許諾要達到的目標。
正如他們所說,Deep Cognition平臺是為了“民主化AI”而建立的。
人工智慧為世界的經濟已經創造了巨大的價值。然而,AI企業在準備部署人工智慧技術時所面臨的巨大障礙也正是他們的(巨大)短板。 這就是Deep Cognition所正在解決的問題。
Deep Cognition的深度學習工作室平臺可以採用雲解決方案,也可以是在你的機器中執行的桌面解決方案(http://deepcognition.ai/desktop/)或者是企業解決方案(私有云或內部解決方案)。
桌面版本允許人們使用他們自己的電腦,並且無需為GPU付費。
為此,我們將使用Deep Learning Studio的雲端版本,並使用單使用者解決方案來建立和部署AI。簡單的介面拖放就可以幫助您輕鬆設計深度學習模型。
預訓練的模型以及使用內建的輔助功能可以簡化和加速模型開發。 您可以匯入模型程式碼並使用視覺化介面來編輯模型。 當您迭代和調整超引數以提高效能時,平臺會自動的儲存每個模型版本。 您還可以通過比較不同版本的效能以找到最佳模型設計。
在 MNIST 資料集上使用 Deep Cognition 和 AutoML
Deep Learning Studio可以自動地為您自定義的資料集設計深度學習模型,這要歸功於我們先進的AutoML功能。 您只需在幾分鐘內就可以啟動並執行得到一個良好的模型結果。
沒錯!AutoML就是能隨時實現你所想的,專門為深度學習而設計的自動化機器學習系統。它可以為你建立一個從原始資料到預測結果完整的流水線。
作為深度學習工作室的一個小教程,我們來研究一下經典的MNIST資料集。
MNIST是一個簡單的計算機視覺資料集。 它由這樣的手寫數字影象組成:
它還包括每個影象的標籤,這樣就可以告訴我們它對應的是哪個數字。
運用Deep Cognition的雲端工作室和AutoML功能,我們來訓練一個可以檢視影象並預測影象數字的模型。
如果你已經有一個帳戶,你就只需要進入http://deepcognition.ai網頁,然後點選啟動雲應用程式。
然後,你進入到使用者介面,以及可以選擇一些示例專案:
現在要做的是建立一個新的專案:
接下來的頁面,您可以選擇訓練集-驗證集-測試集的比率,載入資料集或使用已上傳的資料集,指定資料的型別等等。
"模型"選項卡可以讓您使用很多先進的深度學習功能以及不同型別的神經網路層來建立自己的模型,但是為了讓Deep Cognition能處理所有的建模,我們將使用AutoML功能:
我們選擇了Image,因為這是我們正要試圖預測的資料型別。
在您點選"設計"之後,您就擁有了您的第一個深度學習模型,在此基礎上可以進一步來自定義和分析:
模型看起來像這樣:
所以,你可以看到在這個非常棒的平臺下,深度學習所有複雜的建模過程和程式設計程式碼得到了顯著的簡化。
你也可以在平臺內的Jupyter Notevook中進行程式設計,其中已經預安裝了所有必要的程式軟體:
配置神經網路非常困難的主要原因在於神經網路中有很多超引數需要設定。與任何其他機器學習演算法相比,超引數的調參過程是神經網路中是最難的一部分。
但是在Deep Cognition中,調參可以非常簡單且非常靈活的實現。在”超引數“選項卡中,您可以在幾個Loss函式和優化器中進行選擇來調整引數。
接下來是很有趣的一部分:訓練模型。 在“訓練”選項卡中,您可以從不同型別的例項(包括CPU和GPU)中進行選擇。 它也將幫助您監控您的整個訓練過程,併為您建立一個損失和準確率的圖:
上面的gif小圖就是訓練過程
您可以在"結果"選項卡中檢視到您所有的訓練結果
最後,您得到了一個訓練好的神經網路模型,它參考了測試集和驗證集(或其他您已上傳的)來訓練的。您可以立刻使用這個模型並預測影象中的數字以檢視它的表現如何。
黑盒問題
有時候在你會這樣想:好吧,我正在深入學習,但我不知道它是如何做到的。
由於您實際上可以下載能夠預測結果的模型程式碼,您將會看到它是用Keras編寫的。然後您可以上傳該程式碼並使用系統提供的notebook進行測試。
AutoML功能具有Keras和其他深度學習框架中的優秀功能,而且它的好處在於:只需輕輕一點,它就為您自動選擇了最佳的深度學習框架例項,如果您對選擇不滿意,您還可以很輕鬆在影象介面下修改或者在notebook中互動式的更改。
這個系統平臺建立的初衷是人人都可以輕鬆使用AI。為了構造一個複雜的模型,你並不需要一定是一個AI專家。但我的建議是,你需要對自己在做什麼有了一個清晰的認識。你可以通過閱讀TensorFlow或Keras文件,觀看一些視訊和關注相關資訊。如果你是這相關領域的專家,那就太棒了!這將使您的生活更加簡單輕鬆,並且在構建模型時仍然可以運用您的專業知識。
請點選(閱讀)下面的參考資料,以獲取有關Deep Learning和AI的更多資訊。
關於Favio Vázquez
物理學家和計算機工程師。 他擁有墨西哥國立自治大學物理科學碩士學位,現正在從事大資料,資料科學,機器學習和計算宇宙學等相關領域的工作。 自2015年以來,他一直是Apache Spark與Core和MLlib庫的合作者。
他是Iron公司的首席資料科學家,主要負責執行分散式處理,資料分析,機器學習和指導資料專案。 此外,他在BBVA Data & Analytics擔任資料科學家,工作範圍包括機器學習,資料分析,以及使用Apache Spark維護專案和模型的生命週期。
參考文獻
TensorFlow 101: Understanding Tensors and Graphs to get you started in Deep Learning *Introduction TensorFlow is one of the most popular libraries in Deep Learning. When I started with TensorFlow it felt
Deep Learning with Python The clearest explanation of deep learning I have come across...it was a joy to read.
leriomaggio/deep-learning-keras-tensorflowdeep-learning-keras-tensorflow - Introduction to Deep Neural Networks with Keras and Tensorflow
MNIST For ML Beginners | TensorFlowWe know that every image in MNIST is of a handwritten digit between zero and nine. So there are only ten possible…
Tutorial: Optimizing Neural Networks using Keras (with Image recognition case study) Introduction In my previous article, I discussed the implementation of neural networks using TensorFlow. Continuing the…
PacktPublishing/Deep-Learning-with-Keras Deep-Learning-with-Keras - Code repository for Deep Learning with Keras published by Packt
Latest Deep Learning OCR with Keras and Supervisely in 15 minutes Tutorial on how to build your own state-of-the art text recognition system
關鍵詞:Machine Learning,Deep Cognition,Deep Learning,Artificial Intelligence
原文
https://medium.com/@favio.vazquezp/deep-learning-made-easy-with-deep-cognition-403fbe445351