一、基本概念
ann:artificial neural network前饋神經網路的縮寫
二、模型構建
2.1 神經元
2.2 啟用函式
意義:啟用函式是用來讓給神經網路加入非線性因素的,因為線性模型的表達能力不夠。如果沒有啟用函式,那麼該網路僅能表達線性對映,此時即便有再多的隱藏層,其整個網路跟單層神經網路也是等價的。
啟用函式應該如下性質:
1)非線性;
2)連續可微,容易求導,梯度下降法進行引數求解的要求;
3)範圍最好不飽和,當有飽和的區間段時,若系統優化進入該階段,梯度近似為0,網路的學習就會停止;
4)單調性,單調神經網路的誤差函式是凸的,容易進行凸優化;
啟用函式有哪幾種,各自的特點及使用場景?
sigmoid也有其自身的缺陷,最明顯的就是飽和性,具體來說,由於在後向傳播過程中,sigmoid向下傳導的梯度包含了乙個f'(x)因子,因此一旦輸入落入飽和區,f'(x)就會變得接近於0,導致了向底層傳遞的梯度也變得非常小。此時,網路引數很難得到有效訓練和更新。這種現象稱為梯度消失。一般來說,sigmoid網路在5層之內就會產生梯度消失現象。
此外,sigmoid函式的輸出均大於0,使得輸出不是0均值,這稱為偏移現象,這會導致後一層的神經元將得到上一層輸出的非0均值的訊號作為輸入。
tanh也是一種非常常見的啟用函式,與sigmoid相比,它的輸出均值是0,使得其收斂速度要比sigmoid快,減少迭代次數。然而,tanh一樣具有飽和性,從而造成梯度消失。
優點:梯度計算簡單,即是非線性函式,又避免了sigmoid的指數計算量大的問題
半飽和半區域抑制,既有優點(神經網路稀疏性),又有缺點(神經元死亡),起到了類似於l1的正則化通,可以在一定程度上緩解過擬合。
為什麼relu比sigmoid好?
1.連乘導致梯度下降;
2.飽和區域:sigmoid是雙飽和區,relu單側飽和,而且relu的單側飽和可以實現神經網路的稀疏性,有好處。
2.3 模型構建圖
三、損失函式
從神經網路的學習目標來說,如果是要做個分類器的話就是交叉熵損失函式,要做回歸問題的話就用mse.
3.1 交叉熵損失函式
1) softmax
多分類的normailization,它是將神經網路得到的多個值,進行歸一化處理,使得到的值在[0,1]之間,讓結果變得可解釋。即可以將結果看做是概率,某個類別的概率大,將樣本歸為該類別的可能性也越高。softmax公式如下:
2)交叉熵損失函式
神經網路的多分類問題,先用softmax把概率進行歸一化,再採用交叉熵損失函式作為loss function。
3.4 l1和l2正則解決過擬合
3.5 dropout的過擬合方案
dropout是指在深度學習網路的訓練過程中,對於神經網路單元,按照一定的概率將其暫時從網路中丟棄。注意是暫時。
對於隨機梯度下降來說,由於是隨機丟棄,故而每個mini-batch都在訓練不同的網路。
我們可以把dropout當做一種多模型效果平均的方式。對於減少測試集中的錯誤,我們可以將多個不同神經網路的**結果取平均,而因為dropout的隨機性,我們每次dropout後,網路模型都可以看成是乙個不同結構的神經網路,提公升了網路的魯棒性。
四、模型優化
4.1 優化方法 — 梯度下降法
4.2 引數更新,反向傳播演算法
梯度下降是反覆迭代計算loss函式對w,b的偏導。反向傳播思想可以用來方便的求出loss函式對每個引數的導數,其基本原理是求導時的鏈式法則。
bp思想:計算輸出與標籤見的損失函式值,然後計算其相對於每個神經元的梯度,根據梯度方向更新權值。
(1)將訓練集資料輸入到ann的輸入層,經過隱藏層,最後達到輸出層並輸出結果,這是ann的前向傳播過程;
(2)由於ann的輸出結果與實際結果有誤差,則計算估計值與實際值之間的差,將該差值從輸出層向隱藏層方向傳播,直至傳播到輸入層;
(3)在反向傳播的過程中,根據誤差調整各種引數的值;不斷迭代上述過程,直至收斂。
五、神經網路引數初始化問題
人工神經網路(ANN)
參考資料 從函式上來看,神經網路是回歸方程的級聯疊加,用來逼近目標函式的,本質是一種模擬特徵與目標之間的真實關係函式的模型 乙個有向拓撲,每層有若干節點,節點間有邊,邊上有權值。輸入層隱藏層 多層 後層是前層各節點值的線性組合的函式,即y f x0 w1x1 w2x2 wnxn 線性組合的係數就是邊...
人工神經網路(ANN)學習
神經元數學模型o i t 1 f 其中o為輸出,f為神經元變換函式,w為權重,t為閾值。如果新增乙個x0 1,w0j tj,可以簡化為 oj f w tjx 變換函式 有四種 閾值型 sigmoid 分段線性 概率分布 boltzmann 神經網路學習 通用學習規則 w j r wj t x t d...
神經網路 ANN(一)
神經網路 ann 新年啦!先給自己乙個小小的改變,比如寫一篇部落格。再給自己乙個小目標,比如3天內徒手寫個ann 所以,以下內容是在3天的時間內學到的,未免有不足之處,望指教。ann不是一下子就可以被發明出來的,期間經過了幾代人的努力才慢慢成型 參考 從單個神經元講起。乙個神經元其實很笨,它可以有多...