神經網路在最近幾年特別火,不管是做傳統機器學習的,還是分類、nlp的都需要去學習了解它。
只有一層隱藏層的神經網路:這時候相當於整合學習,隱藏層相當於bagging學習多個模型,輸出層使用上一層的結果作為輸入相當於boosting。也即模型擁有降低偏差和方差的能力。
沒有隱藏層的相當於感知機。
沒有隱藏層的網路只能處理線性的問題,不能處理非線性的問題。
**通用近似原理:**如果乙個神經網路擁有線性輸出層和至少乙個隱藏層,則在神經元足夠多的,(啟用函式)滿足一些弱條件的情況下,構造成的符合函式可以近似代替任何在rn上的連續函式。
通用近似定理告訴我們,一層不行就增加多層。但是如果在隱藏層的輸出仍然是線性的,函式符合後也將會是乙個線性的,可以通過調整係數後變為一層的模型。故隱藏層的輸出函式不能是線性的。我們稱每層的輸出函式為啟用函式。
如果有n個特徵,要想逼近任意的函式,則最少需要的節點數o(3(n-1)),此時對應的層數最少為2lo
g2
n2log_2n
2log2
n(向上取整).解釋:兩個特徵組合後輸出,再將結果和其他特徵組合,則至少有3(n-1)個節點,根據二分法,每次特徵兩兩運算,則最少需要2lo
g2
n2log_2n
2log2
n層。如果只需要一層隱藏層時,由於凸集上的vc dimension為2
n2^n
2n,故最多需要2
n2^n
2n個感知機即可完全分類。也即需要這麼多神經元才能逼近任意函式。
也即增加層數能在一定程度上降低運算量。
常用啟用函式:
leaky relu:為了解決relu的缺陷,我們可以使用 leaky relu,使0左側的導數不為0.f(z
)=
z & z \geq 0 \\ 1 & az<0 \end
f(z)={
z1z
≥0az
<0
一般a取乙個較小的值(a的值如果過大,可能會導致梯度**),可以實現一定的單側抑制、保留部分梯度,能避解決梯度消失。但是增加了引數,增加了人工調參的難度。可以把a當作乙個引數來學習。
模型的學習方法:上面說過,神經網路類似於bagging和boosting的整合,故可以像梯度提公升一樣來學習。但是層數多了後,這樣做運算複雜度大。通常使用反向傳播的方式來優化目標函式。
反向傳播就當作乙個復合函式的鏈式求導算了,哈哈哈(實際上和普通的鏈式求導還是有一定的區別,這裡是矩陣的求導,矩陣求導沒有鏈式法則,可以通過微分的定義來一步一步的推導)
平方損失函式:適合輸出為連續且最後一層不為sigmod、softmax的神經網路。
交叉熵損失函式:適合分類場景。
如果是從傳統機器學習的經驗來看,這是肯定的,平方適合回歸、交叉熵適合分類。但是為什麼在平方損失的適合場景下加了一條最後一層不為sigmod、softmax呢?輸出層的導數為(a−
y)f′
(z
)(a-y)f'(z)
(a−y)f
′(z)
。當z較大時,容易使梯度過小,學習慢。但是交叉熵的導數為ak−
1a_k-1
ak−
1,是線性的,z大小與梯度大小無關,不影響學習速度。
神經網路深度學習 學習小記
一 sigmod function出現的必要性 為什麼不直接用stage function?在feedback時,假如說我們現在用的是stage function,直接用樓梯式的跳躍函式,我們每次做很小的引數改動時。如果說這個之前這個引數使函式值落在0 1 改變的那一塊區域,即便我們做的change...
神經網路 卷積神經網路
這篇卷積神經網路是前面介紹的多層神經網路的進一步深入,它將深度學習的思想引入到了神經網路當中,通過卷積運算來由淺入深的提取影象的不同層次的特徵,而利用神經網路的訓練過程讓整個網路自動調節卷積核的引數,從而無監督的產生了最適合的分類特徵。這個概括可能有點抽象,我盡量在下面描述細緻一些,但如果要更深入了...
神經網路 卷積神經網路
1.卷積神經網路概覽 來自吳恩達課上一張,通過對應位置相乘求和,我們從左邊矩陣得到了右邊矩陣,邊緣是白色寬條,當畫素大一些時候,邊緣就會變細。觀察卷積核,左邊一列權重高,右邊一列權重低。輸入,左邊的部分明亮,右邊的部分灰暗。這個學到的邊緣是權重大的寬條 都是30 表示是由亮向暗過渡,下面這個圖左邊暗...