什麼是神經網絡
神經網絡是機器學習中的一種模型,是一種模仿動物神經網絡行爲特徵,進行分佈式並行信息處理的算法數學模型。這種網絡依靠系統的複雜程度,經過調整內部大量節點之間相互鏈接的關係,從而達處處理信息的目的。
通常來講,神經網絡的架構能夠分爲三類:
算法
前饋神經網絡:
這是實際應用中最多見的神經網絡類型。第一層是輸入,最後一層是輸出。若是有多個隱藏層,咱們稱之爲「深度」神經網絡。他們計算出一系列改變樣本類似性的變換。各層神經元的活動是前一層活動的非線性函數。
循環網絡:
循環網絡在他們的鏈接圖中定向了循環,這意味着你能夠按照箭頭回到你開始的地方。他們能夠有複雜的動態,使其很難訓練。他們更具備生物真實性。
循環網絡的目的使用來處理序列數據。在傳統的神經網絡模型中,是從輸入層到隱含層再到輸出層,層與層之間是全鏈接的,每層之間的節點是無鏈接的。可是這種普通的神經網絡對於不少問題卻無能無力。例如,你要預測句子的下一個單詞是什麼,通常須要用到前面的單詞,由於一個句子中先後單詞並非獨立的。
循環神經網路,即一個序列當前的輸出與前面的輸出也有關。具體的表現形式爲網絡會對前面的信息進行記憶並應用於當前輸出的計算中,即隱藏層之間的節點再也不無鏈接而是有鏈接的,而且隱藏層的輸入不只包括輸入層的輸出還包括上一時刻隱藏層的輸出。
網絡
對稱鏈接網絡:
對稱鏈接網絡有點像循環網絡,可是單元之間的鏈接是對稱的(它們在兩個方向上權重相同)。比起循環網絡,對稱鏈接網絡更容易分析。這個網絡中有更多的限制,由於它們遵照能量函數定律。沒有隱藏單元的對稱鏈接網絡被稱爲「Hopfield 網絡」。有隱藏單元的對稱鏈接的網絡被稱爲玻爾茲曼機。
架構
感知機
其實以前的帖子講過一些關於感知機的內容,這裏再複述一下。
首先仍是這張圖
這是一個M-P神經元
機器學習
神經元分佈式
一個神經元有n個輸入,每個輸入對應一個權值w,神經元內會對輸入與權重作乘法後求和,求和的結果與偏置作差,最終將結果放入激活函數中,由激活函數給出最後的輸出,輸出每每是二進制的,0 狀態表明抑制,1 狀態表明激活。函數
感知機的輸出學習
感知機能夠分爲單層感知機,多層感知機。
咱們這裏主要討論的是單層感知機。
而感知機由兩層神經網絡組成,輸入層接收外界輸入信號後傳遞給輸出層,輸出層是 M-P神經元,
優化
感知機編碼
能夠把感知機看做是 n 維實例空間中的超平面決策面,對於超平面一側的樣本,感知器輸出 1,對於另外一側的實例輸出 0,這個決策超平面方程是 w⋅x=0。 那些能夠被某一個超平面分割的正反樣例集合稱爲線性可分(linearly separable)樣例集合,它們就可使用圖中的感知機表示。
與、或、非問題都是線性可分的問題,使用一個有兩輸入的感知機能容易地表示,而異或並非一個線性可分的問題,因此使用單層感知機是不行的,這時候就要使用多層感知機來解決疑惑問題了。
spa
若是咱們要訓練一個感知機,應該怎麼辦呢?
咱們會從隨機的權值開始,反覆地應用這個感知機到每一個訓練樣例,只要它誤分類樣例就修改感知機的權值。重複這個過程,直到感知機正確分類全部的樣例。每一步根據感知機訓練法則來修改權值,也就是修改與輸入 xi 對應的權 wi,法則以下:
image
這裏 t 是當前訓練樣例的目標輸出,o 是感知機的輸出,η 是一個正的常數稱爲學習速率。學習速率的做用是緩和每一步調整權的程度,它一般被設爲一個小的數值(例如 0.1),並且有時會使其隨着權調整次數的增長而衰減。
多層感知機,或者說是多層神經網絡無非就是在輸入層與輸出層之間加了多個隱藏層而已,後續的CNN,DBN等神經網絡只不過是將從新設計了每一層的類型。感知機能夠說是神經網絡的基礎,後續更爲複雜的神經網絡都離不開最簡單的感知機的模型,
卷積神經網絡 CNN
談到機器學習,咱們每每還會跟上一個詞語,叫作模式識別,可是真實環境中的模式識別每每會出現各類問題。好比:
圖像分割:真實場景中老是摻雜着其它物體。很難判斷哪些部分屬於同一個對象。對象的某些部分能夠隱藏在其餘對象的後面。
物體光照:像素的強度被光照強烈影響。
圖像變形:物體能夠以各類非仿射方式變形。例如,手寫也能夠有一個大的圓圈或只是一個尖頭。
情景支持:物體所屬類別一般由它們的使用方式來定義。例如,椅子是爲了讓人們坐在上面而設計的,所以它們具備各類各樣的物理形狀。
卷積神經網絡與普通神經網絡的區別在於,卷積神經網絡包含了一個由卷積層和子採樣層構成的特徵抽取器。在卷積神經網絡的卷積層中,一個神經元只與部分鄰層神經元鏈接。在CNN的一個卷積層中,一般包含若干個特徵平面(featureMap),每一個特徵平面由一些矩形排列的的神經元組成,同一特徵平面的神經元共享權值,這裏共享的權值就是卷積核。卷積核通常以隨機小數矩陣的形式初始化,在網絡的訓練過程當中卷積核將學習獲得合理的權值。共享權值(卷積核)帶來的直接好處是減小網絡各層之間的鏈接,同時又下降了過擬合的風險。子採樣也叫作池化(pooling),一般有均值子採樣(mean pooling)和最大值子採樣(max pooling)兩種形式。子採樣能夠看做一種特殊的卷積過程。卷積和子採樣大大簡化了模型複雜度,減小了模型的參數。
卷積神經網絡由三部分構成。第一部分是輸入層。第二部分由n個卷積層和池化層的組合組成。第三部分由一個全連結的多層感知機分類器構成。
這裏舉AlexNet爲例:
image
·輸入: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的結構,能夠看到隱藏層本身是能夠跟本身進行鏈接的。
RNN
那麼RNN爲何隱藏層可以看到上一刻的隱藏層的輸出呢,其實咱們把這個網絡展開來開就很清晰了。
image
這個網絡在t時刻接收到輸入Xt以後,隱藏層的值是St,輸出值是Ot,關鍵一點是,的值不只僅取決於Xt,還取決於St-1。
image
式1是輸出層的計算公式,輸出層是一個全鏈接層,也就是它的每一個節點都和隱藏層的每一個節點相連。V是輸出層的權重矩陣,g是激活函數。式2是隱藏層的計算公式,它是循環層。U是輸入x的權重矩陣,W是上一次的值St-1做爲這一次的輸入的權重矩陣,f是激活函數。
從上面的公式咱們能夠看出,循環層和全鏈接層的區別就是循環層多了一個權重矩陣 W。
若是反覆把式2帶入到式1,咱們將獲得:
image
從上面能夠看出,循環神經網絡的輸出值,是受前面歷次輸入值Xt、Xt-一、Xt-二、X-三、X-4...影響的,這就是爲何循環神經網絡能夠往前看任意多個輸入值的緣由。
深度信念網絡 DBN
在講DBN以前,咱們須要對DBN的基本組成單位有必定的瞭解,那就是RBM,受限玻爾茲曼機。
首先什麼是玻爾茲曼機?
[圖片上傳失敗...(image-d36b31-1519636788074)]
如圖所示爲一個玻爾茲曼機,其藍色節點爲隱層,白色節點爲輸入層。
玻爾茲曼機和遞歸神經網絡相比,區別體如今如下幾點:
一、遞歸神經網絡本質是學習一個函數,所以有輸入和輸出層的概念,而玻爾茲曼機的用處在於學習一組數據的「內在表示」,所以其沒有輸出層的概念。
二、遞歸神經網絡各節點連接爲有向環,而玻爾茲曼機各節點鏈接成無向徹底圖。
而受限玻爾茲曼機是什麼呢?
最簡單的來講就是加入了限制,這個限制就是將徹底圖變成了二分圖。即由一個顯層和一個隱層構成,顯層與隱層的神經元之間爲雙向全鏈接。
RBM
h表示隱藏層,v表示顯層
在RBM中,任意兩個相連的神經元之間有一個權值w表示其鏈接強度,每一個神經元自身有一個偏置係數b(對顯層神經元)和c(對隱層神經元)來表示其自身權重。
具體的公式推導在這裏就不展現了
DBN是一個機率生成模型,與傳統的判別模型的神經網絡相對,生成模型是創建一個觀察數據和標籤之間的聯合分佈,對P(Observation|Label)和 P(Label|Observation)都作了評估,而判別模型僅僅而已評估了後者,也就是P(Label|Observation)。
DBN由多個限制玻爾茲曼機(Restricted Boltzmann Machines)層組成,一個典型的神經網絡類型如圖所示。這些網絡被「限制」爲一個可視層和一個隱層,層間存在鏈接,但層內的單元間不存在鏈接。隱層單元被訓練去捕捉在可視層表現出來的高階數據的相關性。
DBN
生成對抗網絡 GAN
生成對抗網絡其實在以前的帖子中作過講解,這裏在說明一下。
生成對抗網絡的目標在於生成,咱們傳統的網絡結構每每都是判別模型,即判斷一個樣本的真實性。而生成模型可以根據所提供的樣本生成相似的新樣本,注意這些樣本是由計算機學習而來的。
GAN通常由兩個網絡組成,生成模型網絡,判別模型網絡。
生成模型 G 捕捉樣本數據的分佈,用服從某一分佈(均勻分佈,高斯分佈等)的噪聲 z 生成一個相似真實訓練數據的樣本,追求效果是越像真實樣本越好;判別模型 D 是一個二分類器,估計一個樣原本自於訓練數據(而非生成數據)的機率,若是樣原本自於真實的訓練數據,D 輸出大機率,不然,D 輸出小几率。
舉個例子:生成網絡 G 比如假幣制造團伙,專門製造假幣,判別網絡 D 比如警察,專門檢測使用的貨幣是真幣仍是假幣,G 的目標是千方百計生成和真幣同樣的貨幣,使得 D 判別不出來,D 的目標是千方百計檢測出來 G 生成的假幣。
傳統的判別網絡:
傳統的判別網絡
生成對抗網絡:
生成對抗網絡
在訓練的過程當中固定一方,更新另外一方的網絡權重,交替迭代,在這個過程當中,雙方都極力優化本身的網絡,從而造成競爭對抗,直到雙方達到一個動態的平衡(納什均衡),此時生成模型 G 恢復了訓練數據的分佈(造出了和真實數據如出一轍的樣本),判別模型再也判別不出來結果,準確率爲 50%。
下面展現一個cDCGAN的例子(前面帖子中寫過的)
生成網絡
生成網絡
判別網絡
判別網絡
最終結果,使用MNIST做爲初始樣本,經過學習後生成的數字,能夠看到學習的效果仍是不錯的。
生成網絡
小結
本文很是簡單的介紹了四種神經網絡的架構,CNN,RNN,DBN,GAN。固然也僅僅是簡單的介紹,並無深層次講解其內涵。這四種神經網絡的架構十分常見,應用也十分普遍。固然關於神經網絡的知識,不可能幾篇帖子就講解完,這裏知識講解一些基礎知識,幫助你們快速入(zhuang)門(bi)。後面的帖子將對深度自動編碼器,Hopfield 網絡長短時間記憶網絡(LSTM)進行講解。
做者:BlackBlog__ 連接:https://www.jianshu.com/p/546dc40b52c8 來源:簡書 著做權歸做者全部。商業轉載請聯繫做者得到受權,非商業轉載請註明出處。