閱讀661 返回首頁    go 阿裏雲 go 技術社區[雲棲]


《TensorFlow技術解析與實戰》——第1章 人工智能概述 1.3深度學習的入門方法

本節書摘來自異步社區《TensorFlow技術解析與實戰》一書中的第1章,第1.3節,作者李嘉璿,更多章節內容可以訪問雲棲社區“異步社區”公眾號查看

第1章 人工智能概述

1.3 深度學習的入門方法

要想入門深度學習,需要兩個工具,即算法知識和大量的數據,外加一台計算機,如果有GPU就更好了,但是因為許多入門初學者的條件有限,沒有GPU也可以,本書的許多講解都是基於Mac筆記本完成的。

我把深度學習的入門過程整理成圖1-6所示的7個步驟。

1

圖1-6

下麵就來詳細介紹一下這7個步驟。

1.學習或者回憶一些數學知識

因為計算機能做的就隻是計算,所以人工智能更多地來說還是數學問題[4]。我們的目標是訓練出一個模型,用這個模型去進行一係列的預測。於是,我們將訓練過程涉及的過程抽象成數學函數:首先,需要定義一個網絡結構,相當於定義一種線性非線性函數;接著,設定一個優化目標,也就是定義一種損失函數(loss function)。

而訓練的過程,就是求解最優解及次優解的過程。在這個過程中,我們需要掌握基本的概率統計、高等數學、線性代數等知識,如果學過就最好,沒學過也沒關係,僅僅知道原理和過程即可,有興趣的讀者可以涉獵一些推導證明。

2.掌握經典機器學習理論與基本算法

這些基本算法包括支持向量機、邏輯回歸、決策樹、樸素貝葉斯分類器、隨機森林、聚類算法、協同過濾、關聯性分析、人工神經網絡和BP算法、PCA、過擬合與正則化等。[5]

在本書“實戰篇”的第8章到第13章的例子中也有貫穿這些算法知識,保證讀者可以用它寫出一個小的TensorFlow程序。

3.掌握一種編程工具(語言)

Python語言是一種解釋型、麵向對象、動態數據類型的高級程序設計語言。Python是很多新入門的程序員的入門編程語言,也是很多老程序員後來必須掌握的編程語言。我們需要重點掌握使用線性代數庫和矩陣的操作,尤其是Numpy、Pandas第三方庫,也要多試試機器學習的庫,如sklearn,做一些SVM及邏輯回歸的練習。這對直接上手寫TensorFlow程序大有裨益。

有些工業及學術領域的讀者還可能擅長MATLAB或R,其實現算法的思想和Python也很類似。

同時考慮到許多讀者是使用C++、Java、Go語言的,TensorFlow還提供了和Python“平行語料庫”的接口。雖然本書是主要是基於Python講解的,對於其他語言的原理和應用API也都非常類似,讀者把基礎掌握後,隻需要花很短的時間就能使用自己擅長的語言開發。另外對於Java語言的同學,本書第18章會講解TensorFlowOnSpark,第19章會講到TensorFlow的移動端開發。

4.研讀經典論文,關注最新動態和研究成果

一些經典論文是必讀的。例如,要做手寫數字識別,若采用LeNet,要先閱讀一下LeNet的學術論文;要做物體目標檢測的訓練,若選定MSCNN框架,可以先讀MSCNN相關的論文。那麼,論文從哪裏找呢?那麼多論文應該讀哪篇呢?

下麵以GoogleNet的TensorFlow實現為例。在GitHub[6]上,一般在開頭的描述中就會說明這個模型所依據的論文,如圖1-7所示。

順著這篇論文閱讀,可以大致了解這個網絡的實現原理,對迅速上手應用有很大的作用。同時,我在第6章也會對LeNet、AlexNet、ResNet這幾個常見的網絡進行講解,幫助讀者舉一反三。

2

圖1-7

很多做模式識別的工作者之所以厲害,是因為他們有過很多、很深的論文積累,對模型的設計有很獨到的見解,而他們可能甚至一行代碼也不會寫,而工程(寫代碼)能力在工作中很容易訓練。許多工程方向的軟件工程師,工作模式常常在實現業務邏輯和設計架構係統上,編碼能力很強,但卻缺少論文積累。同時具有這兩種能力的人,正是矽穀一些企業目前青睞的人才。

讀者平時還可以閱讀一些博客、筆記,以及微信公眾號、微博新媒體資訊等,往往一些很流行的新訓練方法和模型會很快在這些媒體上發酵,其訓練神經網絡采用的一些方法可能有很大的啟發性。

5.自己動手訓練神經網絡

接著,就是要選擇一個開源的深度學習框架。選擇框架時主要考慮哪種框架用的人多。人氣旺後,遇到問題很容易找到答案;GitHub上關於這個框架的項目和演示會非常多;相關的論文也會層出不窮;在各個QQ群和微信群的活躍度會高;雜誌、公眾號、微博關注的人也會很多;行業交流和技術峰會討論的話題也多;也能享受到國內外研究信息成果的同步。

目前這個階段,TensorFlow因為背靠穀歌公司這座靠山,再加上擁有龐大的開發者群體,而且采用了稱為“可執行的偽代碼”的Python語言,更新和發版速度著實非常快。目前TensorFlow已經升級到1.1版,在性能方麵也有大幅度提高,而且新出現的Debugger、Serving、XLA特性也是其他框架所不及的。此外,一些外圍的第三方庫(如Keras、TFLearn)也基於它實現了很多成果,並且Keras還得到TensorFlow官方的支持。TensorFlow支持的上層語言也在逐漸增多,對於不同工程背景的人轉入的門檻正在降低。

在GitHub[7]上有一個關於各種框架的比較,從建模能力、接口、模型部署、性能、架構、生態係統、跨平台等7個方麵進行比較,TensorFlow也很占綜合優勢。截至2017年1月,TensorFlow的star數已經超過了其他所有框架的總和,如圖1-8所示。

因此,從目前來看,投身TensorFlow是一個非常好的選擇,掌握TensorFlow在找工作時是一個非常大的加分項。

3

圖1-8

接下來就是找一個深度神經網絡,目前的研究方向主要集中在視覺和語音兩個領域。初學者最好從計算機視覺入手,因為它不像語音等領域需要那麼多的領域知識,結果也比較直觀。例如,用各種網絡模型來訓練手寫數字(MNIST)及圖像分類(CIFAR)的數據集。

6.深入感興趣或者工作相關領域

人工智能目前的應用領域很多,主要是計算機視覺和自然語言處理,以及各種預測等。對於計算機視覺,可以做圖像分類、目標檢測、視頻中的目標檢測等;對於自然語言處理,可以做語音識別、語音合成、對話係統、機器翻譯、文章摘要、情感分析等,還可以結合圖像、視頻和語音,一起發揮價值。

更可以深入某一個行業領域。例如,深入醫學行業領域,做醫學影像的識別;深入淘寶的穿衣領域,做衣服搭配或衣服款型的識別;深入保險業、通信業的客服領域,做對話機器人的智能問答係統;深入智能家居領域,做人機的自然語言交互;等等。

7.在工作中遇到問題,重複前六步

在訓練中,準確率、壞案例(bad case)、識別速度等都是可能遇到的瓶頸。訓練好的模型也不是一成不變的,需要不斷優化,也需要結合具體行業領域和業務進行創新,這時候就要結合最新的科研成果,調整模型,更改模型參數,一步步更好地貼近業務需求。

最後更新:2017-05-24 10:01:28

  上一篇:go  《TensorFlow技術解析與實戰》——第1章 人工智能概述 1.4什麼是TensorFlow
  下一篇:go  OAuth 2.0係列教程(五) 授權