1. (七)神經網路基本結構
目前為止,我們已經學習了2個機器學習模型。線性回歸一般用來處理線性問題,邏輯回歸用來處理2分類問題。雖然邏輯回歸也可以處理非線性的分類問題,但是當我們有非常多的特徵時,例如大於100個變數,將會有數量非常驚人的特徵組合。這對於一般的邏輯回歸來說需要計算的特徵太多了,負荷太大。而神經網路既可以答衫解決復雜的非線性分類問題,又可以避免龐大的計算量。
人工神經網路是由很多神經元(激活單元)構成的,神經元是神經網路的基本元素。
實際上,可以這樣理解神經元工作過程,當將輸入送進神經元後,神經元將輸入與權值線性組合(實際上就是θ T X)輸出一個線性表達式,再將這個表達式送嘩舉拿入激活函數中,便得到了神經元的真實輸出。
神經網路由好多個激活單元構成,如下圖所示:
激活函數的選擇是構建神經網路過程中的重要環節,下面簡要介紹常用的激活函數。
(1) 線性函數( Liner Function )
(2) 斜面函數( Ramp Function )**
(3) 閾值函數( Threshold Function )**
以上3個激活函數都屬於線性函數,下面介紹兩個常用的非線性激活函數。
(4) S形函數( Sigmoid Function )
S形函數與雙極S形函數的圖像如下:
雙極S形函數與S形函數主要區別在於函數的值域,雙極S形函數值域是(-1,1),而S形函數值域是(0,1)。由於S形函數與雙極S形函數都是 可導的 (導函數是連續函數),因此適合用在BP神經亂搭網路中。(BP演算法要求激活函數可導)
人工神經網路中,最常用的激活函數就是sigmoid函數
神經網路是由大量的神經元互聯而構成的網路。根據網路中神經元的互聯方式,常見網路結構主要可以分為下面3類:
前饋網路也稱前向網路,是最常見的神經網路,前文提到的都是前饋網路。稱之為前饋是因為它在輸出和模型本身之間沒有反饋,數據只能向前傳送,直到到達輸出層,層間沒有向後的反饋信號。
反饋型神經網路是一種從輸出到輸入具有反饋連接的神經網路,其結構比前饋網路要復雜得多。
自組織神經網路是一種無監督學習網路。它通過自動尋找樣本中的內在規律和本質屬性,自組織、自適應地改變網路參數與結構。
2. 神經網路Hopfield模型
一、Hopfield模型概述
1982年,美國加州工學院J.Hopfield發表一篇對人工神經網路研究頗有影響的論文。他提出了一種具有相互連接的反饋型人工神經網路模型——Hopfield人工神經網路。
Hopfield人工神經網路是一種反饋網路(Recurrent Network),又稱自聯想記憶網路。其目的是為了設計一個網路,存儲一組平衡點,使得當給網路一組初始值時,網路通過自行運行而最終收斂到所存儲的某個平衡點上。
Hopfield網路是單層對稱全反饋網路,根據其激活函數的選取不同,可分為離散型Hopfield網路(Discrete Hopfield Neural Network,簡稱 DHNN)和連續型 Hopfield 網路(Continue Hopfield Neural Network,簡稱CHNN)。離散型Hopfield網路的激活函數為二值型階躍函數,主要用於聯想記憶、模式分類、模式識別。這個軟體為離散型Hopfield網路的設計、應用。
二、Hopfield模型原理
離散型Hopfield網路的設計目的是使任意輸入矢量經過網路循環最終收斂到網路所記憶的某個樣本上。
正交化的權值設計
這一方法的基本思想和出發點是為了滿足下面4個要求:
1)保證系統在非同步工作時的穩定性,即它的權值是對稱的,滿足
wij=wji,i,j=1,2…,N;
2)保證所有要求記憶的穩定平衡點都能收斂到自己;
3)使偽穩定點的數目盡可能地少;
4)使穩定點的吸引力盡可能地大。
正交化權值的計算公式推導如下:
1)已知有P個需要存儲的穩定平衡點x1,x2…,xP-1,xP,xp∈RN,計算N×(P-1)階矩陣A∈RN×(P-1):
A=(x1-xPx2-xP…xP-1-xP)T。
2)對A做奇異值分解
A=USVT,
U=(u1u2…uN),
V=(υ1υ2…υP-1),
中國礦產資源評價新技術與評價新模型
Σ=diαg(λ1,λ2,…,λK),O為零矩陣。
K維空間為N維空間的子空間,它由K個獨立的基組成:
K=rαnk(A),
設{u1u2…uK}為A的正交基,而{uK+1uK+2…uN}為N維空間的補充正交基。下面利用U矩陣來設計權值。
3)構造
中國礦產資源評價新技術與評價新模型
總的連接權矩陣為:
Wt=Wp-T·Wm,
其中,T為大於-1的參數,預設值為10。
Wp和Wm均滿足對稱條件,即
(wp)ij=(wp)ji,
(wm)ij=(wm)ji,
因而Wt中分量也滿足對稱條件。這就保證了系統在非同步時能夠收斂並且不會出現極限環。
4)網路的偏差構造為
bt=xP-Wt·xP。
下面推導記憶樣本能夠收斂到自己的有效性。
(1)對於輸入樣本中的任意目標矢量xp,p=1,2,…,P,因為(xp-xP)是A中的一個矢量,它屬於A的秩所定義的K個基空間的矢量,所以必存在系數α1,α2,…,αK,使
xp-xP=α1u1+α2u2+…+αKuK,
即
xp=α1u1+α2u2+…+αKuK+xP,
對於U中任意一個ui,有
中國礦產資源評價新技術與評價新模型
由正交性質可知,上式中
當i=j,
當i≠j,
對於輸入模式xi,其網路輸出為
yi=sgn(Wtxi+bt)
=sgn(Wpxi-T·Wmxi+xP-WpxP+T·WmxP)
=sgn[Wp(xi-xP)-T·Wm(xi-xP)+xP]
=sgn[(Wp-T·Wm)(xi-xP)+xP]
=sgn[Wt(xi-xP)+xP]
=sgn[(xi-xP)+xP]
=xi。
(2)對於輸入模式xP,其網路輸出為
yP=sgn(WtxP+bt)
=sgn(WtxP+xP-WtxP)
=sgn(xP)
=xP。
(3)如果輸入一個不是記憶樣本的x,網路輸出為
y=sgn(Wtx+bt)
=sgn[(Wp-T·Wm)(x-xP)+xP]
=sgn[Wt(x-xP)+xP]。
因為x不是已學習過的記憶樣本,x-xP不是A中的矢量,則必然有
Wt(x-xP)≠x-xP,
並且再設計過程中可以通過調節Wt=Wp-T·Wm中的參數T的大小來控制(x-xP)與xP的符號,以保證輸入矢量x與記憶樣本之間存在足夠的大小余額,從而使sgn(Wtx+bt)≠x,使x不能收斂到自身。
用輸入模式給出一組目標平衡點,函數HopfieldDesign( )可以設計出 Hopfield 網路的權值和偏差,保證網路對給定的目標矢量能收斂到穩定的平衡點。
設計好網路後,可以應用函數HopfieldSimu( ),對輸入矢量進行分類,這些輸入矢量將趨近目標平衡點,最終找到他們的目標矢量,作為對輸入矢量進行分類。
三、總體演算法
1.Hopfield網路權值W[N][N]、偏差b[N]設計總體演算法
應用正交化權值設計方法,設計Hopfield網路;
根據給定的目標矢量設計產生權值W[N][N],偏差b[N];
使Hopfield網路的穩定輸出矢量與給定的目標矢量一致。
1)輸入P個輸入模式X=(x[1],x[2],…,x[P-1],x[P])
輸入參數,包括T、h;
2)由X[N][P]構造A[N][P-1]=(x[1]-x[P],x[2]-x[P],…,x[P-1]-x[P]);
3)對A[N][P-1]作奇異值分解A=USVT;
4)求A[N][P-1]的秩rank;
5)由U=(u[1],u[2],…,u[K])構造Wp[N][N];
6)由U=(u[K+1],…,u[N])構造Wm[N][N];
7)構造Wt[N][N]=Wp[N][N]-T*Wm[N][N];
8)構造bt[N]=X[N][P]-Wt[N][N]*X[N][P];
9)構造W[N][N](9~13),
構造W1[N][N]=h*Wt[N][N];
10)求W1[N][N]的特徵值矩陣Val[N][N](對角線元素為特徵值,其餘為0),特徵向量矩陣Vec[N][N];
11)求Eval[N][N]=diag{exp[diag(Val)]}[N][N];
12)求Vec[N][N]的逆Invec[N][N];
13)構造W[N][N]=Vec[N][N]*Eval[N][N]*Invec[N][N];
14)構造b[N],(14~15),
C1=exp(h)-1,
C2=-(exp(-T*h)-1)/T;
15)構造
中國礦產資源評價新技術與評價新模型
Uˊ——U的轉置;
16)輸出W[N][N],b[N];
17)結束。
2.Hopfield網路預測應用總體演算法
Hopfield網路由一層N個斜坡函數神經元組成。
應用正交化權值設計方法,設計Hopfield網路。
根據給定的目標矢量設計產生權值W[N][N],偏差b[N]。
初始輸出為X[N][P],
計算X[N][P]=f(W[N][N]*X[N][P]+b[N]),
進行T次迭代,
返回最終輸出X[N][P],可以看作初始輸出的分類。
3.斜坡函數
中國礦產資源評價新技術與評價新模型
輸出范圍[-1,1]。
四、數據流圖
Hopfield網數據流圖見附圖3。
五、調用函數說明
1.一般實矩陣奇異值分解
(1)功能
用豪斯荷爾德(Householder)變換及變形QR演算法對一般實矩陣進行奇異值分解。
(2)方法說明
設A為m×n的實矩陣,則存在一個m×m的列正交矩陣U和n×n的列正交矩陣V,使
中國礦產資源評價新技術與評價新模型
成立。其中
Σ=diag(σ0,σ1,…σp)p⩽min(m,n)-1,
且σ0≥σ1≥…≥σp>0,
上式稱為實矩陣A的奇異值分解式,σi(i=0,1,…,p)稱為A的奇異值。
奇異值分解分兩大步:
第一步:用豪斯荷爾德變換將A約化為雙對角線矩陣。即
中國礦產資源評價新技術與評價新模型
其中
中國礦產資源評價新技術與評價新模型
j具有如下形式:
中國礦產資源評價新技術與評價新模型
其中ρ為一個比例因子,以避免計算過程中的溢出現象與誤差的累積,Vj是一個列向量。即
Vj=(υ0,υ1,…,υn-1),
則
中國礦產資源評價新技術與評價新模型
其中
中國礦產資源評價新技術與評價新模型
第二步:用變形的QR演算法進行迭代,計算所有的奇異值。即:用一系列的平面旋轉變換對雙對角線矩陣B逐步變換成對角矩陣。
在每一次的迭代中,用變換
中國礦產資源評價新技術與評價新模型
其中變換
在每次迭代時,經過初始化變換V01後,將在第0列的主對角線下方出現一個非0元素。在變換V01中,選擇位移植u的計算公式如下:
中國礦產資源評價新技術與評價新模型
最後還需要對奇異值按非遞增次序進行排列。
在上述變換過程中,若對於某個次對角線元素ej滿足
|ej|⩽ε(|sj+1|+|sj|)
則可以認為ej為0。
若對角線元素sj滿足
|sj|⩽ε(|ej-1|+|ej|)
則可以認為sj為0(即為0奇異值)。其中ε為給定的精度要求。
(3)調用說明
int bmuav(double*a,int m,int n,double*u,double*v,double eps,int ka),
本函數返回一個整型標志值,若返回的標志值小於0,則表示出現了迭代60次還未求得某個奇異值的情況。此時,矩陣的分解式為UAVT;若返回的標志值大於0,則表示正常返回。
形參說明:
a——指向雙精度實型數組的指針,體積為m×n。存放m×n的實矩陣A;返回時,其對角線給出奇異值(以非遞增次序排列),其餘元素為0;
m——整型變數,實矩陣A的行數;
n——整型變數,實矩陣A的列數;
u——指向雙精度實型數組的指針,體積為m×m。返回時存放左奇異向量U;
υ——指向雙精度實型數組的指針,體積為n×n。返回時存放右奇異向量VT;
esp——雙精度實型變數,給定的精度要求;
ka——整型變數,其值為max(m,n)+1。
2.求實對稱矩陣特徵值和特徵向量的雅可比過關法
(1)功能
用雅可比(Jacobi)方法求實對稱矩陣的全部特徵值與相應的特徵向量。
(2)方法說明
雅可比方法的基本思想如下。
設n階矩陣A為對稱矩陣。在n階對稱矩陣A的非對角線元素中選取一個絕對值最大的元素,設為apq。利用平面旋轉變換矩陣R0(p,q,θ)對A進行正交相似變換:
A1=R0(p,q,θ)TA,
其中R0(p,q,θ)的元素為
rpp=cosθ,rqq=cosθ,rpq=sinθ,
rqp=sinθ,rij=0,i,j≠p,q。
如果按下式確定角度θ,
中國礦產資源評價新技術與評價新模型
則對稱矩陣A經上述變換後,其非對角線元素的平方和將減少
綜上所述,用雅可比方法求n階對稱矩陣A的特徵值及相應特徵向量的步驟如下:
1)令S=In(In為單位矩陣);
2)在A中選取非對角線元素中絕對值最大者,設為apq;
3)若|apq|<ε,則迭代過程結束。此時對角線元素aii(i=0,1,…,n-1)即為特徵值λi,矩陣S的第i列為與λi相應的特徵向量。否則,繼續下一步;
4)計算平面旋轉矩陣的元素及其變換後的矩陣A1的元素。其計算公式如下
中國礦產資源評價新技術與評價新模型
5)S=S·R(p,q,θ),轉(2)。
在選取非對角線上的絕對值最大的元素時用如下方法:
首先計算實對稱矩陣A的非對角線元素的平方和的平方根
中國礦產資源評價新技術與評價新模型
然後設置關口υ1=υ0/n,在非對角線元素中按行掃描選取第一個絕對值大於或等於υ1的元素αpq進行平面旋轉變換,直到所有非對角線元素的絕對值均小於υ1為止。再設關口υ2=υ1/n,重復這個過程。以此類推,這個過程一直作用到對於某個υk<ε為止。
(3)調用說明
void cjcbj(double*a,int n,double*v,double eps)。
形參說明:
a——指向雙精度實型數組的指針,體積為n×n,存放n階實對稱矩陣A;返回時,其對角線存放n個特徵值;
n——整型變數,實矩陣A的階數;
υ——指向雙精度實型數組的指針,體積為n×n,返回特徵向量,其中第i列為與λi(即返回的αii,i=0,1,……,n-1)對應的特徵向量;
esp——雙精度實型變數。給定的精度要求。
3.矩陣求逆
(1)功能
用全選主元高斯-約當(Gauss-Jordan)消去法求n階實矩陣A的逆矩陣。
(2)方法說明
高斯-約當法(全選主元)求逆的步驟如下:
首先,對於k從0到n-1做如下幾步:
1)從第k行、第k列開始的右下角子陣中選取絕對值最大的元素,並記住此元素所在的行號和列號,再通過行交換和列交換將它交換到主元素位置上,這一步稱為全選主元;
2)
3)
4)αij-
5)-
最後,根據在全選主元過程中所記錄的行、列交換的信息進行恢復,恢復原則如下:在全選主元過程中,先交換的行、列後進行恢復;原來的行(列)交換用列(行)交換來恢復。
圖8-4 東昆侖—柴北緣地區基於HOPFIELD模型的銅礦分類結果圖
(3)調用說明
int brinv(double*a,int n)。
本函數返回一個整型標志位。若返回的標志位為0,則表示矩陣A奇異,還輸出信息「err**not inv」;若返回的標志位不為0,則表示正常返回。
形參說明:
a——指向雙精度實型數組的指針,體積為n×n。存放原矩陣A;返回時,存放其逆矩陣A-1;
n——整型變數,矩陣的階數。
六、實例
實例:柴北緣—東昆侖地區銅礦分類預測。
選取8種因素,分別是重砂異常存在標志、水化異常存在標志、化探異常峰值、地質圖熵值、Ms存在標志、Gs存在標志、Shdadlie到區的距離、構造線線密度。
構置原始變數,並根據原始數據構造預測模型。
HOPFIELD模型參數設置:訓練模式維數8,預測樣本個數774,參數個數8,迭代次數330。
結果分44類(圖8-4,表8-5)。
表8-5 原始數據表及分類結果(部分)
續表
3. 2.前饋型神經網路與反饋型神經網路
隨著神經網路的不斷發展,越來越多的人工神經網路模型也被創造出來了,其中,具有代表性的就是前饋型神經網路模型以及反饋型神經網路模型。
1.前饋型神經網路模型
前饋神經網路(Feedforward Neural Network),簡稱前饋網路,是人工神經網路的一種。在此種神經網路中,各神經元從輸入層開始,接收前一級輸入,並輸出到下一級,直至輸出層。整個網路中無反饋,可用一個有向無環圖表示。
前饋神經網路採用一種單向多層結構,其拓撲結構如圖1所示。其中每一層包含若干個神經元,同一層的神經元之間沒有互相連接,層間信息的傳送只沿一個方向進行。其中第一層稱為輸入層。最後一層為輸出層.中間為隱含層,簡稱隱層。隱層可以是一層。也可以是多層
2.反饋型神經神經網路
反饋神經網路是一種反饋動力學系統。在這種網路中,每個神經元同時將自身的輸出信號作為輸入信號反饋給其他神經元,它需要工作一段時間才能達到穩定。Hopfield神經網路是反饋網路中最簡單且應用廣泛的模型,它具有聯想記憶的功能,如果將李雅普諾夫函數定義為巡遊函數,Hopfield神經網路還可以用來解決快速尋優問題,Hopfield網路可以分為離散型Hopfield網路和連續型Hopfield網路,其中,離散型Hopfield網路拓撲結構如圖2所示。
4. 前饋式神經網路與反饋式神經網路有何不同
前饋式神經網路和反饋式神經網路是兩種主要的神經網路架構。
前饋式神經網路是信息在網路中單向流動的結構,它的信息只能從輸入層流向輸出層。常見的遲掘慎前饋式神經網路有多層感知器和卷積神經網路。
反饋散鎮式神經網路是信息在網路中雙碼敬向流動的結構,信息可以從輸入層流向輸出層,也可以從輸出層流回輸入層。常見的反饋式神經網路有循環神經網路和遞歸神經網路。
前饋式神經網路適用於靜態任務,而反饋式神經網路適用於動態任務。
5. 神經網路:卷積神經網路(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)按極小化誤差的方法反向傳播調整權矩陣。
6. 人工神經網路有哪些類型
人工神經網路模型主要考慮網路連接的拓撲結構、神經元的特徵、學習規則等。目前,已有近40種神經網路模型,其中有反傳網路、感知器、自組織映射、Hopfield網路、波耳茲曼機、適應諧振理論等。根據連接的拓撲結構,神經網路模型可以分為:
(1)前向網路 網路中各個神經元接受前一級的輸入,並輸出到下一級,網路中沒有反饋,可以用一個有向無環路圖表示。這種網路實現信號從輸入空間到輸出空間的變換,它的信息處理能力來自於簡單非線性函數的多次復合。網路結構簡單,易於實現。反傳網路是一種典型的前向網路。
(2)反饋網路 網路內神經元間有反饋,可以用一個無向的完備圖表示。這種神經網路的信息處理是狀態的變換,可以用動力學系統理論處理。系統的穩定性與聯想記憶功能有密切關系。Hopfield網路、波耳茲曼機均屬於這種類型。
學習是神經網路研究的一個重要內容,它的適應性是通過學習實現的。根據環境的變化,對權值進行調整,改善系統的行為。由Hebb提出的Hebb學習規則為神經網路的學習演算法奠定了基礎。Hebb規則認為學習過程最終發生在神經元之間的突觸部位,突觸的聯系強度隨著突觸前後神經元的活動而變化。在此基礎上,人們提出了各種學習規則和演算法,以適應不同網路模型的需要。有效的學習演算法,使得神經網路能夠通過連接權值的調整,構造客觀世界的內在表示,形成具有特色的信息處理方法,信息存儲和處理體現在網路的連接中。
根據學習環境不同,神經網路的學習方式可分為監督學習和非監督學習。在監督學習中,將訓練樣本的數據加到網路輸入端,同時將相應的期望輸出與網路輸出相比較,得到誤差信號,以此控制權值連接強度的調整,經多次訓練後收斂到一個確定的權值。當樣本情況發生變化時,經學習可以修改權值以適應新的環境。使用監督學習的神經網路模型有反傳網路、感知器等。非監督學習時,事先不給定標准樣本,直接將網路置於環境之中,學習階段與工作階段成為一體。此時,學習規律的變化服從連接權值的演變方程。非監督學習最簡單的例子是Hebb學習規則。競爭學習規則是一個更復雜的非監督學習的例子,它是根據已建立的聚類進行權值調整。自組織映射、適應諧振理論網路等都是與競爭學習有關的典型模型。
研究神經網路的非線性動力學性質,主要採用動力學系統理論、非線性規劃理論和統計理論,來分析神經網路的演化過程和吸引子的性質,探索神經網路的協同行為和集體計算功能,了解神經信息處理機制。為了探討神經網路在整體性和模糊性方面處理信息的可能,混沌理論的概念和方法將會發揮作用。混沌是一個相當難以精確定義的數學概念。一般而言,「混沌」是指由確定性方程描述的動力學系統中表現出的非確定性行為,或稱之為確定的隨機性。「確定性」是因為它由內在的原因而不是外來的雜訊或干擾所產生,而「隨機性」是指其不規則的、不能預測的行為,只可能用統計的方法描述。混沌動力學系統的主要特徵是其狀態對初始條件的靈敏依賴性,混沌反映其內在的隨機性。混沌理論是指描述具有混沌行為的非線性動力學系統的基本理論、概念、方法,它把動力學系統的復雜行為理解為其自身與其在同外界進行物質、能量和信息交換過程中內在的有結構的行為,而不是外來的和偶然的行為,混沌狀態是一種定態。混沌動力學系統的定態包括:靜止、平穩量、周期性、准同期性和混沌解。混沌軌線是整體上穩定與局部不穩定相結合的結果,稱之為奇異吸引子。
7. 神經網路連接方式分為哪幾類每一類有哪些特點
神經網路模型的分類
人工神經網路的模型很多,可以按照不同的方法進行分類。其中,常見的兩種分類方法是,按照網路連接的拓樸結構分類和按照網路內部的信息流向分類。
1 按照網路拓樸結構分類
網路的拓樸結構,即神經元之間的連接方式。按此劃分,可將神經網路結構分為兩大類:層次型結構和互聯型結構。
層次型結構的神經網路將神經元按功能和順序的不同分為輸出層、中間層(隱層)、輸出層。輸出層各神經元負責接收來自外界的輸入信息,並傳給中間各隱層神經元;隱層是神經網路的內部信息處理層,負責信息變換。根據需要可設計為一層或多層;最後一個隱層將信息傳遞給輸出層神經元經進一步處理後向外界輸出信息處理結果。
而互連型網路結構中,任意兩個節點之間都可能存在連接路徑,因此可以根據網路中節點的連接程度將互連型網路細分為三種情況:全互連型、局部互連型和稀疏連接型
2 按照網路信息流向分類
從神經網路內部信息傳遞方向來看,可以分為兩種類型:前饋型網路和反饋型網路。
單純前饋網路的結構與分層網路結構相同,前饋是因網路信息處理的方向是從輸入層到各隱層再到輸出層逐層進行而得名的。前饋型網路中前一層的輸出是下一層的輸入,信息的處理具有逐層傳遞進行的方向性,一般不存在反饋環路。因此這類網路很容易串聯起來建立多層前饋網路。
反饋型網路的結構與單層全互連結構網路相同。在反饋型網路中的所有節點都具有信息處理功能,而且每個節點既可以從外界接受輸入,同時又可以向外界輸出。
8. 一文看懂四種基本的神經網路架構
原文鏈接:
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)進行講解。