你不得不瞭解的深度學習知識(一)

你不得不瞭解的深度學習知識(一)

1 深度學習

  • 深度學習是機器學習的一個分支(最重要的分支)
  • 機器學習是人工智能的一個分支

(1)大白話解釋深度學習

假設深度學習要處理的信息是“水流”,而處理數據的深度學習網絡是一個由管道和閥門組成的巨大水管網絡。網絡的入口是若干管道開口,網絡的出口也是若干管道開口。這個水管網絡有許多層,每一層由許多個可以控制水流流向與流量的調節閥。根據不同任務的需要,水管網絡的層數、每層的調節閥數量可以有不同的變化組合。對複雜任務來說,調節閥的總數可以成千上萬甚至更多。水管網絡中,每一層的每個調節閥都通過水管與下一層的所有調節閥連接起來,組成一個從前到後,逐層完全連通的水流系統。

那麼,計算機該如何使用這個龐大的水管網絡來學習識字呢?

比如,當計算機看到一張寫有“田”字的圖片,就簡單將組成這張圖片的所有數字(在計算機裏,圖片的每個顏色點都是用“0”和“1”組成的數字來表示的)全都變成信息的水流,從入口灌進水管網絡。

我們預先在水管網絡的每個出口都插一塊字牌,對應於每一個我們想讓計算機認識的漢字。這時,因爲輸入的是“田”這個漢字,等水流流過整個水管網絡,計算機就會跑到管道出口位置去看一看,是不是標記由“田”字的管道出口流出來的水流最多。如果是這樣,就說明這個管道網絡符合要求。如果不是這樣,就調節水管網絡裏的每一個流量調節閥,讓“田”字出口“流出”的水最多。

這下,計算機要忙一陣了,要調節那麼多閥門!好在計算機的速度快,暴力的計算加上算法的優化,總是可以很快給出一個解決方案,調好所有閥門,讓出口處的流量符合要求。

下一步,學習“申”字時,我們就用類似的方法,把每一張寫有“申”字的圖片變成一大堆數字組成的水流,灌進水管網絡,看一看,是不是寫有“申”字的那個管道出口流水最多,如果不是,我們還得再調整所有的閥門。這一次,要既保證剛纔學過的“田”字不受影響,也要保證新的“申”字可以被正確處理。

如此反覆進行,知道所有漢字對應的水流都可以按照期望的方式流過整個水管網絡。這時,我們就說,這個水管網絡是一個訓練好的深度學習模型了。當大量漢字被這個管道網絡處理,所有閥門都調節到位後,整套水管網絡就可以用來識別漢字了。這時,我們可以把調節好的所有閥門都“焊死”,靜候新的水流到來。

與訓練時做的事情類似,未知的圖片會被計算機轉變成數據的水流,灌入訓練好的水管網絡。這時,計算機只要觀察一下,哪個出水口流出來的水流最多,這張圖片寫的就是哪個字。

(2)傳統機器學習VS深度學習

a.傳統機器學習和深度學習的相似點

 在數據準備和預處理方法,兩者是相似的。都可能對數據進行一些操作:數據清洗、數據標籤、歸一化、去噪、降維。

b.傳統機器學習和深度學習的核心區別

傳統機器學習的特徵提取主要依賴人工,針對特定簡單任務的時候人工提取特徵會簡單有效,但是並不能通用。
深度學習的特徵提取並不依靠人工,而是機器自動提取的。這也是爲什麼大家都說深度學習的可解釋性很差,因爲有時候深度學習雖然能有好的表現,但是我們並不知道他的原理是什麼。

(3)深度學習的優缺點

(4)四種典型的深度學習算法

a.卷積神經網絡-CNN

CNN的價值

  • 能夠大數據量的圖片有效的降維成小數據量(並不影響結果)
  • 能夠保留圖片的特徵,類似人類的視覺原理

CNN的基本原理

  • 卷積層:主要作用是保留圖片的特徵
  • 池化層:主要作用是把數據降維,可以有效的避免過擬合
  • 全連接層:根據不同人物輸出我們想要的結果

CNN的實際應用

  • 圖片分類、檢索
  • 目標定位監測
  • 目標分割
  • 人臉識別
  • 骨骼識別

b.循環神經網絡-RNN

RNN 是一種能有效的處理序列數據的算法。比如:文章內容、語音音頻、股票價格走勢…

之所以他能處理序列數據,是因爲在序列中前面的輸入也會影響到後面的輸出,相當於有了“記憶功能”。但是 RNN 存在嚴重的短期記憶問題,長期的數據影響很小(哪怕他是重要的信息)。

於是基於 RNN 出現了 LSTM 和 GRU 等變種算法。這些變種算法主要有幾個特點:

  • 長期信息可以有效的保留
  • 挑選重要信息保留,不重要的信息會選擇遺忘

RNN 幾個典型的應用如下:

  • 文本生成
  • 語音識別
  • 機器翻譯
  • 生成圖像描述
  • 視頻標記

c.生成網絡-GAN

假設一個城市治安混亂,很快,這個城市裏就會出現無數的小偷。在這些小偷中,有的可能是盜竊高手,有的可能毫無技術可言。假如這個城市開始整飭其治安,突然開展一場打擊犯罪的“運動”,警察們開始恢復城市中的巡邏,很快,一批“學藝不精”的小偷就被捉住了。之所以捉住的是那些沒有技術含量的小偷,是因爲警察們的技術也不行了,在捉住一批低端小偷後,城市的治安水平變得怎樣倒還不好說,但很明顯,城市裏小偷們的平均水平已經大大提高了。

警察們開始繼續訓練自己的破案技術,開始抓住那些越來越狡猾的小偷。隨着這些職業慣犯們的落網,警察們也練就了特別的本事,他們能很快能從一羣人中發現可疑人員,於是上前盤查,並最終逮捕嫌犯;小偷們的日子也不好過了,因爲警察們的水平大大提高,如果還想以前那樣表現得鬼鬼祟祟,那麼很快就會被警察捉住。爲了避免被捕,小偷們努力表現得不那麼“可疑”,而魔高一尺、道高一丈,警察也在不斷提高自己的水平,爭取將小偷和無辜的普通羣衆區分開。隨着警察和小偷之間的這種“交流”與“切磋”,小偷們都變得非常謹慎,他們有着極高的偷竊技巧,表現得跟普通羣衆一模一樣,而警察們都練就了“火眼金睛”,一旦發現可疑人員,就能馬上發現並及時控制——最終,我們同時得到了最強的小偷和最強的警察。

d.深度強化學習-RL

強化學習算法的思路非常簡單,以遊戲爲例,如果在遊戲中採取某種策略可以取得較高的得分,那麼就進一步“強化”這種策略,以期繼續取得較好的結果。這種策略與日常生活中的各種“績效獎勵”非常類似。我們平時也常常用這樣的策略來提高自己的遊戲水平。

在 Flappy bird 這個遊戲中,我們需要簡單的點擊操作來控制小鳥,躲過各種水管,飛的越遠越好,因爲飛的越遠就能獲得更高的積分獎勵。

這就是一個典型的強化學習場景:

  • 機器需要有一個明確的小鳥角色—代理
  • 需要控制小鳥飛的更遠—目標
  • 整個遊戲過程需要躲避各種水管—環境
  • 躲避水管的方法是讓小鳥用力飛一下—行動
  • 飛的越遠,就會獲得越多的積分—獎勵

你會發現,強化學習和監督學習、無監督學習 最大的不同就是不需要大量的“數據餵養”。而是通過自己不停的嘗試來學會某些技能。

2 卷積神經網絡 – CNN

卷積神經網絡 – CNN 最擅長的就是圖片的處理。它受到人類視覺神經系統的啓發。

(1)CNN解決了什麼問題?

在 CNN 出現之前,圖像對於人工智能來說是一個難題,有2個原因:

  • a.圖像需要處理的數據量太大,導致成本很高,效率很低
  • b.圖像在數字化的過程中很難保留原有的特徵,導致圖像處理的準確率不高

a.需要處理的數據量太大

圖像是由像素構成的,每個像素又是由顏色構成的。

現在隨隨便便一張圖片都是 1000×1000 像素以上的, 每個像素都有RGB 3個參數來表示顏色信息。

假如我們處理一張 1000×1000 像素的圖片,我們就需要處理3百萬個參數!

1000×1000×3=3,000,000

這麼大量的數據處理起來是非常消耗資源的,而且這只是一張不算太大的圖片!

卷積神經網絡 – CNN 解決的第一個問題就是“將複雜問題簡化”,把大量參數降維成少量參數,再做處理。

更重要的是:我們在大部分場景下,降維並不會影響結果。比如1000像素的圖片縮小成200像素,並不影響肉眼認出來圖片中是一隻貓還是一隻狗,機器也是如此。

b.保留圖像特徵

圖片數字化的傳統方式我們簡化一下,就類似下圖的過程:

假如有圓形是1,沒有圓形是0,那麼圓形的位置不同就會產生完全不同的數據表達。但是從視覺的角度來看,圖像的內容(本質)並沒有發生變化,只是位置發生了變化。

所以當我們移動圖像中的物體,用傳統的方式的得出來的參數會差異很大!這是不符合圖像處理的要求的。

而 CNN 解決了這個問題,他用類似視覺的方式保留了圖像的特徵,當圖像做翻轉,旋轉或者變換位置時,它也能有效的識別出來是類似的圖像。

那麼卷積神經網絡是如何實現的呢?在我們瞭解 CNN 原理之前,先來看看人類的視覺原理是什麼?

(2)人類的視覺原理

深度學習的許多研究成果,離不開對大腦認知原理的研究,尤其是視覺原理的研究。

人類的視覺原理如下:從原始信號攝入開始(瞳孔攝入像素 Pixels),接着做初步處理(大腦皮層某些細胞發現邊緣和方向),然後抽象(大腦判定,眼前的物體的形狀,是圓形的),然後進一步抽象(大腦進一步判定該物體是隻氣球)。下面是人腦進行人臉識別的一個示例:

對於不同的物體,人類視覺也是通過這樣逐層分級,來進行認知的:

我們可以看到,在最底層特徵基本上是類似的,就是各種邊緣,越往上,越能提取出此類物體的一些特徵(輪子、眼睛、軀幹等),到最上層,不同的高級特徵最終組合成相應的圖像,從而能夠讓人類準確的區分不同的物體。

(3)卷積神經網絡-CNN的基本原理

典型的CNN由3個部分構成:

  • a.卷積層
  • b.池化層
  • c.全連接層

卷積層負責提取圖像中的局部特徵;池化層用來大幅降低參數量級(降維);全連接層類似傳統神經網絡的部分,用來輸出想要的結果。

a.卷積-提取特徵

卷積層的運算過程如下圖,用一個卷積核掃完整張圖片:

這個過程我們可以理解爲我們使用一個過濾器(卷積核)來過濾圖像的各個小區域,從而得到這些小區域的特徵值。

在具體應用中,往往有多個卷積核,可以認爲,每個卷積核代表了一種圖像模式,如果某個圖像塊與此卷積核卷積出的值大,則認爲此圖像塊十分接近於此卷積核。如果我們設計了6個卷積核,可以理解:我們認爲這個圖像上有6種底層紋理模式,也就是我們用6中基礎模式就能描繪出一副圖像。以下就是25種不同的卷積核的示例:

總結:卷積層的通過卷積核的過濾提取出圖片中局部的特徵,跟上面提到的人類視覺的特徵提取類似。

b.池化層((下采樣)--數據降維,避免過擬合

池化層簡單說就是下采樣,他可以大大降低數據的維度。其過程如下:

上圖中,我們可以看到,原始圖片是20×20的,我們對其進行下采樣,採樣窗口爲10×10,最終將其下采樣成爲一個2×2大小的特徵圖。

總結:池化層相比卷積層可以更有效的降低數據維度,這麼做不但可以大大減少運算量,還可以有效的避免過擬合。

c.全連接層--輸出結果

這個部分就是最後一步了,經過卷積層和池化層處理過的數據輸入到全連接層,得到最終想要的結果。

經過卷積層和池化層降維過的數據,全連接層才能”跑得動”,不然數據量太大,計算成本高,效率低下。

(4)CNN有哪些實際應用?

卷積神經網絡 – CNN 很擅長處理圖像。而視頻是圖像的疊加,所以同樣擅長處理視頻內容。下面給大家列一些比較成熟的應用:

  • 圖像分類、檢索

    圖像分類是比較基礎的應用,可以節省大量的人工成本,將圖像進行有效的分類。對於一些特定領域的圖片,分類的準確率可以達到 95%+,已經算是一個可用性很高的應用了。

  • 目標定位監測

    可以在圖像中定位目標,並確定目標的位置及大小。

  • 目標分割

    簡單理解就是一個像素級的分類。它可以對前景和背景進行像素級的區分、再高級一點還可以識別出目標並且對目標進行分類。

  • 人臉識別

    人臉識別已經是一個非常普及的應用了,在很多領域都有廣泛的應用。

  • 骨骼識別

    骨骼識別是可以識別身體的關鍵骨骼,以及追蹤骨骼的動作。

3 循環神經網絡 – Recurrent Neural Network | RNN

(1)爲什麼需要RNN?獨特價值是什麼?

卷積神經網絡-CNN已經很強大,但爲什麼還需要RNN呢?

卷積神經網絡-CNN和普遍的算法大部分都是輸入和輸出的一一對應,也就是一個輸入得到一個輸出。不同的輸入之間是沒有聯繫的。

但是在某些場景中,一個輸入就不夠了!

爲了填好下面的空,取前面任何一個詞都不合適,我們不但需要知道前面所有的詞,還需要知道詞之間的順序。

這種需要處理「序列數據 – 一串相互依賴的數據流」的場景就需要使用 RNN 來解決了。

典型的集中序列數據:

  • 文章裏的文字內容
  • 語音裏的音頻內容
  • 股票市場中的價格走勢
  • ……

(2)RNN的基本原理

傳統神經網絡的結構比較簡單:輸入層-隱藏層-輸出層。如下圖所示:

RNN 跟傳統神經網絡最大的區別在於每次都會將前一次的輸出結果,帶到下一次的隱藏層中,一起訓練。如下圖所示:

(3)RNN的具體案例

下面用一個具體的案例來看看 RNN 是如何工作的:

假如需要判斷用戶的說話意圖(問天氣、問時間、設置鬧鐘…),用戶說了一句“what time is it?”我們需要先對這句話進行分詞:

然後按照順序輸入 RNN ,我們先將 “what”作爲 RNN 的輸入,得到輸出「01」

然後,我們按照順序,將“time”輸入到 RNN 網絡,得到輸出「02」。

這個過程我們可以看到,輸入 “time” 的時候,前面 “what” 的輸出也產生了影響(隱藏層中有一半是黑色的)。

以此類推,前面所有的輸入都對未來的輸出產生了影響,大家可以看到圓形隱藏層中包含了前面所有的顏色。如下圖所示:

當我們判斷意圖的時候,只需要最後一層的輸出「05」,如下圖所示:

RNN 的缺點也比較明顯

通過上面的例子,我們已經發現,短期的記憶影響較大(如橙色區域),但是長期的記憶影響就很小(如黑色和綠色區域),這就是 RNN 存在的短期記憶問題。

  • RNN 有短期記憶問題,無法處理很長的輸入序列
  • 訓練 RNN 需要投入極大的成本

(4)RNN的優化算法

a.RNN到LSTM–長短期記憶網絡

RNN 是一種死板的邏輯,越晚的輸入影響越大,越早的輸入影響越小,且無法改變這個邏輯。

LSTM 做的最大的改變就是打破了這個死板的邏輯,而改用了一套靈活了邏輯——只保留重要的信息。

簡單說就是:抓重點!

舉個例子,我們先快速的閱讀下面這段話:

當我們快速閱讀完之後,可能只會記住下面幾個重點:

LSTM 類似上面的劃重點,他可以保留較長序列數據中的「重要信息」,忽略不重要的信息。這樣就解決了 RNN 短期記憶的問題。

b.從 LSTM 到 GRU

Gated Recurrent Unit – GRU 是 LSTM 的一個變體。他保留了 LSTM 劃重點,遺忘不重要信息的特點,在long-term 傳播的時候也不會被丟失。

GRU 主要是在 LSTM 的模型上做了一些簡化和調整,在訓練數據集比較大的情況下可以節省很多時間。

(5)RNN的應用和使用場景

只要涉及到序列數據的處理問題,都可以使用到,NLP 就是一個典型的應用場景。

  • 文本生成:類似上面的填空題,給出前後文,然後預測空格中的詞是什麼。

  • 機器翻譯:翻譯工作也是典型的序列問題,詞的順序直接影響了翻譯的結果。

  • 語音識別:根據輸入音頻判斷對應的文字是什麼。

  • 生成圖像描述:類似看圖說話,給一張圖,能夠描述出圖片中的內容。這個往往是 RNN 和 CNN 的結合。

… 未完待續…

發佈了489 篇原創文章 · 獲贊 515 · 訪問量 37萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章