多層神經網路的線性與擬合問題

2021-09-19 11:58:46 字數 1173 閱讀 5965

什麼是正則化?

所謂的正則化,就是在神經網路計算損失值的過程中,在損失後面再加一項。這樣損失值所代表的輸出與標準結果間的誤差就會受到干擾,導致學習引數w和b無法按照目標方向來調整,實現模型無法與樣本完全擬合的結果,從而達到防止過擬合的效果。

如何新增干擾項呢?

干擾項一定有這樣的特性。

由此引入了兩個範數l1和l2。

tensorflow中有封裝好的l2正則化函式tf.nn.l2_loss(w),l1的正則化函式目前沒有現成的,可以組合為:

tf.reduce_sum(tf.abs(w))
新增正則化處理:()

reg = 0.01

loss = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(labels=y, logits=pred)) + tf.nn.l2_loss(w) * reg

dropout原理

在訓練過程中,每次隨機選擇一部分節點不去「學習」。

因為在樣本資料的分析來看,資料本身不可能很純淨,即任何乙個模型不能百分之百把資料完全分開,在某一類中一定會有一些異常資料,過擬合的問題恰恰是把這些異常資料當成規律來學習了。對於模型來講,我們希望它能有一定的智商,把異常資料過濾掉,只關心有用的規律資料。

異常資料的特點是,它與主流樣本中的規律都不同,但是量非常少,相當於在乙個樣本**現的概率比主流資料出現的概率低很多。我們就是利用這個特性,通過在每次模型中忽略一些節點的資料學習,將小概率的異常資料獲得學習的機會降低,這樣這些異常資料對模型的影響就會更小了。

tips:由於dropout讓一部分節點不去學習,所以在增加模型泛化能力的同時,會使學習速度降低,使模型不太容易學成,所以在使用的過程中需要合理的調節到底丟棄多少節點,並不是丟棄的節點越多越好。

函式原型

dropout(x, keep_prob, noise_shape=none, seed=none, name=none)
tip:dropout改變了神經網路的網路結構,它僅僅是屬於訓練時的方法,所以一般在進行測試時要將dropout的keep_prob變為1,代表不需要進行丟棄,否則會影響模型的正常輸出。

神經網路簡介 多層神經網路

如上圖所示,該神經網路有三層。我們標記第一層 也就是輸入層 為a 1 第一層與第二層連線權重為w 1 然後第一層輸入與第一層權重的線性和為z 1 第一層神經元個數為n 1 並依次標記剩餘網路層。可以看出,存在 z l j i 1 n l a l i w l i,j a l w l j a l 1 f...

人工神經網路 多層神經網路

模型原型 sklearn.neural network.mlpclassifier hidden layer sizes 100,activation relu algorithm adam alpha 0.0001,batch size auto learning rate constant le...

神經網路的過擬合問題

神經網路模型訓練會出現三種情況 模型過於簡單,模型合理,過擬合。為避免過擬合問題,常常使用正則化方法 正則化的思想是 在損失函式中加入刻畫模型複雜程度的指標。模型優化時需要優化該損失函式 j r w j r w 其中 j j 為損失函式,表示的是乙個神經網路的所有引數,包括權重w w 和偏置b ro...