導航:首頁 > 網路連接 > 全連接的深度前饋神經網路

全連接的深度前饋神經網路

發布時間:2022-11-25 08:04:28

⑴ 前饋神經網路、BP神經網路、卷積神經網路的區別與聯系

一、計算方法不同

1、前饋神經網路:一種最簡單的神經網路,各神經元分層排列。每個神經元只與前一層的神經元相連。接收前一層的輸出,並輸出給下一層.各層間沒有反饋。

2、BP神經網路:是一種按照誤差逆向傳播演算法訓練的多層前饋神經網路。

3、卷積神經網路:包含卷積計算且具有深度結構的前饋神經網路。

二、用途不同

1、前饋神經網路:主要應用包括感知器網路、BP網路和RBF網路。

2、BP神經網路:

(1)函數逼近:用輸入向量和相應的輸出向量訓練一個網路逼近一個函數;

(2)模式識別:用一個待定的輸出向量將它與輸入向量聯系起來;

(3)分類:把輸入向量所定義的合適方式進行分類;

(4)數據壓縮:減少輸出向量維數以便於傳輸或存儲。

3、卷積神經網路:可應用於圖像識別、物體識別等計算機視覺、自然語言處理、物理學和遙感科學等領域。

聯系:

BP神經網路和卷積神經網路都屬於前饋神經網路,三者都屬於人工神經網路。因此,三者原理和結構相同。

三、作用不同

1、前饋神經網路:結構簡單,應用廣泛,能夠以任意精度逼近任意連續函數及平方可積函數.而且可以精確實現任意有限訓練樣本集。

2、BP神經網路:具有很強的非線性映射能力和柔性的網路結構。網路的中間層數、各層的神經元個數可根據具體情況任意設定,並且隨著結構的差異其性能也有所不同。

3、卷積神經網路:具有表徵學習能力,能夠按其階層結構對輸入信息進行平移不變分類。

(1)全連接的深度前饋神經網路擴展閱讀

1、BP神經網路優劣勢

BP神經網路無論在網路理論還是在性能方面已比較成熟。其突出優點就是具有很強的非線性映射能力和柔性的網路結構。網路的中間層數、各層的神經元個數可根據具體情況任意設定,並且隨著結構的差異其性能也有所不同。但是BP神經網路也存在以下的一些主要缺陷。

①學習速度慢,即使是一個簡單的問題,一般也需要幾百次甚至上千次的學習才能收斂。

②容易陷入局部極小值。

③網路層數、神經元個數的選擇沒有相應的理論指導。

④網路推廣能力有限。

2、人工神經網路的特點和優越性,主要表現在以下三個方面

①具有自學習功能。例如實現圖像識別時,只在先把許多不同的圖像樣板和對應的應識別的結果輸入人工神經網路,網路就會通過自學習功能,慢慢學會識別類似的圖像。自學習功能對於預測有特別重要的意義。預期未來的人工神經網路計算機將為人類提供經濟預測、效益預測,其應用前途是很遠大的。

②具有聯想存儲功能。用人工神經網路的反饋網路就可以實現這種聯想。

③具有高速尋找優化解的能力。尋找一個復雜問題的優化解,往往需要很大的計算量,利用一個針對某問題而設計的反饋型人工神經網路,發揮計算機的高速運算能力,可能很快找到優化解。

⑵ 深度前饋網路

看過西瓜書和李航的《統計學習方法》,對機器學習的基本演算法算是有了初步的理解。機器學習的演算法和思想固然重要,在實際中也有很多應用場景,但在超大數據集的表現上,深度學習才是當下效果最好的工具。可惜的是,花書這樣一本經典著作的中文版翻譯和機翻差不多水平,因此看的時候只能放慢速度。閑言少敘,下面是第六章的學習記錄。

深度前饋網路(deep feedforward network) ,也叫作前饋神經網路(feedforward neural network)或者多層感知機(multilayer perceptron, MLP),是典型的深度學習模型。 前饋網路的目標是近似某個函數 。例如,對於分類器, 將輸入 映射到一個類別 。前饋網路定義了一個映射 ,並且學習參數 的值使它能夠得到最佳的函數近似。

下面我們把「深度前饋網路」這個詞拆開來看:

那麼深度前饋網路的各層之間有什麼區別呢?從功能來講,訓練樣本直接指明了 輸出層 在每一點x上必須做什麼,它必須產生一個接近 y 的值。但訓練數據並沒有給出其它層中的所需的輸出,所以這些層被稱為 隱藏層(hidden layer)

一種理解前饋網路的方式是從線性模型開始,並考慮如何克服它的局限性。如果各層的函數 都是線性函數,那麼復合後的函數依然是線性的,此時我們的網路模型等價於線性模型。為了提高模型的表示能力,我們需要將各層的 設置為非線性的,從而得到一個非線性映射 。我們可以認為 提供了一組描述 的特徵,或者認為它提供了 的一個新的表示。

設計和訓練神經網路與使用梯度下降訓練其他任何機器學習模型並沒有太大不同。神經網路和線性模型等演算法的最大區別,在於神經網路的非線性導致大多數我們感興趣的代價函數都變得 非凸 。這意味著神經網路的訓練通常使用迭代的、基於梯度的優化, 僅僅使得代價函數達到一個非常小的值 ;而不是像用於訓練線性回歸模型的線性方程求解器或者用於訓練邏輯回歸或 SVM 的凸優化演算法那樣保證全局收斂。

用於非凸損失函數的隨機梯度下降沒有這種收斂性保證,並且 對參數的初始值很敏感。對於前饋神經網路,將所有的權重值初始化為小隨機數是很重要的。偏置可以初始化為零或者小的正值。

大多數現代的神經網路使用最大似然來訓練。這意味著代價函數就是負的對數似然,它與訓練數據和模型分布間的 交叉熵 等價。這個代價函數表示為

使用最大似然來導出代價函數的方法的一個優勢是,它減輕了為每個模型設計代價函數的負擔。明確一個模型 則自動地確定了一個代價函數 。

用於實現最大似然估計的交叉熵代價函數有一個不同尋常的特性,那就是當它被應用於實踐中經常遇到的模型時,它 通常沒有最小值。 如果模型可以控制輸出分布的密度(例如,通過學習高斯輸出分布的方差參數),那麼它可能對正確的訓練集輸出賦予極其高的密度,這將導致交叉熵趨向負無窮。 正則化技術提供了一些不同的方法來修正學習問題,使得模型不會通過這種方式來獲得無限制的收益。

一種簡單的輸出單元是基於仿射變換的輸出單元,仿射變換不具有非線性。這些單元往往被直接稱為 線性單元 。給定特徵 ,線性輸出層產生一個向量 ,線性輸出層經常被用來 產生條件高斯分布的均值

最大化其對數似然此時等價於最小化均方誤差。

許多任務需要預測二值型變數 的值。具有兩個類的分類問題可以歸結為這種形式。此時最大似然的方法是定義 在 條件下的 Bernoulli 分布。為保證模型給出了錯誤答案時,總能有一個較大的梯度。可以使用 sigmoid輸出單元 結合最大似然來實現。sigmoid 輸出單元定義為:

這種在對數空間里預測概率的方法可以很自然地使用最大似然學習。因為用於最大似然的代價函數是 ,代價函數中的 抵消了 中的 。如果沒有這個效果,sigmoid 的飽和性會阻止基於梯度的學習做出好的改進。因此, 最大似然幾乎總是訓練 輸出單元的優選方法。

當我們想要表示一個具有 n 個可能取值的離散型隨機變數的分布時,我們可以使用 函數。它可以看作是 函數的擴展。

函數最常用作分類器的輸出,來表示 個不同類上的概率分布。比較少見的是, 函數可以在模型內部使用,例如如果我們想要在某個內部變數的 個不同選項中進行選擇。 函數的形式為:

和 一樣,當使用最大化對數似然訓練 來輸出目標值 時,使用指數函數工作地非常好。

隱藏單元的設計是一個非常活躍的研究領域,並且還沒有許多明確的指導性理論原則。

整流線性單元(Rectified Linear Unit, ReLU)是隱藏單元極好的默認選擇。許多其他類型的隱藏單元也是可用的。決定何時使用哪種類型的隱藏單元是困難的事(盡管整流線性單元通常是一個可接受的選擇)。我們這里描述對於每種隱藏單元的一些基本直覺。這些直覺可以用來建議我們何時來嘗試一些單元。 通常不可能預先預測出哪種隱藏單元工作得最好。設計過程充滿了試驗和錯誤,先直覺認為某種隱藏單元可能表現良好,然後用它組成神經網路進行訓練,最後用驗證集來評估它的性能。

大多數的隱藏單元都接受輸入向量 x,計算仿射變換 ,然後使用一個逐元素的非線性函數 。大多數隱藏單元的區別僅僅在於激活函數 的形式。

整流線性單元使用激活函數:

整流線性單元通常作用於仿射變換之上:

當初始化仿射變換的參數時,可以將 b 的所有元素設置成一個小的正值,例如 0.1。這使得整流線性單元很可能初始時就對訓練集中的大多數輸入呈現激活狀態,並且允許導數通過。

整流線性單元的一個缺陷是它們不能通過基於梯度的方法學習那些使它們激活為零的樣本。整流線性單元的各種擴展保證了它們能在各個位置都接收到梯度。

整流線性單元的三個擴展基於當 時使用一個非零的斜率 :

絕對值整流(absolute value rectification) 固定 來得到: ,它用於圖像中的對象識別 (Jarrett et al., 2009a); 滲漏整流線性單元(Leaky ReLU) (Maas et al., 2013) 將 固定成一個類似 0.01 的小值; 參數化整流線性單元(parametric ReLU) 將 作為學習的參數 (He et al., 2015)。

maxout 單元(maxout unit) (Goodfellow et al., 2013a) 進一步擴展了整流線性單元。maxout單元將 劃分為每組有 個值的組,而不是使用作用於每個元素的函數 。每個maxout單元則輸出每組中的最大元素:

這里 是組 的輸入索引集 。因為激活函數中有了max操作,所以整個maxout網路也是一種非線性的變換。

maxout的擬合能力是非常強的,它可以擬合任意的的凸函數。最直觀的解釋就是任意的凸函數都可以由分段線性函數以任意精度擬合,而maxout又是取k個隱隱含層節點的最大值,這些」隱隱含層"節點也是線性的,所以在不同的取值范圍下,最大值也可以看做是分段線性的(分段的個數與k值有關)。

整流線性單元和它們的這些擴展都是基於一個原則,那就是如果它們的行為更接近線性,那麼模型更容易優化。

在引入整流線性單元之前,大多數神經網路使用 logistic sigmoid 激活函數:

或者是雙曲正切激活函數:

這些激活函數緊密相關,因為:

我們已經看過 sigmoid 單元作為輸出單元用來預測二值型變數取值為 1 的概率。與分段線性單元不同,sigmoid 單元在其大部分定義域內都飽和——當 z 取絕對值很大的正值時,它們飽和到一個高值,當 z 取絕對值很大的負值時,它們飽和到一個低值,並且僅僅當 z 接近 0 時它們才對輸入強烈敏感。sigmoid 單元的廣泛飽和性會使得基於梯度的學習變得非常困難。因為這個原因,現在不鼓勵將它們用作前饋網路中的隱藏單元。當使用一個合適的代價函數來抵消 sigmoid 的飽和性時,它們作為輸出單元可以與基於梯度的學習相兼容。

當必須要使用 sigmoid 激活函數時,雙曲正切激活函數通常要比 logistic sigmoid 函數表現更好。在 而 的意義上,它更像是單位函數。因為 tanh 在 0 附近與單位函數類似。

架構(architecture) 一詞是指網路的整體結構: 它應該具有多少單元,以及這些單元應該如何連接。

在鏈式架構中,主要的架構考慮是選擇網路的深度和每一層的寬度。我將會看到,即使只有一個隱藏層的網路也足夠適應訓練集。 更深層的網路通常能夠對每一層使用更少的單元數和更少的參數,並且經常容易泛化到測試集,但是通常也更難以優化。 對於一個具體的任務,理想的網路架構必須通過實驗,觀測在驗證集上的誤差來找到。

萬能近似定理(universal approximation theorem)

一個前饋神經網路如果具有線性輸出層和至少一層具有任何一種 『『擠壓』』 性質的激活函數(例如logistic sigmoid激活函數)的隱藏層,只要給予網路足夠數量的隱藏單元,它可以 以任意的精度來近似任何從一個有限維空間到另一個有限維空間的 Borel 可測函數 。前饋網路的導數也可以任意好地來近似函數的導數 (Hornik et al., 1990)。

萬能近似定理意味著無論我們試圖學習什麼函數,我們知道一個大的MLP一定能夠表示這個函數。

然而,我們不能保證訓練演算法能夠學得這個函數。即使 MLP能夠表示該函數,學習也可能因兩個不同的原因而失敗。 首先,用於訓練的優化演算法可能找不到用於期望函數的參數值。其次,訓練演算法可能由於過擬合而選擇了錯誤的函數。

總之,具有單層的前饋網路足以表示任何函數,但是網路層可能大得不可實現,並且可能無法正確地學習和泛化。在很多情況下,使用更深的模型能夠減少表示期望函數所需的單元的數量,並且可以減少泛化誤差。

存在一些函數族能夠在網路的深度大於某個值d時被高效地近似,而當深度被限制到小於或等於d時需要一個遠遠大於之前的模型。在很多情況下,淺層模型所需的隱藏單元的數量是n的指數級。

Montufar et al. (2014) 的主要定理指出, 具有 個輸入深度為 每個隱藏層具有 個單元的深度整流網路可以描述的線性區域的數量是

根據經驗,更深的模型似乎確實在廣泛的任務中泛化得更好。

目前為止,我們都將神經網路描述成層的簡單鏈式結構,主要的考慮因素是網路的深度和每層的寬度。在實踐中,神經網路顯示出相當的多樣性。

一般的,層不需要連接在鏈中,盡管這是最常見的做法。許多架構構建了一個主鏈,但隨後又添加了額外的架構特性,例如從層 i 到層 i + 2 或者更高層的 跳躍連接 。這些跳躍連接使得梯度更容易從輸出層流向更接近輸入的層。

架構設計考慮的另外一個關鍵點是如何將層與層之間連接起來。默認的神經網路層採用矩陣 W 描述的線性變換,每個輸入單元連接到每個輸出單元。許多專用網路具有較少的連接,使得輸入層中的每個單元僅連接到輸出層單元的一個小子集。這些用於 減少連接數量 的策略減少了參數的數量以及用於評估網路的計算量,但通常高度依賴於問題。

當我們使用前饋神經網路接收輸入 並產生輸出 時,信息通過網路向前流動。輸入 提供初始信息,然後傳播到每一層的隱藏單元,最終產生輸出 。這稱之為 前向傳播(forward propagation) 。在訓練過程中,前向傳播可以持續向前直到它產生一個標量代價函數 。 反向傳播(back propagation) 演算法 (Rumelhart et al., 1986c),經常簡稱為backprop,允許來自代價函數的信息通過網路向後流動,以便計算梯度。

將計算形式化為圖形的方法有很多。這里,我們使用圖中的每一個節點來表示一個變數。變數可以是標量、向量、矩陣、張量、或者甚至是另一類型的變數。為了形式化我們的圖形,我們還需引入操作(operation)這一概念。操作是指一個或多個變數的簡單函數。我們的圖形語言伴隨著一組被允許的操作。我們可以通過將多個操作復合在一起來描述更為復雜的函數。

如果變數 y 是變數 x 通過一個操作計算得到的,那麼我們畫一條從 x 到 y 的有向邊。我們有時用操作的名稱來注釋輸出的節點,當上下文很明確時,有時也會省略這個標注。計算圖的實例如下:

使用符號到符號的方法計算導數的示例如下。在這種方法中,反向傳播演算法不需要訪問任何實際的特定數值。相反,它將節點添加到計算圖中來描述如何計算這些導數。通用圖形求值引擎可以在隨後計算任何特定數值的導數。 本例從表示 的圖開始,運行反向傳播演算法,指導它構造表達式 對應的圖。

這部分花書上講了很多內容……我看得有些失去耐心……可能是講得太細致了吧……我對反向傳播演算法的認識很簡單,就是一個鏈式法則,一層一層計算梯度然後向後傳播。這里根據之前上課時候的課件內容做下簡單回顧:

總之反向傳播演算法的要點就是 以恰當的順序計算梯度,從而充分利用鏈式法則來提高計算效率 。我個人認為理解BP的最佳方式就是自己畫個圖手推一遍。

⑶ 神經網路:卷積神經網路(CNN)

神經網路 最早是由心理學家和神經學家提出的,旨在尋求開發和測試神經的計算模擬。

粗略地說, 神經網路 是一組連接的 輸入/輸出單元 ,其中每個連接都與一個 權 相關聯。在學習階段,通過調整權值,使得神經網路的預測准確性逐步提高。由於單元之間的連接,神經網路學習又稱 連接者學習。

神經網路是以模擬人腦神經元的數學模型為基礎而建立的,它由一系列神經元組成,單元之間彼此連接。從信息處理角度看,神經元可以看作是一個多輸入單輸出的信息處理單元,根據神經元的特性和功能,可以把神經元抽象成一個簡單的數學模型。

神經網路有三個要素: 拓撲結構、連接方式、學習規則

神經網路的拓撲結構 :神經網路的單元通常按照層次排列,根據網路的層次數,可以將神經網路分為單層神經網路、兩層神經網路、三層神經網路等。結構簡單的神經網路,在學習時收斂的速度快,但准確度低。

神經網路的層數和每層的單元數由問題的復雜程度而定。問題越復雜,神經網路的層數就越多。例如,兩層神經網路常用來解決線性問題,而多層網路就可以解決多元非線性問題

神經網路的連接 :包括層次之間的連接和每一層內部的連接,連接的強度用權來表示。

根據層次之間的連接方式,分為:

1)前饋式網路:連接是單向的,上層單元的輸出是下層單元的輸入,如反向傳播網路,Kohonen網路

2)反饋式網路:除了單項的連接外,還把最後一層單元的輸出作為第一層單元的輸入,如Hopfield網路

根據連接的范圍,分為:

1)全連接神經網路:每個單元和相鄰層上的所有單元相連

2)局部連接網路:每個單元只和相鄰層上的部分單元相連

神經網路的學習

根據學習方法分:

感知器:有監督的學習方法,訓練樣本的類別是已知的,並在學習的過程中指導模型的訓練

認知器:無監督的學習方法,訓練樣本類別未知,各單元通過競爭學習。

根據學習時間分:

離線網路:學習過程和使用過程是獨立的

在線網路:學習過程和使用過程是同時進行的

根據學習規則分:

相關學習網路:根據連接間的激活水平改變權系數

糾錯學習網路:根據輸出單元的外部反饋改變權系數

自組織學習網路:對輸入進行自適應地學習

摘自《數學之美》對人工神經網路的通俗理解:

神經網路種類很多,常用的有如下四種:

1)Hopfield網路,典型的反饋網路,結構單層,有相同的單元組成

2)反向傳播網路,前饋網路,結構多層,採用最小均方差的糾錯學習規則,常用於語言識別和分類等問題

3)Kohonen網路:典型的自組織網路,由輸入層和輸出層構成,全連接

4)ART網路:自組織網路

深度神經網路:

Convolutional Neural Networks(CNN)卷積神經網路

Recurrent neural Network(RNN)循環神經網路

Deep Belief Networks(DBN)深度信念網路

深度學習是指多層神經網路上運用各種機器學習演算法解決圖像,文本等各種問題的演算法集合。深度學習從大類上可以歸入神經網路,不過在具體實現上有許多變化。

深度學習的核心是特徵學習,旨在通過分層網路獲取分層次的特徵信息,從而解決以往需要人工設計特徵的重要難題。

Machine Learning vs. Deep Learning 

神經網路(主要是感知器)經常用於 分類

神經網路的分類知識體現在網路連接上,被隱式地存儲在連接的權值中。

神經網路的學習就是通過迭代演算法,對權值逐步修改的優化過程,學習的目標就是通過改變權值使訓練集的樣本都能被正確分類。

神經網路特別適用於下列情況的分類問題:

1) 數據量比較小,缺少足夠的樣本建立模型

2) 數據的結構難以用傳統的統計方法來描述

3) 分類模型難以表示為傳統的統計模型

缺點:

1) 需要很長的訓練時間,因而對於有足夠長訓練時間的應用更合適。

2) 需要大量的參數,這些通常主要靠經驗確定,如網路拓撲或「結構」。

3)  可解釋性差 。該特點使得神經網路在數據挖掘的初期並不看好。

優點:

1) 分類的准確度高

2)並行分布處理能力強

3)分布存儲及學習能力高

4)對噪音數據有很強的魯棒性和容錯能力

最流行的基於神經網路的分類演算法是80年代提出的 後向傳播演算法 。後向傳播演算法在多路前饋神經網路上學習。 

定義網路拓撲

在開始訓練之前,用戶必須說明輸入層的單元數、隱藏層數(如果多於一層)、每一隱藏層的單元數和輸出層的單元數,以確定網路拓撲。

對訓練樣本中每個屬性的值進行規格化將有助於加快學習過程。通常,對輸入值規格化,使得它們落入0.0和1.0之間。

離散值屬性可以重新編碼,使得每個域值一個輸入單元。例如,如果屬性A的定義域為(a0,a1,a2),則可以分配三個輸入單元表示A。即,我們可以用I0 ,I1 ,I2作為輸入單元。每個單元初始化為0。如果A = a0,則I0置為1;如果A = a1,I1置1;如此下去。

一個輸出單元可以用來表示兩個類(值1代表一個類,而值0代表另一個)。如果多於兩個類,則每個類使用一個輸出單元。

隱藏層單元數設多少個「最好」 ,沒有明確的規則。

網路設計是一個實驗過程,並可能影響准確性。權的初值也可能影響准確性。如果某個經過訓練的網路的准確率太低,則通常需要採用不同的網路拓撲或使用不同的初始權值,重復進行訓練。

後向傳播演算法學習過程:

迭代地處理一組訓練樣本,將每個樣本的網路預測與實際的類標號比較。

每次迭代後,修改權值,使得網路預測和實際類之間的均方差最小。

這種修改「後向」進行。即,由輸出層,經由每個隱藏層,到第一個隱藏層(因此稱作後向傳播)。盡管不能保證,一般地,權將最終收斂,學習過程停止。

演算法終止條件:訓練集中被正確分類的樣本達到一定的比例,或者權系數趨近穩定。

後向傳播演算法分為如下幾步:

1) 初始化權

網路的權通常被初始化為很小的隨機數(例如,范圍從-1.0到1.0,或從-0.5到0.5)。

每個單元都設有一個偏置(bias),偏置也被初始化為小隨機數。

2) 向前傳播輸入

對於每一個樣本X,重復下面兩步:

向前傳播輸入,向後傳播誤差

計算各層每個單元的輸入和輸出。輸入層:輸出=輸入=樣本X的屬性;即,對於單元j,Oj = Ij = Xj。隱藏層和輸出層:輸入=前一層的輸出的線性組合,即,對於單元j, Ij =wij Oi + θj,輸出=

3) 向後傳播誤差

計算各層每個單元的誤差。

輸出層單元j,誤差:

Oj是單元j的實際輸出,而Tj是j的真正輸出。

隱藏層單元j,誤差:

wjk是由j到下一層中單元k的連接的權,Errk是單元k的誤差

更新 權 和 偏差 ,以反映傳播的誤差。

權由下式更新:

 其中,△wij是權wij的改變。l是學習率,通常取0和1之間的值。

 偏置由下式更新:

  其中,△θj是偏置θj的改變。

Example

人類視覺原理:

深度學習的許多研究成果,離不開對大腦認知原理的研究,尤其是視覺原理的研究。1981 年的諾貝爾醫學獎,頒發給了 David Hubel(出生於加拿大的美國神經生物學家) 和Torsten Wiesel,以及Roger Sperry。前兩位的主要貢獻,是「發現了視覺系統的信息處理」, 可視皮層是分級的 。

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

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

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

可以很自然的想到:可以不可以模仿人類大腦的這個特點,構造多層的神經網路,較低層的識別初級的圖像特徵,若干底層特徵組成更上一層特徵,最終通過多個層級的組合,最終在頂層做出分類呢?答案是肯定的,這也是許多深度學習演算法(包括CNN)的靈感來源。

卷積神經網路是一種多層神經網路,擅長處理圖像特別是大圖像的相關機器學習問題。卷積網路通過一系列方法,成功將數據量龐大的圖像識別問題不斷降維,最終使其能夠被訓練。

CNN最早由Yann LeCun提出並應用在手寫字體識別上。LeCun提出的網路稱為LeNet,其網路結構如下:

這是一個最典型的卷積網路,由 卷積層、池化層、全連接層 組成。其中卷積層與池化層配合,組成多個卷積組,逐層提取特徵,最終通過若干個全連接層完成分類。

CNN通過卷積來模擬特徵區分,並且通過卷積的權值共享及池化,來降低網路參數的數量級,最後通過傳統神經網路完成分類等任務。

降低參數量級:如果使用傳統神經網路方式,對一張圖片進行分類,那麼,把圖片的每個像素都連接到隱藏層節點上,對於一張1000x1000像素的圖片,如果有1M隱藏層單元,一共有10^12個參數,這顯然是不能接受的。

但是在CNN里,可以大大減少參數個數,基於以下兩個假設:

1)最底層特徵都是局部性的,也就是說,用10x10這樣大小的過濾器就能表示邊緣等底層特徵

2)圖像上不同小片段,以及不同圖像上的小片段的特徵是類似的,也就是說,能用同樣的一組分類器來描述各種各樣不同的圖像

基於以上兩個假設,就能把第一層網路結構簡化

用100個10x10的小過濾器,就能夠描述整幅圖片上的底層特徵。

卷積運算的定義如下圖所示:

如上圖所示,一個5x5的圖像,用一個3x3的 卷積核 :

   101

   010

   101

來對圖像進行卷積操作(可以理解為有一個滑動窗口,把卷積核與對應的圖像像素做乘積然後求和),得到了3x3的卷積結果。

這個過程可以理解為使用一個過濾器(卷積核)來過濾圖像的各個小區域,從而得到這些小區域的特徵值。在實際訓練過程中, 卷積核的值是在學習過程中學到的。

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

池化 的過程如下圖所示:

可以看到,原始圖片是20x20的,對其進行采樣,采樣窗口為10x10,最終將其采樣成為一個2x2大小的特徵圖。

之所以這么做,是因為即使做完了卷積,圖像仍然很大(因為卷積核比較小),所以為了降低數據維度,就進行采樣。

即使減少了許多數據,特徵的統計屬性仍能夠描述圖像,而且由於降低了數據維度,有效地避免了過擬合。

在實際應用中,分為最大值采樣(Max-Pooling)與平均值采樣(Mean-Pooling)。

LeNet網路結構:

注意,上圖中S2與C3的連接方式並不是全連接,而是部分連接。最後,通過全連接層C5、F6得到10個輸出,對應10個數字的概率。

卷積神經網路的訓練過程與傳統神經網路類似,也是參照了反向傳播演算法

第一階段,向前傳播階段:

a)從樣本集中取一個樣本(X,Yp),將X輸入網路;

b)計算相應的實際輸出Op

第二階段,向後傳播階段

a)計算實際輸出Op與相應的理想輸出Yp的差;

b)按極小化誤差的方法反向傳播調整權矩陣。

⑷ DNN、RNN、CNN分別是什麼意思

DNN(深度神經網路),是深度學習的基礎。

DNN可以理解為有很多隱藏層的神經網路。這個很多其實也沒有什麼度量標准, 多層神經網路和深度神經網路DNN其實也是指的一個東西,當然,DNN有時也叫做多層感知機(Multi-Layer perceptron,MLP)。

從DNN按不同層的位置劃分,DNN內部的神經網路層可以分為三類,輸入層,隱藏層和輸出層,如下圖示例,一般來說第一層是輸出層,最後一層是輸出層,而中間的層數都是隱藏層。

CNN(卷積神經網路),是一種前饋型的神經網路,目前深度學習技術領域中非常具有代表性的神經網路之一。

CNN在大型圖像處理方面有出色的表現,目前已經被大范圍使用到圖像分類、定位等領域中。相比於其他神經網路結構,卷積神經網路需要的參數相對較少,使的其能夠廣泛應用。

RNN(循環神經網路),一類用於處理序列數據的神經網路,RNN最大的不同之處就是在層之間的神經元之間也建立的權連接。

從廣義上來說,DNN被認為包含了CNN、RNN這些具體的變種形式。在實際應用中,深度神經網路DNN融合了多種已知的結構,包含卷積層或LSTM單元,特指全連接的神經元結構,並不包含卷積單元或時間上的關聯。

⑸ CNN(卷積神經網路)演算法

基礎知識講解:
卷積:通過兩個函數f 和g 生成第三個函數的一種數學運算元,表徵函數f 與g經過翻轉和平移的重疊部分函數值乘積對重疊長度的積分。
前饋神經網路:各神經元分層排列,每個神經元只與前一層的神經元相連,接收前一層的輸出,並輸出給下一層.各層間沒有反饋。
卷積神經網路:是一類包含卷積計算且具有深度結構的前饋神經網路
卷積核:就是圖像處理時,給定輸入圖像,輸入圖像中一個小區域中像素加權平均後成為輸出圖像中的每個對應像素,其中權值由一個函數定義,這個函數稱為卷積核。
下采樣:對於一個樣值序列間隔幾個樣值取樣一次,這樣得到新序列就是原序列的下采樣。
結構介紹
輸入層:用於數據輸入
卷積層:利用卷積核進行特徵提取和特徵映射
激勵層:非線性映射,卷積是線性映射,彌補不足
池化層:進行下采樣,對特徵圖稀疏處理,減少數據運算量
全連接層:在CNN的尾部進行重新擬合,減少特徵信息的損失

輸入層:
在CNN的輸入層中,(圖片)數據輸入的格式 與 全連接神經網路的輸入格式(一維向量)不太一樣。CNN的輸入層的輸入格式保留了圖片本身的結構。
對於黑白的 28×28 的圖片,CNN的輸入是一個 28×28 的的二維神經元:
而對於RGB格式的28×28圖片,CNN的輸入則是一個 3×28×28 的三維神經元(RGB中的每一個顏色通道都有一個 28×28 的矩陣)

卷積層:

左邊是輸入,中間部分是兩個不同的濾波器Filter w0、Filter w1,最右邊則是兩個不同的輸出。
ai.j=f(∑m=02∑n=02wm,nxi+m,j+n+wb)
wm,n:filter的第m行第n列的值
xi,j: 表示圖像的第i行第j列元素
wb:用表示filter的偏置項
ai,j:表示Feature Map的第i行第j列元素
f:表示Relu激活函數

激勵層:
使用的激勵函數一般為ReLu函數:
f(x)=max(x,0)
卷積層和激勵層通常合並在一起稱為「卷積層」。

池化層:
當輸入經過卷積層時,若感受視野比較小,布長stride比較小,得到的feature map (特徵圖)還是比較大,可以通過池化層來對每一個 feature map 進行降維操作,輸出的深度還是不變的,依然為 feature map 的個數。
池化層也有一個「池化視野(filter)」來對feature map矩陣進行掃描,對「池化視野」中的矩陣值進行計算,一般有兩種計算方式:
Max pooling:取「池化視野」矩陣中的最大值
Average pooling:取「池化視野」矩陣中的平均值

訓練過程:
1.前向計算每個神經元的輸出值aj( 表示網路的第j個神經元,以下同);
2.反向計算每個神經元的誤差項σj,σj在有的文獻中也叫做敏感度(sensitivity)。它實際上是網路的損失函數Ed對神經元加權輸入的偏導數
3.計算每個神經元連接權重wi,j的梯度( wi,j表示從神經元i連接到神經元j的權重)
1.最後,根據梯度下降法則更新每個權重即可。
參考: https://blog.csdn.net/love__live1/article/details/79481052

⑹ 卷積神經網路

關於花書中卷積網路的筆記記錄於 https://www.jianshu.com/p/5a3c90ea0807 。

卷積神經網路(Convolutional Neural Network,CNN或ConvNet)是一種具有 局部連接、權重共享 等特性的深層前饋神經網路。卷積神經網路是受生物學上感受野的機制而提出。 感受野(Receptive Field) 主要是指聽覺、視覺等神經系統中一些神經元的特性,即 神經元只接受其所支配的刺激區域內的信號

卷積神經網路最早是主要用來處理圖像信息。如果用全連接前饋網路來處理圖像時,會存在以下兩個問題:

目前的卷積神經網路一般是由卷積層、匯聚層和全連接層交叉堆疊而成的前饋神經網路,使用反向傳播演算法進行訓練。 卷積神經網路有三個結構上的特性:局部連接,權重共享以及匯聚 。這些特性使卷積神經網路具有一定程度上的平移、縮放和旋轉不變性。

卷積(Convolution)是分析數學中一種重要的運算。在信號處理或圖像處理中,經常使用一維或二維卷積。

一維卷積經常用在信號處理中,用於計算信號的延遲累積。假設一個信號發生器每個時刻t 產生一個信號 ,其信息的衰減率為 ,即在 個時間步長後,信息為原來的 倍。假設 ,那麼在時刻t收到的信號 為當前時刻產生的信息和以前時刻延遲信息的疊加:

我們把 稱為 濾波器(Filter)或卷積核(Convolution Kernel) 。假設濾波器長度為 ,它和一個信號序列 的卷積為:

信號序列 和濾波器 的卷積定義為:

一般情況下濾波器的長度 遠小於信號序列長度 ,下圖給出一個一維卷積示例,濾波器為 :

二維卷積經常用在圖像處理中。因為圖像為一個兩維結構,所以需要將一維卷積進行擴展。給定一個圖像 和濾波器 ,其卷積為:

下圖給出一個二維卷積示例:

注意這里的卷積運算並不是在圖像中框定卷積核大小的方框並將各像素值與卷積核各個元素相乘並加和,而是先把卷積核旋轉180度,再做上述運算。

在圖像處理中,卷積經常作為特徵提取的有效方法。一幅圖像在經過卷積操作後得到結果稱為 特徵映射(Feature Map)

最上面的濾波器是常用的高斯濾波器,可以用來對圖像進行 平滑去噪 ;中間和最下面的過濾器可以用來 提取邊緣特徵

在機器學習和圖像處理領域,卷積的主要功能是在一個圖像(或某種特徵)上滑動一個卷積核(即濾波器),通過卷積操作得到一組新的特徵。在計算卷積的過程中,需要進行卷積核翻轉(即上文提到的旋轉180度)。 在具體實現上,一般會以互相關操作來代替卷積,從而會減少一些不必要的操作或開銷。

互相關(Cross-Correlation)是一個衡量兩個序列相關性的函數,通常是用滑動窗口的點積計算來實現 。給定一個圖像 和卷積核 ,它們的互相關為:

互相關和卷積的區別僅在於卷積核是否進行翻轉。因此互相關也可以稱為不翻轉卷積 。當卷積核是可學習的參數時,卷積和互相關是等價的。因此,為了實現上(或描述上)的方便起見,我們用互相關來代替卷積。事實上,很多深度學習工具中卷積操作其實都是互相關操作。

在卷積的標準定義基礎上,還可以引入濾波器的 滑動步長 零填充 來增加卷積多樣性,更靈活地進行特徵抽取。

濾波器的步長(Stride)是指濾波器在滑動時的時間間隔。

零填充(Zero Padding)是在輸入向量兩端進行補零。

假設卷積層的輸入神經元個數為 ,卷積大小為 ,步長為 ,神經元兩端各填補 個零,那麼該卷積層的神經元數量為 。

一般常用的卷積有以下三類:

因為卷積網路的訓練也是基於反向傳播演算法,因此我們重點關注卷積的導數性質:

假設 。

, , 。函數 為一個標量函數。

則由 有:

可以看出, 關於 的偏導數為 和 的卷積

同理得到:

當 或 時, ,即相當於對 進行 的零填充。從而 關於 的偏導數為 和 的寬卷積

用互相關的「卷積」表示,即為(注意 寬卷積運算具有交換性性質 ):

在全連接前饋神經網路中,如果第 層有 個神經元,第 層有 個神經元,連接邊有 個,也就是權重矩陣有 個參數。當 和 都很大時,權重矩陣的參數非常多,訓練的效率會非常低。

如果採用卷積來代替全連接,第 層的凈輸入 為第 層活性值 和濾波器 的卷積,即:

根據卷積的定義,卷積層有兩個很重要的性質:

由於局部連接和權重共享,卷積層的參數只有一個m維的權重 和1維的偏置 ,共 個參數。參數個數和神經元的數量無關。此外,第 層的神經元個數不是任意選擇的,而是滿足 。

卷積層的作用是提取一個局部區域的特徵,不同的卷積核相當於不同的特徵提取器。

特徵映射(Feature Map)為一幅圖像(或其它特徵映射)在經過卷積提取到的特徵,每個特徵映射可以作為一類抽取的圖像特徵。 為了提高卷積網路的表示能力,可以在每一層使用多個不同的特徵映射,以更好地表示圖像的特徵。

在輸入層,特徵映射就是圖像本身。如果是灰度圖像,就是有一個特徵映射,深度 ;如果是彩色圖像,分別有RGB三個顏色通道的特徵映射,深度 。

不失一般性,假設一個卷積層的結構如下:

為了計算輸出特徵映射 ,用卷積核 分別對輸入特徵映射 進行卷積,然後將卷積結果相加,並加上一個標量偏置 得到卷積層的凈輸入 再經過非線性激活函數後得到輸出特徵映射 。

在輸入為 ,輸出為 的卷積層中,每個輸出特徵映射都需要 個濾波器以及一個偏置。假設每個濾波器的大小為 ,那麼共需要 個參數。

匯聚層(Pooling Layer)也叫子采樣層(Subsampling Layer),其作用是進行特徵選擇,降低特徵數量,並從而減少參數數量。

常用的匯聚函數有兩種:

其中 為區域 內每個神經元的激活值。

可以看出,匯聚層不但可以有效地減少神經元的數量,還可以使得網路對一些小的局部形態改變保持不變性,並擁有更大的感受野。

典型的匯聚層是將每個特徵映射劃分為 大小的不重疊區域,然後使用最大匯聚的方式進行下采樣。匯聚層也可以看做是一個特殊的卷積層,卷積核大小為 ,步長為 ,卷積核為 函數或 函數。過大的采樣區域會急劇減少神經元的數量,會造成過多的信息損失。

一個典型的卷積網路是由卷積層、匯聚層、全連接層交叉堆疊而成。

目前常用卷積網路結構如圖所示,一個卷積塊為連續 個卷積層和 個匯聚層( 通常設置為 , 為 或 )。一個卷積網路中可以堆疊 個連續的卷積塊,然後在後面接著 個全連接層( 的取值區間比較大,比如 或者更大; 一般為 )。

目前,整個網路結構 趨向於使用更小的卷積核(比如 和 )以及更深的結構(比如層數大於50) 。此外,由於卷積的操作性越來越靈活(比如不同的步長),匯聚層的作用變得也越來越小,因此目前比較流行的卷積網路中, 匯聚層的比例也逐漸降低,趨向於全卷積網路

在全連接前饋神經網路中,梯度主要通過每一層的誤差項 進行反向傳播,並進一步計算每層參數的梯度。在卷積神經網路中,主要有兩種不同功能的神經層:卷積層和匯聚層。而參數為卷積核以及偏置,因此 只需要計算卷積層中參數的梯度。

不失一般性,第 層為卷積層,第 層的輸入特徵映射為 ,通過卷積計算得到第 層的特徵映射凈輸入 ,第 層的第 個特徵映射凈輸入

由 得:

同理可得,損失函數關於第 層的第 個偏置 的偏導數為:

在卷積網路中,每層參數的梯度依賴其所在層的誤差項 。

卷積層和匯聚層中,誤差項的計算有所不同,因此我們分別計算其誤差項。

第 層的第 個特徵映射的誤差項 的具體推導過程如下:

其中 為第 層使用的激活函數導數, 為上采樣函數(upsampling),與匯聚層中使用的下采樣操作剛好相反。如果下采樣是最大匯聚(max pooling),誤差項 中每個值會直接傳遞到上一層對應區域中的最大值所對應的神經元,該區域中其它神經元的誤差項的都設為0。如果下采樣是平均匯聚(meanpooling),誤差項 中每個值會被平均分配到上一層對應區域中的所有神經元上。

第 層的第 個特徵映射的誤差項 的具體推導過程如下:

其中 為寬卷積。

LeNet-5雖然提出的時間比較早,但是是一個非常成功的神經網路模型。基於LeNet-5 的手寫數字識別系統在90年代被美國很多銀行使用,用來識別支票上面的手寫數字。LeNet-5 的網路結構如圖:

不計輸入層,LeNet-5共有7層,每一層的結構為:

AlexNet是第一個現代深度卷積網路模型,其首次使用了很多現代深度卷積網路的一些技術方法,比如採用了ReLU作為非線性激活函數,使用Dropout防止過擬合,使用數據增強來提高模型准確率等。AlexNet 贏得了2012 年ImageNet 圖像分類競賽的冠軍。

AlexNet的結構如圖,包括5個卷積層、3個全連接層和1個softmax層。因為網路規模超出了當時的單個GPU的內存限制,AlexNet 將網路拆為兩半,分別放在兩個GPU上,GPU間只在某些層(比如第3層)進行通訊。

AlexNet的具體結構如下:

在卷積網路中,如何設置卷積層的卷積核大小是一個十分關鍵的問題。 在Inception網路中,一個卷積層包含多個不同大小的卷積操作,稱為Inception模塊。Inception網路是由有多個inception模塊和少量的匯聚層堆疊而成

v1版本的Inception模塊,採用了4組平行的特徵抽取方式,分別為1×1、3× 3、5×5的卷積和3×3的最大匯聚。同時,為了提高計算效率,減少參數數量,Inception模塊在進行3×3、5×5的卷積之前、3×3的最大匯聚之後,進行一次1×1的卷積來減少特徵映射的深度。如果輸入特徵映射之間存在冗餘信息, 1×1的卷積相當於先進行一次特徵抽取

⑺ 一文看懂四種基本的神經網路架構

原文鏈接:
http://blackblog.tech/2018/02/23/Eight-Neural-Network/

更多干貨就在我的個人博客 http://blackblog.tech 歡迎關注

剛剛入門神經網路,往往會對眾多的神經網路架構感到困惑,神經網路看起來復雜多樣,但是這么多架構無非也就是三類,前饋神經網路,循環網路,對稱連接網路,本文將介紹四種常見的神經網路,分別是CNN,RNN,DBN,GAN。通過這四種基本的神經網路架構,我們來對神經網路進行一定的了解。

神經網路是機器學習中的一種模型,是一種模仿動物神經網路行為特徵,進行分布式並行信息處理的演算法數學模型。這種網路依靠系統的復雜程度,通過調整內部大量節點之間相互連接的關系,從而達到處理信息的目的。
一般來說,神經網路的架構可以分為三類:

前饋神經網路:
這是實際應用中最常見的神經網路類型。第一層是輸入,最後一層是輸出。如果有多個隱藏層,我們稱之為「深度」神經網路。他們計算出一系列改變樣本相似性的變換。各層神經元的活動是前一層活動的非線性函數。

循環網路:
循環網路在他們的連接圖中定向了循環,這意味著你可以按照箭頭回到你開始的地方。他們可以有復雜的動態,使其很難訓練。他們更具有生物真實性。
循環網路的目的使用來處理序列數據。在傳統的神經網路模型中,是從輸入層到隱含層再到輸出層,層與層之間是全連接的,每層之間的節點是無連接的。但是這種普通的神經網路對於很多問題卻無能無力。例如,你要預測句子的下一個單詞是什麼,一般需要用到前面的單詞,因為一個句子中前後單詞並不是獨立的。
循環神經網路,即一個序列當前的輸出與前面的輸出也有關。具體的表現形式為網路會對前面的信息進行記憶並應用於當前輸出的計算中,即隱藏層之間的節點不再無連接而是有連接的,並且隱藏層的輸入不僅包括輸入層的輸出還包括上一時刻隱藏層的輸出。

對稱連接網路:
對稱連接網路有點像循環網路,但是單元之間的連接是對稱的(它們在兩個方向上權重相同)。比起循環網路,對稱連接網路更容易分析。這個網路中有更多的限制,因為它們遵守能量函數定律。沒有隱藏單元的對稱連接網路被稱為「Hopfield 網路」。有隱藏單元的對稱連接的網路被稱為玻爾茲曼機。

其實之前的帖子講過一些關於感知機的內容,這里再復述一下。
首先還是這張圖
這是一個M-P神經元

一個神經元有n個輸入,每一個輸入對應一個權值w,神經元內會對輸入與權重做乘法後求和,求和的結果與偏置做差,最終將結果放入激活函數中,由激活函數給出最後的輸出,輸出往往是二進制的,0 狀態代表抑制,1 狀態代表激活。

可以把感知機看作是 n 維實例空間中的超平面決策面,對於超平面一側的樣本,感知器輸出 1,對於另一側的實例輸出 0,這個決策超平面方程是 w⋅x=0。 那些可以被某一個超平面分割的正反樣例集合稱為線性可分(linearly separable)樣例集合,它們就可以使用圖中的感知機表示。
與、或、非問題都是線性可分的問題,使用一個有兩輸入的感知機能容易地表示,而異或並不是一個線性可分的問題,所以使用單層感知機是不行的,這時候就要使用多層感知機來解決疑惑問題了。

如果我們要訓練一個感知機,應該怎麼辦呢?
我們會從隨機的權值開始,反復地應用這個感知機到每個訓練樣例,只要它誤分類樣例就修改感知機的權值。重復這個過程,直到感知機正確分類所有的樣例。每一步根據感知機訓練法則來修改權值,也就是修改與輸入 xi 對應的權 wi,法則如下:

這里 t 是當前訓練樣例的目標輸出,o 是感知機的輸出,η 是一個正的常數稱為學習速率。學習速率的作用是緩和每一步調整權的程度,它通常被設為一個小的數值(例如 0.1),而且有時會使其隨著權調整次數的增加而衰減。

多層感知機,或者說是多層神經網路無非就是在輸入層與輸出層之間加了多個隱藏層而已,後續的CNN,DBN等神經網路只不過是將重新設計了每一層的類型。感知機可以說是神經網路的基礎,後續更為復雜的神經網路都離不開最簡單的感知機的模型,

談到機器學習,我們往往還會跟上一個詞語,叫做模式識別,但是真實環境中的模式識別往往會出現各種問題。比如:
圖像分割:真實場景中總是摻雜著其它物體。很難判斷哪些部分屬於同一個對象。對象的某些部分可以隱藏在其他對象的後面。
物體光照:像素的強度被光照強烈影響。
圖像變形:物體可以以各種非仿射方式變形。例如,手寫也可以有一個大的圓圈或只是一個尖頭。
情景支持:物體所屬類別通常由它們的使用方式來定義。例如,椅子是為了讓人們坐在上面而設計的,因此它們具有各種各樣的物理形狀。
卷積神經網路與普通神經網路的區別在於,卷積神經網路包含了一個由卷積層和子采樣層構成的特徵抽取器。在卷積神經網路的卷積層中,一個神經元只與部分鄰層神經元連接。在CNN的一個卷積層中,通常包含若干個特徵平面(featureMap),每個特徵平面由一些矩形排列的的神經元組成,同一特徵平面的神經元共享權值,這里共享的權值就是卷積核。卷積核一般以隨機小數矩陣的形式初始化,在網路的訓練過程中卷積核將學習得到合理的權值。共享權值(卷積核)帶來的直接好處是減少網路各層之間的連接,同時又降低了過擬合的風險。子采樣也叫做池化(pooling),通常有均值子采樣(mean pooling)和最大值子采樣(max pooling)兩種形式。子采樣可以看作一種特殊的卷積過程。卷積和子采樣大大簡化了模型復雜度,減少了模型的參數。
卷積神經網路由三部分構成。第一部分是輸入層。第二部分由n個卷積層和池化層的組合組成。第三部分由一個全連結的多層感知機分類器構成。
這里舉AlexNet為例:

·輸入:224×224大小的圖片,3通道
·第一層卷積:11×11大小的卷積核96個,每個GPU上48個。
·第一層max-pooling:2×2的核。
·第二層卷積:5×5卷積核256個,每個GPU上128個。
·第二層max-pooling:2×2的核。
·第三層卷積:與上一層是全連接,3*3的卷積核384個。分到兩個GPU上個192個。
·第四層卷積:3×3的卷積核384個,兩個GPU各192個。該層與上一層連接沒有經過pooling層。
·第五層卷積:3×3的卷積核256個,兩個GPU上個128個。
·第五層max-pooling:2×2的核。
·第一層全連接:4096維,將第五層max-pooling的輸出連接成為一個一維向量,作為該層的輸入。
·第二層全連接:4096維
·Softmax層:輸出為1000,輸出的每一維都是圖片屬於該類別的概率。

卷積神經網路在模式識別領域有著重要應用,當然這里只是對卷積神經網路做了最簡單的講解,卷積神經網路中仍然有很多知識,比如局部感受野,權值共享,多卷積核等內容,後續有機會再進行講解。

傳統的神經網路對於很多問題難以處理,比如你要預測句子的下一個單詞是什麼,一般需要用到前面的單詞,因為一個句子中前後單詞並不是獨立的。RNN之所以稱為循環神經網路,即一個序列當前的輸出與前面的輸出也有關。具體的表現形式為網路會對前面的信息進行記憶並應用於當前輸出的計算中,即隱藏層之間的節點不再無連接而是有連接的,並且隱藏層的輸入不僅包括輸入層的輸出還包括上一時刻隱藏層的輸出。理論上,RNN能夠對任何長度的序列數據進行處理。
這是一個簡單的RNN的結構,可以看到隱藏層自己是可以跟自己進行連接的。

那麼RNN為什麼隱藏層能夠看到上一刻的隱藏層的輸出呢,其實我們把這個網路展開來開就很清晰了。

從上面的公式我們可以看出,循環層和全連接層的區別就是循環層多了一個權重矩陣 W。
如果反復把式2帶入到式1,我們將得到:

在講DBN之前,我們需要對DBN的基本組成單位有一定的了解,那就是RBM,受限玻爾茲曼機。
首先什麼是玻爾茲曼機?
[圖片上傳失敗...(image-d36b31-1519636788074)]
如圖所示為一個玻爾茲曼機,其藍色節點為隱層,白色節點為輸入層。
玻爾茲曼機和遞歸神經網路相比,區別體現在以下幾點:
1、遞歸神經網路本質是學習一個函數,因此有輸入和輸出層的概念,而玻爾茲曼機的用處在於學習一組數據的「內在表示」,因此其沒有輸出層的概念。
2、遞歸神經網路各節點鏈接為有向環,而玻爾茲曼機各節點連接成無向完全圖。

而受限玻爾茲曼機是什麼呢?
最簡單的來說就是加入了限制,這個限制就是將完全圖變成了二分圖。即由一個顯層和一個隱層構成,顯層與隱層的神經元之間為雙向全連接。

h表示隱藏層,v表示顯層
在RBM中,任意兩個相連的神經元之間有一個權值w表示其連接強度,每個神經元自身有一個偏置系數b(對顯層神經元)和c(對隱層神經元)來表示其自身權重。
具體的公式推導在這里就不展示了

DBN是一個概率生成模型,與傳統的判別模型的神經網路相對,生成模型是建立一個觀察數據和標簽之間的聯合分布,對P(Observation|Label)和 P(Label|Observation)都做了評估,而判別模型僅僅而已評估了後者,也就是P(Label|Observation)。
DBN由多個限制玻爾茲曼機(Restricted Boltzmann Machines)層組成,一個典型的神經網路類型如圖所示。這些網路被「限制」為一個可視層和一個隱層,層間存在連接,但層內的單元間不存在連接。隱層單元被訓練去捕捉在可視層表現出來的高階數據的相關性。

生成對抗網路其實在之前的帖子中做過講解,這里在說明一下。
生成對抗網路的目標在於生成,我們傳統的網路結構往往都是判別模型,即判斷一個樣本的真實性。而生成模型能夠根據所提供的樣本生成類似的新樣本,注意這些樣本是由計算機學習而來的。
GAN一般由兩個網路組成,生成模型網路,判別模型網路。
生成模型 G 捕捉樣本數據的分布,用服從某一分布(均勻分布,高斯分布等)的雜訊 z 生成一個類似真實訓練數據的樣本,追求效果是越像真實樣本越好;判別模型 D 是一個二分類器,估計一個樣本來自於訓練數據(而非生成數據)的概率,如果樣本來自於真實的訓練數據,D 輸出大概率,否則,D 輸出小概率。
舉個例子:生成網路 G 好比假幣製造團伙,專門製造假幣,判別網路 D 好比警察,專門檢測使用的貨幣是真幣還是假幣,G 的目標是想方設法生成和真幣一樣的貨幣,使得 D 判別不出來,D 的目標是想方設法檢測出來 G 生成的假幣。
傳統的判別網路:

生成對抗網路:

下面展示一個cDCGAN的例子(前面帖子中寫過的)
生成網路

判別網路

最終結果,使用MNIST作為初始樣本,通過學習後生成的數字,可以看到學習的效果還是不錯的。

本文非常簡單的介紹了四種神經網路的架構,CNN,RNN,DBN,GAN。當然也僅僅是簡單的介紹,並沒有深層次講解其內涵。這四種神經網路的架構十分常見,應用也十分廣泛。當然關於神經網路的知識,不可能幾篇帖子就講解完,這里知識講解一些基礎知識,幫助大家快速入(zhuang)門(bi)。後面的帖子將對深度自動編碼器,Hopfield 網路長短期記憶網路(LSTM)進行講解。

⑻ 神經網路的全連接層

全連接層(fully connected layers,FC)在整個神經網路中起到「分類器」的作用。

如果說卷積層、池化層和激活函數層等操作是將原始數據映射到隱層特徵空間的話,全連接層將學到的「分布式特徵表示」映射到「樣本標記空間」。

在實際使用中,全連接層可由卷積操作實現:對前層是全連接的全連接層可以轉化為卷積核為1x1的卷積;而前層是卷積層的全連接層可以轉化為卷積核為h*w的全局卷積,h和w分別為前層卷積結果的高和寬。

由於全連接層的參數冗餘(僅全連接層參數就可占整個網路參數80%左右),有些性能優異的網路模型如ResNet和GoogLeNet等均用全局平均池化(global average pooling,GAP)取代全連接層,來融合學到的深度特徵,最後仍用softmax等損失函數作為網路目標函數來指導學習過程。

⑼ 神經網路模型-27種神經網路模型們的簡介

​ 

【1】Perceptron(P) 感知機

【1】感知機 

感知機是我們知道的最簡單和最古老的神經元模型,它接收一些輸入,然後把它們加總,通過激活函數並傳遞到輸出層。

【2】Feed Forward(FF)前饋神經網路

 【2】前饋神經網路

前饋神經網路(FF),這也是一個很古老的方法——這種方法起源於50年代。它的工作原理通常遵循以下規則:

1.所有節點都完全連接

2.激活從輸入層流向輸出,無回環

3.輸入和輸出之間有一層(隱含層)

在大多數情況下,這種類型的網路使用反向傳播方法進行訓練。

【3】Radial Basis Network(RBF) RBF神經網路

 【3】RBF神經網路

RBF 神經網路實際上是 激活函數是徑向基函數 而非邏輯函數的FF前饋神經網路(FF)。兩者之間有什麼區別呢?

邏輯函數--- 將某個任意值映射到[0 ,... 1]范圍內來,回答「是或否」問題。適用於分類決策系統,但不適用於連續變數。

相反, 徑向基函數--- 能顯示「我們距離目標有多遠」。 這完美適用於函數逼近和機器控制(例如作為PID控制器的替代)。

簡而言之,RBF神經網路其實就是, 具有不同激活函數和應用方向的前饋網路 。

【4】Deep Feed Forword(DFF)深度前饋神經網路

【4】DFF深度前饋神經網路 

DFF深度前饋神經網路在90年代初期開啟了深度學習的潘多拉盒子。 這些依然是前饋神經網路,但有不止一個隱含層 。那麼,它到底有什麼特殊性?

在訓練傳統的前饋神經網路時,我們只向上一層傳遞了少量的誤差信息。由於堆疊更多的層次導致訓練時間的指數增長,使得深度前饋神經網路非常不實用。 直到00年代初,我們開發了一系列有效的訓練深度前饋神經網路的方法; 現在它們構成了現代機器學習系統的核心 ,能實現前饋神經網路的功能,但效果遠高於此。

【5】Recurrent Neural Network(RNN) 遞歸神經網路

【5】RNN遞歸神經網路 

RNN遞歸神經網路引入不同類型的神經元——遞歸神經元。這種類型的第一個網路被稱為約旦網路(Jordan Network),在網路中每個隱含神經元會收到它自己的在固定延遲(一次或多次迭代)後的輸出。除此之外,它與普通的模糊神經網路非常相似。

當然,它有許多變化 — 如傳遞狀態到輸入節點,可變延遲等,但主要思想保持不變。這種類型的神經網路主要被使用在上下文很重要的時候——即過去的迭代結果和樣本產生的決策會對當前產生影響。最常見的上下文的例子是文本——一個單詞只能在前面的單詞或句子的上下文中進行分析。

【6】Long/Short Term Memory (LSTM) 長短時記憶網路

【6】LSTM長短時記憶網路 

LSTM長短時記憶網路引入了一個存儲單元,一個特殊的單元,當數據有時間間隔(或滯後)時可以處理數據。遞歸神經網路可以通過「記住」前十個詞來處理文本,LSTM長短時記憶網路可以通過「記住」許多幀之前發生的事情處理視頻幀。 LSTM網路也廣泛用於寫作和語音識別。

存儲單元實際上由一些元素組成,稱為門,它們是遞歸性的,並控制信息如何被記住和遺忘。

【7】Gated Recurrent Unit (GRU)

 【7】GRU是具有不同門的LSTM

GRU是具有不同門的LSTM。

聽起來很簡單,但缺少輸出門可以更容易基於具體輸入重復多次相同的輸出,目前此模型在聲音(音樂)和語音合成中使用得最多。

實際上的組合雖然有點不同:但是所有的LSTM門都被組合成所謂的更新門(Update Gate),並且復位門(Reset Gate)與輸入密切相關。

它們比LSTM消耗資源少,但幾乎有相同的效果。

【8】Auto Encoder (AE) 自動編碼器

 【8】AE自動編碼器

Autoencoders自動編碼器用於分類,聚類和特徵壓縮。

當您訓練前饋(FF)神經網路進行分類時,您主要必須在Y類別中提供X個示例,並且期望Y個輸出單元格中的一個被激活。 這被稱為「監督學習」。

另一方面,自動編碼器可以在沒有監督的情況下進行訓練。它們的結構 - 當隱藏單元數量小於輸入單元數量(並且輸出單元數量等於輸入單元數)時,並且當自動編碼器被訓練時輸出盡可能接近輸入的方式,強制自動編碼器泛化數據並搜索常見模式。

【9】Variational AE (VAE)  變分自編碼器

 【9】VAE變分自編碼器

變分自編碼器,與一般自編碼器相比,它壓縮的是概率,而不是特徵。

盡管如此簡單的改變,但是一般自編碼器只能回答當「我們如何歸納數據?」的問題時,變分自編碼器回答了「兩件事情之間的聯系有多強大?我們應該在兩件事情之間分配誤差還是它們完全獨立的?」的問題。

【10】Denoising AE (DAE) 降噪自動編碼器

 【10】DAE降噪自動編碼器

雖然自動編碼器很酷,但它們有時找不到最魯棒的特徵,而只是適應輸入數據(實際上是過擬合的一個例子)。

降噪自動編碼器(DAE)在輸入單元上增加了一些雜訊 - 通過隨機位來改變數據,隨機切換輸入中的位,等等。通過這樣做,一個強制降噪自動編碼器從一個有點嘈雜的輸入重構輸出,使其更加通用,強制選擇更常見的特徵。

【11】Sparse AE (SAE) 稀疏自編碼器

【11】SAE稀疏自編碼器 

稀疏自編碼器(SAE)是另外一個有時候可以抽離出數據中一些隱藏分組樣試的自動編碼的形式。結構和AE是一樣的,但隱藏單元的數量大於輸入或輸出單元的數量。

【12】Markov Chain (MC) 馬爾科夫鏈

 【12】Markov Chain (MC) 馬爾科夫鏈

馬爾可夫鏈(Markov Chain, MC)是一個比較老的圖表概念了,它的每一個端點都存在一種可能性。過去,我們用它來搭建像「在單詞hello之後有0.0053%的概率會出現dear,有0.03551%的概率出現you」這樣的文本結構。

這些馬爾科夫鏈並不是典型的神經網路,它可以被用作基於概率的分類(像貝葉斯過濾),用於聚類(對某些類別而言),也被用作有限狀態機。

【13】Hopfield Network (HN) 霍普菲爾網路

【13】HN霍普菲爾網路 

霍普菲爾網路(HN)對一套有限的樣本進行訓練,所以它們用相同的樣本對已知樣本作出反應。

在訓練前,每一個樣本都作為輸入樣本,在訓練之中作為隱藏樣本,使用過之後被用作輸出樣本。

在HN試著重構受訓樣本的時候,他們可以用於給輸入值降噪和修復輸入。如果給出一半圖片或數列用來學習,它們可以反饋全部樣本。

【14】Boltzmann Machine (BM) 波爾滋曼機

【14】 BM 波爾滋曼機 

波爾滋曼機(BM)和HN非常相像,有些單元被標記為輸入同時也是隱藏單元。在隱藏單元更新其狀態時,輸入單元就變成了輸出單元。(在訓練時,BM和HN一個一個的更新單元,而非並行)。

這是第一個成功保留模擬退火方法的網路拓撲。

多層疊的波爾滋曼機可以用於所謂的深度信念網路,深度信念網路可以用作特徵檢測和抽取。

【15】Restricted BM (RBM) 限制型波爾滋曼機

【15】 RBM 限制型波爾滋曼機 

在結構上,限制型波爾滋曼機(RBM)和BM很相似,但由於受限RBM被允許像FF一樣用反向傳播來訓練(唯一的不同的是在反向傳播經過數據之前RBM會經過一次輸入層)。

【16】Deep Belief Network (DBN) 深度信念網路

【16】DBN 深度信念網路 

像之前提到的那樣,深度信念網路(DBN)實際上是許多波爾滋曼機(被VAE包圍)。他們能被連在一起(在一個神經網路訓練另一個的時候),並且可以用已經學習過的樣式來生成數據。

【17】Deep Convolutional Network (DCN) 深度卷積網路

【17】 DCN 深度卷積網路

當今,深度卷積網路(DCN)是人工神經網路之星。它具有卷積單元(或者池化層)和內核,每一種都用以不同目的。

卷積核事實上用來處理輸入的數據,池化層是用來簡化它們(大多數情況是用非線性方程,比如max),來減少不必要的特徵。

他們通常被用來做圖像識別,它們在圖片的一小部分上運行(大約20x20像素)。輸入窗口一個像素一個像素的沿著圖像滑動。然後數據流向卷積層,卷積層形成一個漏斗(壓縮被識別的特徵)。從圖像識別來講,第一層識別梯度,第二層識別線,第三層識別形狀,以此類推,直到特定的物體那一級。DFF通常被接在卷積層的末端方便未來的數據處理。

【18】Deconvolutional Network (DN) 去卷積網路

 【18】 DN 去卷積網路

去卷積網路(DN)是將DCN顛倒過來。DN能在獲取貓的圖片之後生成像(狗:0,蜥蜴:0,馬:0,貓:1)一樣的向量。DNC能在得到這個向量之後,能畫出一隻貓。

【19】Deep Convolutional Inverse Graphics Network (DCIGN) 深度卷積反轉圖像網路

【19】 DCIGN 深度卷積反轉圖像網路

深度卷積反轉圖像網路(DCIGN),長得像DCN和DN粘在一起,但也不完全是這樣。

事實上,它是一個自動編碼器,DCN和DN並不是作為兩個分開的網路,而是承載網路輸入和輸出的間隔區。大多數這種神經網路可以被用作圖像處理,並且可以處理他們以前沒有被訓練過的圖像。由於其抽象化的水平很高,這些網路可以用於將某個事物從一張圖片中移除,重畫,或者像大名鼎鼎的CycleGAN一樣將一匹馬換成一個斑馬。

【20】Generative Adversarial Network (GAN) 生成對抗網路

 【20】 GAN 生成對抗網路

生成對抗網路(GAN)代表了有生成器和分辨器組成的雙網路大家族。它們一直在相互傷害——生成器試著生成一些數據,而分辨器接收樣本數據後試著分辨出哪些是樣本,哪些是生成的。只要你能夠保持兩種神經網路訓練之間的平衡,在不斷的進化中,這種神經網路可以生成實際圖像。

【21】Liquid State Machine (LSM) 液體狀態機

 【21】 LSM 液體狀態機

液體狀態機(LSM)是一種稀疏的,激活函數被閾值代替了的(並不是全部相連的)神經網路。只有達到閾值的時候,單元格從連續的樣本和釋放出來的輸出中積累價值信息,並再次將內部的副本設為零。

這種想法來自於人腦,這些神經網路被廣泛的應用於計算機視覺,語音識別系統,但目前還沒有重大突破。

【22】Extreme  Learning Machine (ELM) 極端學習機

【22】ELM 極端學習機 

極端學習機(ELM)是通過產生稀疏的隨機連接的隱藏層來減少FF網路背後的復雜性。它們需要用到更少計算機的能量,實際的效率很大程度上取決於任務和數據。

【23】Echo State Network (ESN) 回聲狀態網路

【23】 ESN 回聲狀態網路

回聲狀態網路(ESN)是重復網路的細分種類。數據會經過輸入端,如果被監測到進行了多次迭代(請允許重復網路的特徵亂入一下),只有在隱藏層之間的權重會在此之後更新。

據我所知,除了多個理論基準之外,我不知道這種類型的有什麼實際應用。。。。。。。

【24】Deep Resial Network (DRN) 深度殘差網路

​【24】 DRN 深度殘差網路 

深度殘差網路(DRN)是有些輸入值的部分會傳遞到下一層。這一特點可以讓它可以做到很深的層級(達到300層),但事實上它們是一種沒有明確延時的RNN。

【25】Kohonen Network (KN) Kohonen神經網路

​ 【25】 Kohonen神經網路

Kohonen神經網路(KN)引入了「單元格距離」的特徵。大多數情況下用於分類,這種網路試著調整它們的單元格使其對某種特定的輸入作出最可能的反應。當一些單元格更新了, 離他們最近的單元格也會更新。

像SVM一樣,這些網路總被認為不是「真正」的神經網路。

【26】Support Vector Machine (SVM)

​【26】 SVM 支持向量機 

支持向量機(SVM)用於二元分類工作,無論這個網路處理多少維度或輸入,結果都會是「是」或「否」。

SVM不是所有情況下都被叫做神經網路。

【27】Neural Turing Machine (NTM) 神經圖靈機

​【27】NTM 神經圖靈機 

神經網路像是黑箱——我們可以訓練它們,得到結果,增強它們,但實際的決定路徑大多數我們都是不可見的。

神經圖靈機(NTM)就是在嘗試解決這個問題——它是一個提取出記憶單元之後的FF。一些作者也說它是一個抽象版的LSTM。

記憶是被內容編址的,這個網路可以基於現狀讀取記憶,編寫記憶,也代表了圖靈完備神經網路。

⑽ 什麼是全連接神經網路怎麼理解「全連接」

1、全連接神經網路解析:對n-1層和n層而言,n-1層的任意一個節點,都和第n層所有節點有連接。即第n層的每個節點在進行計算的時候,激活函數的輸入是n-1層所有節點的加權。

2、全連接的神經網路示意圖:


3、「全連接」是一種不錯的模式,但是網路很大的時候,訓練速度回很慢。部分連接就是認為的切斷某兩個節點直接的連接,這樣訓練時計算量大大減小。

閱讀全文

與全連接的深度前饋神經網路相關的資料

熱點內容
網路賣產品需要多少錢 瀏覽:508
怎麼讓家裡的網路快速如新 瀏覽:518
單位網路安全要求會議 瀏覽:681
全國網路安全軍民融合 瀏覽:527
筆記本網路本地連接好還是無線 瀏覽:827
網路貸款多少錢利息 瀏覽:503
沈陽哪裡能網路搶票 瀏覽:977
智慧屏看電視需要連接網路嗎 瀏覽:859
怎麼看電腦可不可以連xbox網路 瀏覽:280
華為家庭網路信號全覆蓋 瀏覽:316
施樂無線網路連接設置 瀏覽:48
我的移動網路密碼 瀏覽:800
如何提高網路文化出海 瀏覽:114
新網路詞在哪裡有 瀏覽:430
計算機網路重點簡答題 瀏覽:175
開數據但網路連接超時 瀏覽:328
移動接網路的路由器怎麼更換 瀏覽:1004
上海美猴網路怎麼樣 瀏覽:509
3g網路哪個運營商快 瀏覽:924
在校園如何使用有線網路 瀏覽:303

友情鏈接