ML讀書筆記(前向神經網路)

2021-09-28 19:17:59 字數 2979 閱讀 3746

a.

1. 擬合異或的問題

2個輸入變數x和y,寫出異或真值表(<0,0>=>0, <0,1>=>1, <1,0>=>1, <1,1>=>0),擬合異或:

如果直接使用線性變化+啟用函式,即f(ax+by+c), f可以為sigmoid函式,根據啟用函式單調性,由第1和第2條可得b是正數,由第1和第3條可得a是正數,第2和第4條可得a是負數和之前矛盾,第3和第4條可得b是負數和之前矛盾。

使用一層隱藏層+啟用函式+線性輸出層,隱藏層只有2個神經元,啟用函式用relu; 神經元h1=x+y-1;神經元h2=-x-y+1; 前者得(-1,0,0,1),後者得(1,0,0,-1);經過relu,前者得z1=(0,0,0,1),後者得z2=(1,0,0,0);輸出層-z1-z2+1, 得(0,1,1,0),即異或;

通用近似定理:至少一層具有任何一種「擠壓」性質的啟用函式的隱藏層+線性輸出層,只要隱藏層單元足夠多,可以以任意精度近似任何函式。(一層隱藏層,不太好學習到引數,所以通常都是多層)

b.啟用函式的作用:對於線性不可分問題(如異或函式),需要非線性變換對資料的分布進行重新對映。非線性啟用函式,可避免多層網路等效於單層線性函式(m*n=v),從而獲得更強大的擬合能力。

sigmoid函式的導數=p(1-p); tanh函式的樣子:f(z)=(e^z-e^(-z))/(e^z+e^(-z)), 導數=1-p^2; relu函式的導數=當z>0時為1,當z<=0時為0。

梯度消失問題(導數接近0時,叫做「飽和」):sigmoid函式,當p接近0和接近1時,導數p(1-p)接近0;tanh函式,當p接近1和-1時,導數1-p^2接近0;

tanh(x)=2sigmoid(2x)-1,即tanh函式相當於sigmoid經過伸縮和平移後的;

relu的3個優點:1.不需要計算指數,計算複雜度低;2.relu的非飽和性可以有效解決梯度消失問題,提供相對寬的啟用邊界(x>0都是啟用範圍?);3. relu的單側抑制提供了網路的稀疏表達能力(?)

relu的缺點:負輸入值的梯度被置0,可能導致一定比例的神經元不可逆死亡,部分引數的梯度無法更新,可能導致訓練失敗。

relu, leaky relu, prelu, rrelu

c.反向傳播的梯度推導:注意最後一層,平方誤差損失函式則不要加啟用函式,交叉熵損失函式是softmax後的p和label-y進行交叉熵,也不用啟用函式(softmax函式之前也是線性變化,沒有啟用函式)

softmax的梯度推導,很麻煩;

平方誤差損失函式,為什麼最後一層不使用啟用函式:從梯度消失的角度看,加了啟用會使梯度更容易消失;

d.權重初始化,除了bias可以初始化為0之外,不能全部初始化為相等值或者0:如果全相等,會導致每層所有神經元的值全相等,反向傳播時每層梯度也全相等,廢了;

隨機初始化權重:

dropout: 本質是模型整合,可降低過擬合。假設有n個神經元,則相當於2^n個不同的網路,進行整合;

書上說在測試階段進行縮放;先進些的是在訓練階段期間對啟用值進行縮放,而測試階段保持不變,從而減少測試階段計算量

當前dropout被大量利用於全連線網路,而且一般人為設定為0.5或者0.3,而在卷積隱藏層由於卷積自身的稀疏化以及稀疏化的relu函式的大量使用等原因,dropout策略在卷積隱藏層中使用較少

dropout為何有效:1. 減少神經元之間的聯合適應性,可降低過擬合;2.下一層的節點減少受上一層某個特別「強」的節點影響,相當於加了正則化;3. 模型整合,可降低過擬合;

輸入資料歸一化的原因:如果資料分布離原點遠,只分布在某乙個象限,則要學習的分割超平面w就會1.學習慢,2.容易陷入區域性最優;歸一化以後資料分布落在原點的四周,有助於w的快速收斂;

歸一化之後還得伸縮和平移,盡量恢復原始資料分布(?)

bn(batch normalization):每個神經元(而不是整個層)(bp神經網路的話,等於神經元的個數;卷積神經網路的話,等於卷積核的個數,在當前mini-batch上進行歸一化;可使得網路在每次mini-batch都去擬合範圍類似的資料分布,更容易訓練;相當於給資料加了約束,增強了模型的泛化能力;

bn在測試時,就並沒有batch的概念,因此,這個時候用的均值和方差是全量訓練資料的均值和方差,這個可以通過移動平均法求得。

訓練時用mini-batch的歸一化,而不是全域性歸一化,目的是增強模型魯棒性,減少過擬合。也正是因此,bn一般要求將訓練集完全打亂,並用乙個較大的batch值,否則,乙個batch的資料無法較好得代表訓練集的分布,會影響模型訓練的效果。

的作用:如果使用啟用函式使用sigmoid,那麼這個操作會強制輸入資料分布在sigmoid接近線性的部分,接近線性的模型顯然不好(影響整個模型的表達能力)。所以要學習伸縮和平移這兩個引數;

e.1. cnn的稀疏互動:輸出之和輸入的區域性區域有關;物理意義:現實世界中的資料都具有區域性的特徵結構,先學習區域性特徵,再將區域性特徵組合起來得到複雜特徵。

2. cnn的引數共享:卷積核對不同的輸入區域用的同一組引數;物理意義:使得卷積層具有平移等變性,即先卷積再平移,和先平移再卷積,是等價的。

均值池化vs最大池化:均值池化對背景的保留效果更好;最大池化更好的提取紋理資訊;

重疊池化:步長小於視窗時;空間金字塔池化:用多種size的池化,最後將結果拼在一起;

池化能保持對平移、伸縮、旋轉操作的不變形(?)

cnn用在文字上:他用了2種embedding(1.預訓練好就不改變的;2.隨著task訓練而變化的),卷積的輸入就變成了2個通道;

反向傳播的公式推導,可以說明梯度消失問題,隨著層數增多而明顯消失;

resnet:為了解決退化問題(層數越多,在訓練集和測試集上的效果不公升反降);原因:梯度消散;

把x直接加到後面兩層的輸出f(x)上,即h(x)=f(x)+x,這樣f(x)只需要擬合h(x)-x即殘差,使得多加一層不會讓效果更差;反向傳播時,梯度可直接傳至兩層之前;

讀書筆記 神經網路與深度學習(三)前饋神經網路

從機器學習的角度看,神經網路一般可以看做是乙個非線性模型。淨輸入z 在經過乙個非線性函式f 後,得到神經元的活性值 activation a,a f z 其中非線性函式f 稱為啟用函式 activation function 啟用函式 啟用函式在神經元中非常重要的。為了增強網路的表示能力和學習能力,...

《人工神經網路》讀書筆記

day 1 神經網路 指生物的大腦神經元,細胞,觸點等組成的網路,用於產生生物的意識,幫助生物進行思考和行動。人工神經網路 指旨在模仿人腦結構及其功能的資訊處理系統。人腦與計算機資訊處理機制的比較 1 系統結構 2 訊號形式 3 資訊儲存 4 資訊處理機制 1 系統結構 人腦 由數百億神經元相互連線...

面試 前向神經網路

z很大或者很小時,梯度都會趨於0 優點 反向傳播 乙個是回歸,乙個是分類 平方誤差基於梯度的學習速度非常緩慢,交叉熵導數是線性的。不能,因為神經網路同層同構,擁有相同的輸入,如果引數也完全相同則無論前向還是後向結果都是一樣的,學習過程永遠無法打破這種對稱性,最終學習過的引數仍然相同。dropout作...