深度神經網路
深度神經網路 (DNN) 是一種在輸入層和輸出層之間具有多個隱藏層的人工神經網路 (ANN)。與淺層 ANN 類似,DNN 可以模擬複雜的非線性關係。
神經網路的主要目的是接收一組輸入,對其進行逐步複雜的計算,並給出輸出以解決現實世界中的問題,例如分類。我們僅限於前饋神經網路。
在深度網路中,我們有輸入、輸出和順序資料的流。
神經網路廣泛應用於監督學習和強化學習問題中。這些網路基於一組相互連線的層。
在深度學習中,隱藏層的數量(大多是非線性的)可以很大;例如大約 1000 層。
深度學習模型比普通的機器學習網路產生更好的結果。
我們主要使用梯度下降法來最佳化網路並最小化損失函式。
我們可以使用**ImageNet**,這是一個包含數百萬數字影像的儲存庫,將資料集分類為貓和狗等類別。除了靜態影像外,深度學習網路越來越多地用於動態影像、時間序列和文字分析。
訓練資料集是深度學習模型的重要組成部分。此外,反向傳播是訓練深度學習模型的主要演算法。
深度學習處理訓練具有複雜輸入輸出轉換的大型神經網路。
深度學習的一個例子是將照片對映到照片中人物的姓名(就像他們在社交網路上做的那樣),以及用短語描述圖片是深度學習的另一個最新應用。
神經網路是具有像 x1、x2、x3……這樣的輸入的函式,這些輸入被轉換成像 z1、z2、z3……這樣的輸出,在兩個(淺層網路)或多箇中間運算中也稱為層(深度網路)。
權重和偏差逐層變化。“w”和“v”是神經網路各層中的權重或突觸。
深度學習的最佳用例是監督學習問題。在這裡,我們有一大組資料輸入和一組期望的輸出。
在這裡,我們應用反向傳播演算法來獲得正確的輸出預測。
深度學習最基本的資料集是 MNIST,這是一個手寫數字資料集。
我們可以使用 Keras 訓練一個卷積神經網路來對來自此資料集的手寫數字影像進行分類。
神經網路分類器的激發或啟用會產生分數。例如,為了將患者分類為患病和健康,我們考慮身高、體重和體溫、血壓等引數。
高分表示患者患病,低分表示患者健康。
輸出層和隱藏層中的每個節點都有自己的分類器。輸入層接收輸入並將分數傳遞到下一個隱藏層以進行進一步啟用,直到達到輸出。
從左到右向前推進的從輸入到輸出的過程稱為**前向傳播**。
神經網路中的信用分配路徑 (CAP) 是一系列從輸入到輸出的轉換。CAP闡述了輸入和輸出之間可能存在的因果關係。
給定前饋神經網路的 CAP 深度或 CAP 深度是隱藏層的數量加一,因為包含輸出層。對於迴圈神經網路,訊號可能多次透過一層,因此 CAP 深度可能無限大。
深層網路和淺層網路
沒有明確的深度閾值來區分淺層學習和深度學習;但大多數人認為,對於具有多個非線性層的深度學習,CAP 必須大於二。
神經網路中的基本節點是一個感知器,它模擬生物神經網路中的神經元。然後我們有多層感知器或 MLP。每組輸入都由一組權重和偏差進行修改;每條邊都有一個唯一的權重,每個節點都有一個唯一的偏差。
神經網路的預測**準確性**取決於其**權重和偏差**。
提高神經網路準確性的過程稱為**訓練**。前向傳播網路的輸出與已知正確的那個值進行比較。
**代價函式或損失函式**是生成的輸出和實際輸出之間的差值。
訓練的目的是使數百萬個訓練樣本的訓練成本儘可能小。為此,網路會調整權重和偏差,直到預測與正確的輸出匹配。
訓練良好後,神經網路每次都有可能做出準確的預測。
當模式變得複雜,並且您希望計算機識別它們時,您必須使用神經網路。在這種複雜的模式場景中,神經網路優於所有其他競爭演算法。
現在有 GPU 可以比以往更快地訓練它們。深度神經網路正在徹底改變人工智慧領域。
事實證明,計算機擅長執行重複計算和遵循詳細的指令,但不擅長識別複雜模式。
如果存在簡單模式識別的難題,支援向量機 (SVM) 或邏輯迴歸分類器可以很好地完成這項工作,但是隨著模式複雜性的增加,別無選擇,只能使用深度神經網路。
因此,對於像人臉這樣複雜的模式,淺層神經網路會失敗,別無選擇,只能使用具有更多層數的深度神經網路。深度網路能夠透過將複雜的模式分解成更簡單的模式來完成其工作。例如,人臉;深度網路將使用邊緣來檢測嘴唇、鼻子、眼睛、耳朵等部件,然後將這些部件重新組合在一起以形成人臉。
正確預測的準確性已變得如此精確,以至於最近在谷歌模式識別挑戰賽中,深度網路擊敗了人類。
這種分層感知器網路的想法已經存在一段時間了;在這個領域,深度網路模擬人腦。但這一個缺點是它們需要很長時間來訓練,這是一個硬體限制。
然而,最近的高效能 GPU 能夠在一週內訓練這些深度網路;而快速的 CPU 可能需要數週甚至數月才能完成同樣的工作。
選擇深度網路
如何選擇深度網路?我們必須確定我們是在構建分類器,還是試圖在資料中查詢模式,以及我們是否將使用無監督學習。為了從一組未標記的資料中提取模式,我們使用受限玻爾茲曼機或自動編碼器。
選擇深度網路時,請考慮以下幾點:
對於文字處理、情感分析、解析和命名實體識別,我們使用迴圈網路或遞迴神經張量網路或 RNTN;
對於在字元級別執行的任何語言模型,我們使用迴圈網路。
對於影像識別,我們使用深度信念網路 DBN 或卷積網路。
對於物體識別,我們使用 RNTN 或卷積網路。
對於語音識別,我們使用迴圈網路。
一般來說,深度信念網路和具有修正線性單元或 RELU 的多層感知器都是分類的良好選擇。
對於時間序列分析,始終建議使用迴圈網路。
神經網路已經存在了 50 多年;但直到現在才崛起。原因是它們很難訓練;當我們嘗試使用稱為反向傳播的方法來訓練它們時,我們會遇到稱為梯度消失或梯度爆炸的問題。發生這種情況時,訓練時間會更長,準確性會下降。訓練資料集時,我們不斷計算代價函式,它是預測輸出與一組標記訓練資料的實際輸出之間的差值。然後透過調整權重和偏差值直到獲得最低值來最小化代價函式。訓練過程使用梯度,它是代價相對於權重或偏差值變化的變化率。
受限玻爾茲曼機或自動編碼器 - RBM
2006 年,在解決梯度消失問題方面取得了突破。Geoff Hinton 設計了一種新穎的策略,從而導致了**受限玻爾茲曼機 - RBM**(一種淺層兩層網路)的開發。
第一層是**可見層**,第二層是**隱藏層**。可見層中的每個節點都連線到隱藏層中的每個節點。該網路被稱為受限網路,因為不允許同一層內的兩層共享連線。
自動編碼器是將輸入資料編碼為向量的網路。它們建立原始資料的隱藏或壓縮表示。這些向量在降維中很有用;該向量將原始資料壓縮成更少的基本維度。自動編碼器與解碼器配對,允許根據其隱藏表示重建輸入資料。
受限玻爾茲曼機(RBM)在數學上等同於一個雙向翻譯器。前向傳播接收輸入並將其轉換為一組編碼輸入的數字。與此同時,反向傳播接收這組數字並將其轉換回重建的輸入。訓練良好的網路能夠以高精度進行反向傳播。
在這兩個步驟中,權重和偏差都起著至關重要的作用;它們幫助RBM解碼輸入之間的相互關係,並確定哪些輸入對於檢測模式至關重要。透過前向和反向傳播,RBM會使用不同的權重和偏差進行訓練,以重建輸入,直到輸入和重建儘可能接近。RBM的一個有趣方面是資料不需要標記。這對於照片、影片、語音和感測器資料等真實世界的資料集非常重要,因為這些資料集往往是未標記的。RBM無需人工手動標記資料,而是自動對資料進行分類;透過適當調整權重和偏差,RBM能夠提取重要特徵並重建輸入。RBM屬於特徵提取神經網路家族的一部分,這類網路旨在識別資料中固有的模式。它們也被稱為自動編碼器,因為它們必須編碼自己的結構。
深度信念網路 - DBNs
深度信念網路 (DBN) 是透過組合RBM並引入一種巧妙的訓練方法而形成的。我們有一個新的模型最終解決了梯度消失的問題。Geoff Hinton發明了RBM和深度信念網路,作為反向傳播的替代方案。
DBN在結構上類似於多層感知器 (MLP),但在訓練方面卻大相徑庭。正是這種訓練使得DBN能夠勝過其淺層網路。
DBN可以被視覺化為一堆RBM,其中一個RBM的隱藏層是上面RBM的可見層。第一個RBM被訓練以儘可能準確地重建其輸入。
第一個RBM的隱藏層被作為第二個RBM的可見層,第二個RBM使用第一個RBM的輸出進行訓練。這個過程會迭代進行,直到網路中的每一層都被訓練。
在DBN中,每個RBM都學習整個輸入。DBN透過連續微調整個輸入來全域性工作,隨著模型緩慢改進,就像相機鏡頭緩慢聚焦影像一樣。一堆RBM的效能優於單個RBM,就像多層感知器MLP優於單個感知器一樣。
在這個階段,RBM已經檢測到資料中固有的模式,但沒有任何名稱或標籤。為了完成DBN的訓練,我們必須為這些模式引入標籤並使用監督學習來微調網路。
我們需要一組非常小的標記樣本,以便將特徵和模式與名稱關聯起來。這組小的標記資料集用於訓練。與原始資料集相比,這組標記資料可以非常小。
權重和偏差會發生輕微變化,導致網路對模式的感知發生微小變化,並且總精度通常會略微提高。
透過使用GPU,可以在合理的時間內完成訓練,並且與淺層網路相比,可以獲得非常準確的結果,我們也看到了梯度消失問題的解決方案。
生成對抗網路 - GANs
生成對抗網路是深度神經網路,包含兩個網路,它們相互對抗,因此得名“對抗”。
GANs在2014年由蒙特利爾大學的研究人員發表的一篇論文中提出。Facebook的AI專家Yann LeCun在談到GANs時,稱對抗訓練是“過去10年機器學習中最有趣的想法”。
GANs的潛力巨大,因為網路可以學習模擬任何資料分佈。GANs可以被訓練來建立與我們自己的世界驚人相似的平行世界,無論是在影像、音樂、語音還是散文領域。它們在某種程度上是機器人藝術家,它們的輸出令人印象深刻。
在GAN中,一個神經網路稱為生成器,它生成新的資料例項,而另一個網路稱為判別器,它評估這些例項的真實性。
假設我們正在嘗試生成類似於MNIST資料集(取自現實世界)中發現的手寫數字。當判別器看到來自真實MNIST資料集的例項時,它的工作是將其識別為真實的。
現在考慮GAN的以下步驟:
生成器網路以隨機數的形式接收輸入並返回影像。
生成的影像與來自實際資料集的一系列影像一起作為輸入提供給判別器網路。
判別器接收真實影像和偽造影像,並返回機率(0到1之間的數字),其中1代表真實預測,0代表偽造。
所以你有一個雙重反饋迴圈:
判別器與我們已知的影像的真實情況處於反饋迴圈中。
生成器與判別器處於反饋迴圈中。
迴圈神經網路 - RNNs
RNN是資料可以向任何方向流動的神經網路。這些網路用於語言建模或自然語言處理 (NLP) 等應用。
RNN的基礎概念是利用順序資訊。在普通的神經網路中,假設所有輸入和輸出都是相互獨立的。如果我們想預測句子中的下一個詞,我們必須知道它前面的詞是什麼。
RNN被稱為迴圈網路,因為它們對序列的每個元素重複相同的任務,輸出基於之前的計算。因此,可以說RNN具有“記憶”,可以捕獲之前計算的資訊。理論上,RNN可以使用非常長序列中的資訊,但實際上,它們只能回溯幾步。
長短期記憶網路 (LSTM) 是最常用的RNN。
與卷積神經網路一起,RNN已被用作模型的一部分,用於生成未標記影像的描述。這似乎運作得非常好,令人驚歎。
卷積深度神經網路 - CNNs
如果我們增加神經網路的層數以使其更深,則會增加網路的複雜性,並允許我們對更復雜的函式進行建模。但是,權重和偏差的數量將呈指數級增加。事實上,對於普通的神經網路來說,學習這種困難的問題可能變得不可能。這導致了一種解決方案,即卷積神經網路。
CNN廣泛應用於計算機視覺;也已應用於聲學建模以進行自動語音識別。
卷積神經網路背後的思想是“移動濾波器”的思想,它穿過影像。這個移動濾波器或卷積應用於節點的某個鄰域,例如畫素,其中應用的濾波器是節點值的0.5倍。
著名的研究人員Yann LeCun開創了卷積神經網路。Facebook的面部識別軟體使用這些網路。CNN一直是機器視覺專案的首選解決方案。卷積網路有很多層。在2015年的ImageNet挑戰賽中,一臺機器在物體識別方面戰勝了人類。
簡而言之,卷積神經網路 (CNN) 是多層神經網路。層數有時多達17層或更多,並假設輸入資料為影像。
CNN大大減少了需要調整的引數數量。因此,CNN有效地處理原始影像的高維度。