深度學習學習7步驟

老司機的詩和遠方發表於2020-04-06
作者:李嘉璇
連結:https://www.zhihu.com/question/49909565/answer/169949155
來源:知乎
著作權歸作者所有。商業轉載請聯絡作者獲得授權,非商業轉載請註明出處。

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

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

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

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

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

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

在本書“實戰篇”的第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[3]上,一般在開頭的描述中就會說明這個模型所依據的論文,如圖所示。

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

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

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

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

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

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

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

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

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

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

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

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

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

在訓練中,準確率、壞案例(bad case)、識別速度等都是可能遇到的瓶頸。訓練好的模型也不是一成不變的,需要不斷優化,也需要結合具體行業領域和業務進行創新,這時候就要結合最新的科研成果,調整模型,更改模型引數,一步步更好地貼近業務需求。 這裡,一些人擔心人工智慧超越人類還會產生哲學和倫理問題。我認為做這種討論還為時尚早,嚴謹的資料基礎是要突破的主要方向。


相關文章