文章目錄
- 淺層神經網絡的前向傳播
- 計算流程
- 矩陣在運算時形狀的變化
- 激活函數的作用
- 為什么要有激活函數
- 反向傳播
- 深層神經網絡
- 參數
- 超參數
- 參數初始化
- ·初始化權重的值選擇
淺層神經網絡的前向傳播
計算流程
第一個激活函數是為了把線性變換的各條線變成更便于擬合的,具有非線性特征的線
第二個線性變換是為了把這些具有非線性特征的線擬合成一條線
第二個激活函數是為了把結果限制在0-1之間
與單神經元相比,不同在于每個不同的神經元對相同的輸入有不同權
n*m n為隱層神經元個數,m為輸入的特征x的數目
- 這是W權重的矩陣
輸入的特征x | x1 | x2 | x3 | … | xm |
---|---|---|---|---|---|
神經元 | |||||
a1 | |||||
a2 | |||||
a3 | |||||
a4 | |||||
… | |||||
an |
而在單神經元中www僅有一行
矩陣在運算時形狀的變化
n是隱層神經元的個數,m是特征x的數目(一個樣本里有m個x),M是樣本數目n是隱層神經元的個數,m是特征x的數目(一個樣本里有m個x),M是樣本數目n是隱層神經元的個數,m是特征x的數目(一個樣本里有m個x),M是樣本數目
- 前向過程計算:
第一步,各神經元線性代換第一步,各神經元線性代換第一步,各神經元線性代換
z[1]=W[1]x+b[1](形狀:(n,M)=(n,m)?(m,M)+(M,1))z^{[1]} = W^{[1]}x + b^{[1]} (形狀:(n,M) = (n,m) * (m,M) + (M,1))z[1]=W[1]x+b[1](形狀:(n,M)=(n,m)?(m,M)+(M,1))
第二步,對各神經元的代換結果進行激活函數(z)第二步,對各神經元的代換結果進行激活函數(z)第二步,對各神經元的代換結果進行激活函數(z)
a[1]=σ(z[1])(形狀:(n,M))a^{[1]} = \sigma(z^{[1]}) (形狀:(n,M))a[1]=σ(z[1])(形狀:(n,M))
第三步,對各個神經元的激活函數(z)結果進行線性代換第三步,對各個神經元的激活函數(z)結果進行線性代換第三步,對各個神經元的激活函數(z)結果進行線性代換
z[2]=W[2]a[1]+b[2](形狀:(1,M)=(1,n)?(n,M)+(1,M))z^{[2]} = W^{[2]}a^{[1]} + b^{[2]} (形狀:(1,M) = (1,n) * (n,M) + (1,M))z[2]=W[2]a[1]+b[2](形狀:(1,M)=(1,n)?(n,M)+(1,M))
第四步,對匯總的線性代換進行σ(z)第四步,對匯總的線性代換進行\sigma(z)第四步,對匯總的線性代換進行σ(z)
a[2]=σ(z[2])(形狀:(1,M))a^{[2]} = \sigma(z^{[2]}) (形狀:(1,M))a[2]=σ(z[2])(形狀:(1,M))
- 第一步的結果(n,M),一個樣本占一列
輸入的樣本 | M1 | M2 | M3 | … | MM |
---|---|---|---|---|---|
神經元 | |||||
a1 | 線性代換的結果 | ||||
… | |||||
an |
- 第二步的結果(n,M),一個樣本占一列
輸入的樣本 | M1 | M2 | M3 | … | MM |
---|---|---|---|---|---|
神經元 | |||||
a1 | σ(線性代換的結果)\sigma(線性代換的結果)σ(線性代換的結果) | ||||
… | |||||
an |
- 第三步的結果,一個樣本占一格
輸入的樣本 | M1 | M2 | M3 | … | MM |
---|---|---|---|---|---|
各個神經元的σ(z)\sigma(z)σ(z)結果 | σ(z)\sigma(z)σ(z)線性代換的結果 |
- 第四步的結果,一個樣本占一格
輸入的樣本 | M1 | M2 | M3 | … | MM |
---|---|---|---|---|---|
σ(z)\sigma(z)σ(z)線性代換的結果 | σ(第三步線性代換)\sigma(第三步線性代換)σ(第三步線性代換)線性代換的結果,最終的預測概率 |
激活函數的作用
就是非線性變換
為什么要有激活函數
線性變換1 根據權重數據化到各個神經元,
線性變換2 將各個神經元非線性化后的結果線加上偏置后,擬合(加)成一條線,最終根據這條線σ(z)\sigma(z)σ(z)進行預測
隱層中有n神經元,最終就是n條激活函數的線擬合
如果不加激活函數,那么神經元就僅僅做線性變換,以AlexNet為例,這個神經網絡就會成為一個線性回歸模型。而一個線性回歸模型對于復雜非線性任務的處理能力是十分有限的。因此,我們需要添加非線性的激活函數,在神經網絡的輸入輸出之間形成非線性映射,讓網絡能力更為強大。
僅線性變化得到的,擬合(加起來)效果不如激活函數得到的非線性線的擬合
反向傳播
是單個神經元的反向傳播的疊加
深層神經網絡
與淺層神經網絡相同,只是隱層部分由多層神經元構成
提取圖片文字內容如下:
參數
參數即是我們在過程中想要模型學習到的信息(模型自己能計算出來的),例如W[l],b[l],而超參數(hyper parameters)即為控制參數的學習的一些信息(需要人經驗判斷)。超參數的改變會導致最終得到的參數W[l],b[l]的改變。
超參數
典型的超參數有:
? 學習速率:a學習速率:a學習速率:a
? 迭代次數:N迭代次數:N迭代次數:N
? 隱藏層的層數:L隱藏層的層數:L隱藏層的層數:L
? 每一層的神經元個數:n[1],n[2],...每一層的神經元個數:n^{[1]},n^{[2]},...每一層的神經元個數:n[1],n[2],...
? 激活函數g(z)的選擇激活函數g(z)的選擇激活函數g(z)的選擇
參數初始化
· 為什么要隨機初始化權重
權重初始化隨機,防止因相同變化始終相同
如果在初始時將兩個隱藏神經元的參數設置為相同的大小,那么兩個隱藏神經元對輸出單元的影響也是相同的,通過反向梯度下降去進行計算的時候,會得到同樣的梯度大小,所以在經過多次迭代后,兩個隱藏層單位仍然是對稱的。無論設置多少個隱藏單元,其最終的影響都是相同的,那么多個隱藏神經元就沒有了意義。
在初始化的時候,W參數要進行隨機初始化,不可以設置為0。b因為不存在上述問題,可以設置為0。
以2個輸入,2個隱藏神經元為例:
W=np?random?randn(2,2)?0.01W=np \cdot random \cdot randn(2,2)*0.01W=np?random?randn(2,2)?0.01
b=np?zeros((2,1))b=np \cdot zeros((2,1))b=np?zeros((2,1))
·初始化權重的值選擇
在tanh中初始權重要小一點,使其在0附近,是激活函數變化敏感的區域
這里將W的值乘以0.01(或者其他的常數值)的原因是為了使得權重W初始化為較小的值,這是因為使用sigmoid函數或者tanh函數作為激活函數時,W比較小,則Z=WX+b所得的值趨近于0,梯度較大,能夠提高算法的更新速度。而如果W設置的太大的話,得到的梯度較小,訓練過程因此會變得很慢。
ReLU和Leaky ReLU作為激活函數時不存在這種問題,因為在大于0的時候,梯度均為1。