不懂代碼也想學會深度學習?這本書告訴你真的很簡單

我們暫且不管深度學習是什麼,深度學習有多強大。作爲信息行業的傑出的工程師,首先需要知道深度學習真正帶來的是什麼?未來,深度學習對社會以及各個行業會帶來什麼影響?擁有大量深度學習人才的中國企業將會在世界上充當何種角色?深度學習又會給我們帶來什麼樣的機遇與挑戰?

 “路漫漫其修遠兮”。深度學習需要大量的數據和龐大的計算資源,而這就將我們的視線帶入 GPU 的世界。如果時至今日,你還以爲英偉達(NVIDIA)只是一家賣顯卡的公司,那就顯得有點孤陋寡聞了。因爲如今的特斯拉自動駕駛系統 Autopilot 2.0、行車預警系統、無人採集系統、智能物流系統等,到處都充斥着 NVIDIA 的身影。正是因爲深度學習,NVIDIA纔會成爲新一輪人工智能公司中的獨角獸。

 深度學習在各個領域帶來的變革纔剛剛開始,如黎明破曉一樣讓人心潮澎湃。近期關於無人駕駛、輔助駕駛、智能音箱的新聞越來越多,無論大公司,還是新創公司都在談人工智能,爲什麼呢?因爲深度學習極大地降低了技術的門檻。只要擁有充足的數據,加點硬件成本和時間成本,就可以利用深度學習這一技術實現各種方案,這是新創公司實現彎道超車的機會。

 在深度學習領域最權威的書是Ian Goodfellow 、Yoshua Bengio和Aaron Courville 編寫的《深度學習》。但與深度學習相關,且將知識原理與案例實踐相結合的書籍在市場上並不多見。《深度學習原理與實踐》的創作初衷就是幫助更多的人瞭解深度學習,並投身於人工智能領域。

《深度學習原理與實踐》

陳仲銘,彭凌西 著

一年多以來,作者業餘時間幾乎都用於寫作、編寫示例代碼,也曾經想過放棄,但都堅持了下來。成功不就是一次次堅持而成就的嗎?人生,多多少少也有些夢想,值得我們去付出!

《深度學習原理與實踐》學習建議

我們努力提高自己的能力、學習深度學習和人工智能,並不是爲了與別人一決高下,而是超越自己。成功的路上會有很多建議,而針對本書的學習,有下面幾條建議。

學習Python基礎知識。貫穿全書中的代碼由Python編程語言編寫而成,但是本書並沒有對Python代碼進行過多的解釋,而是圍繞和專注於講解深度學習的原理和思想。因此希望讀者先自行安裝Python 3,瞭解Python編程語言的特性和基本使用方法,有一定的瞭解後即可直接使用本書的示例代碼,這對於理解深度學習會有所幫助。

實踐是檢驗真理的唯一標準。每一行代碼和函數都是作者親自實現過的,儘管不同服務器和不同版本的框架會存在一些差異,也可能讀者看到本書代碼時已經稍顯過時,但我仍然希望讀者親自去嘗試實現書中的代碼,畢竟“紙上得來終覺淺”,實踐纔是檢驗真理的唯一標準。

不要糾結於框架。深度學習好比“菜譜”,數據就是“肉和青菜”,深度學習框架就是“炒菜的鍋和鏟”。誰說紅燒土豆一定要用“Caffe”牌的鍋,香煎蓮藕一定要用“Google”牌的鏟?我們只要學會菜譜,研究“鍋”和“鏟”的屬性並多加實踐練習,就可以炒出一盤香噴噴的菜。希望讀者不要糾結於本書所用的是Keras框架,還是Tensorflow框架,而是將所有的目光都聚焦在深度學習的原理和案例實踐上。

多閱讀相關文獻。讀傑出的書籍,有如和傑出的人物促膝交談。深度學習的知識日新月異,在知識更新迭代迅速的時代,我們需要掌握知識的本質內容,而掌握本質內容的最好方法之一就是閱讀與知識點相關的論文文獻,去理解與思考爲什麼要這樣,這樣做的優缺點是什麼。多閱讀相關的文獻,我們就會更好地把握住深度學習知識的本質。

《深度學習原理與實踐》特色

大量圖例,簡單易懂。作者親自繪製了大量插圖,力求還原深度學習的算法思想,分解和剖析晦澀的算法,用圖例來表示複雜的問題。生動的圖例也能給讀者帶來閱讀樂趣,快樂地學習算法知識,體會深度學習的算法本質。

簡化公式,生動比喻。深度學習和機器學習類的書中通常會有大量複雜冗長的算法公式,爲了避免出現讀者讀不懂的情況,本書儘可能地統一了公式和符號,簡化相關公式,並加以生動的比喻進行解析。在啓發讀者的同時,鍛鍊讀者分析問題和解決問題的能力。

算法原理,代碼實現。在介紹深度學習及相關算法的原理時,不僅給出了對應的公式,還給出了實現和求解公式的代碼,讓讀者明確該算法的作用、輸入和輸出。原理與代碼相結合,使得讀者對深度學習的算法實現更加具有親切感。

深入淺出,精心剖析。理解深度學習需要一定的機器學習知識,本書在第1章介紹了深度學習與機器學習的關係,並簡要介紹了機器學習的內容。在內容安排上,每章依次介紹模型框架的應用場景、結構和使用方式,最後通過真實的案例去全面分析該模型結構。目的是讓讀者可以抓住深度學習的本質。

入門實踐,案例重現。每一章最後的真實案例不是直接堆砌代碼,而是講解使用該算法模型的原因和好處。從簡單的背景知識出發,使用前文講解過的深度學習知識實現一個實際的工程項目。實踐可以用於及時檢驗讀者對所學知識的掌握程度,爲讀者奠定深度學習的實踐基礎。

什麼是深度學習

2016 年年初,由 Google DeepMind 開發的AlphaGo在圍棋大戰中打敗了韓國的圍棋大師李世石。就如同 1997 年 IBM 的“深藍”計算機戰勝了世界首席國際象棋大師卡斯帕羅夫一樣,媒體開始鋪天蓋地般地宣傳人工智能時代的來臨。同時,資本開始追捧與人工智能產業相關的公司,一時間收購併購人工智能企業的狂潮席捲而來。

在描述 DeepMind 勝利的時候,很多媒體都會把人工智能(Artificial Intelligence)、機器學習(Machine Learning)和深度學習(Deep Learning)混爲一談。雖然從嚴格定義上來說,DeepMind 在 AlphaGo 程序中對上述3種技術都有所使用,但其真正使用得更多的是深度學習。

下面來了解人工智能、機器學習、深度學習這三者之間的關係。如圖1所示,人工智能包含着機器學習,而深度學習則是機器學習的重要分支之一,它們三者是包含與被包含的關係。

從20世紀50年代,人工智能第一次提出至今,人工智能的問題基本上已經定型,大致分爲6個具體的方向:問題求解、知識推理、規劃問題、不確定性推理、通信感知與行動、學習問題。而機器學習主要有 3 個方向:分類、迴歸、關聯性分析。最後到深度學習則是對機器學習中的神經網絡進行深度拓展。

圖 1  深度學習、機器學習、人工智能之間關係

人工智能的概念從 1950 年左右開始被提出,而機器學習則是在 1980 年左右被提出的,最近熱門的深度學習則是在 2010 年左右被提出的。

人工智能實際上包含了我們經常使用到的算法,例如在問題求解方面,最經典的算法是 A* 搜索算法和 a-b 剪枝算法,又如人工智能中的學習問題則包含了機器學習的大部分內容。現階段已經有很多資料介紹機器學習相關的算法,較爲著名的機器學習十大算法有:決策樹、支持向量機 SVM、隨機森林算法、邏輯迴歸、樸素貝葉斯、KNN 算法、K-means 算法、Adaboost 算法、Apriori 算法、PageRank 算法。

圖 2  深度神經網絡示例圖

深度學習的定義在過去的十年一直在不斷變化,其中大部分學者認爲深度學習應該“具有兩層以上的神經網絡”,圖2所示爲深度學習的神經網絡示例,其特點是:

· 具有更多的神經元;

· 具有更復雜的網絡連接方式;

· 擁有驚人的計算量;

· 能夠自動提取數據高維特徵。

本文介紹的深度網絡主要是指具有深層的神經網絡,包括:人工神經網絡(ANN)、卷積神經網絡(CNN)、循環神經網絡(RNN)

機器學習的一般方法

機器學習按照方法主要可以分爲兩大類:監督學習和無監督學習。其中監督學習主要由分類和迴歸等問題組成,無監督學習主要由聚類和關聯分析等問題組成。深度學習則屬於監督學習當中的一種

機器學習中的監督學習是指使用算法對結構化或者非結構化的有標註的數據進行解析,從數據中學習,獲取數據中特定的結構模型,然後使用這些結構或者模型來對未知的新數據進行預測。通俗來說,監督學習就是通過對數據進行分析,找到數據的表達模型,有了這個模型就可以對新輸入的數據套用該模型來做決策。

在訓練階段(對數據進行分析的階段),首先需要根據原始的數據進行特徵提取,這個過程叫作特徵工程。得到特徵後,我們可以使用決策樹、隨機森林等模型算法去分析數據之間的特徵或者關係,最終得到關於輸入數據的模型(Model)。在預測階段,同樣按照特徵工程的方法提取了數據後,使用訓練階段得到的模型對特徵向量進行預測,最終得到所屬的標籤(Labels)。

圖 3  監督學習一般方法

機器學習算法中的每一種不同的模型都有其自身的規則去解釋輸入的數,然後對新輸入的數據進行預測和判斷。例如決策樹的模型,就是構建一個樹形結構,每一個節點代表一種數據的類型,每一個葉子節點則代表一種類別。線性迴歸模型則利用線性迴歸方程創建一組參數來表示輸入的數據之間的關係,而神經網絡則有一組權重參數向量來代表節點之間的關係。

到目前爲止,我們有各種各樣的機器學習算法可以對數據進行建模。通過算法對數據進行建模後,我們可以學習到數據之間的關聯性,提取數據的高維特徵,並且訓練完的新模型可以對相類似的新數據進行預測。可現實情況真的會這麼理想嗎?圖3中對應的每一個步驟所花費的時間是相同的嗎?

機器學習領域當中最出彩的莫過於計算機視覺,這裏我們暫且拋開計算機視覺的圖像獲取需要通過硬件編碼而獲取彩色或者灰度圖像等一系列硬件的工作。舉一個例子,如果我們想要識別道路上的停車牌,首先不是直接對圖片進行滑動窗口,而是先進行邊緣檢測、中值濾波、高斯濾波等圖像預處理操作,待得到工程師們認爲可以使用的圖像之後,纔開始對圖像進行分析,產生一系列的物體候選框。

然後通過圖像檢測的算法對各個窗口進行特徵檢測,通過機器學習的算法提取每個窗口的特徵,或者可以通過數據挖掘的算法對數據進行壓縮,從而提取到更加抽象的特徵數據信息。接着我們需要定義分類器,對停車牌中的字母進行判斷,例如可以使用簡單的 SVM 分類器對“STOP”4 個字母的抽象信息進行分類。到此爲止,算是能夠使用機器學習的算法去感知圖像,識別輸入的圖像是否爲停車牌。

雖然上面的圖像分類結果基本可用,但是還遠遠達不到全自動化識別的目的。當遇到雨雪天氣時,馬路一旁的標誌牌已經不是那麼清晰可見,抑或標誌牌被樹木遮擋時,標誌牌的特徵也會改變。這時傳統機器學習算法就不是那麼有效了,這也是一直困擾學者們的一大難題,因此各種旋轉不變性、光照不變性算法相繼被提出,但始終沒有某一種算法特別奏效。

隨着時間的推移,深度學習迅速地改變了這一切。

選擇深度學習的原因

在深度學習出現之前,機器學習的工程師們往往需要花費數天、數週,甚至數月的時間去收集數據,然後對數據進行篩選,嘗試各種不同的特徵提取方法對數據進行提取,或者結合幾種不同的特徵對數據進行分類和預測。作者曾經使用傳統機器學習檢測數據時,就花費了大量的時間嘗試使用各種不同的算法、特徵提取方式和分類器,對數據進行特徵提取。經過大量的嘗試,才找到滿足業務要求的特定方法模型。

隨着深度學習的爆發,最新的深度學習算法已經遠遠超越了傳統的機器學習算法對於數據的預測和分類精度。深度學習不需要我們自己去提取特徵,而是自動地對數據進行篩選,自動地提取數據高維特徵。深度學習的一般方法(見圖4)與傳統機器學習中的監督學習一般方法(見圖3)相比,少了特徵工程,節約了工程師們大量工作時間。

圖 4 深度學習一般方法

選擇深度學習,一方面因爲它節省工程師們的時間,降低工程師的工作量,提高工作效率,從而讓工程師們把更多的時間和精力投入在更有價值的研究方向上;另一方面是深度學習的效果,已經在衆多領域開始超越傳統的機器學習算法,甚至在某些領域能夠獲得比人類預測的更好的效果;此外,深度學習還可以與大數據無縫結合,輸入龐大的數據集進行大數據端到端的學習過程,這種大道至簡的理念吸引着無數的研究者。

深度學習已經不僅僅是計算機科學領域的問題,它結合了更多關於神經網絡的問題,涉及生物學、神經科學等衆多領域,仍有非常巨大的發展空間。深度學習就像一座寶礦,我們看到的或許只是冰山一角……

深度學習前的思考

聽上去顯得有點高端大氣,但想要正確開啓深度學習之門,最好的方法是先回答下面 4 個問題:

· 需要給深度網絡模型輸入什麼樣的數據?

· 想要從深度網絡模型中提取什麼樣類型的數據?

· 選擇哪種深度網絡模型更加適用於手頭上的數據?

· 根據這個深度網絡模型我們希望從新的數據得到一個什麼樣的結果?

第一個問題是給模型輸入什麼樣的數據,回答這個問題的時候我們就大概知道應該選擇什麼樣的數據作爲樣本,樣本的形式是圖片、文檔,還是語音。明確了要從模型中提取什麼類型的數據體後,我們就會更加清晰地定義網絡模型的損失函數。

第三個問題可以讓我們進一步理清脈絡,將問題落實到神經網絡的細節中,例如卷積神經網絡 CNN 中大概是用多少層的網絡,循環神經網絡 RNN 中應該定義多少層循環和時間步等。最後一個問題將更加有利於我們把深度學習的算法與模型結合到工程項目當中,真正幫助我們解決實際問題。

如果我們能夠很好地回答上述這 4 個問題,表明我們對所遇到的問題有了充分的理解和分析,也就能夠針對特定的任務(數據和場景)去尋找到合適的工作流程或者工作方式,快速建立屬於自己的深度學習模型了!

《深度學習原理與實踐》

陳仲銘,彭凌西 著

本書系統全面、循序漸進地介紹了深度學習的各方面知識,包括技術經驗、使用技巧和實踐案例。本書詳細介紹了目前深度學習相關的常用網絡模型(ANN、DNN、CNN、RNN),以及不同網絡模型的算法原理和核心思想。本書利用大量的實例代碼對網絡模型進行了分析,這些案例能夠加深讀者對網絡模型的認識。

此外,本書還提供完整的進階內容和對應案例,讓讀者全面深入地瞭解深度學習的知識和技巧,達到學以致用的目的。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章