深度學習篇 神經網路中的調優二,防止過擬合

2022-03-03 16:38:28 字數 2926 閱讀 5830

一、前述

二、l1,l2正則防止過擬合

使用l1和l2正則去限制神經網路連線的weights權重,限制更小

1、對於一層時可以定義如下:

一種方式去使用tensorflow做正則是加合適的正則項到損失函式,當一層的時候,可以如下定義:

2、對於多層時可以定義如下:

可是如果有很多層,上面的方式不是很方便,幸運的是,tensorflow提供了更好的選擇,很多函式如get_variable()或者fully_connected()接受乙個 *_regularizer 引數,可以傳遞任何以weights為引數,返回對應正則化損失的函式,l1_regularizer(),l2_regularizer()和l1_l2_regularizer()函式返回這個的函式。

上面的**神經網路有兩個隱藏層,乙個輸出層,同時在圖里建立節點給每一層的權重去計算l1正則損失,tensorflow自動新增這些節點到乙個特殊的包含所有正則化損失的集合。你只需要新增這些正則化損失到整體的損失中,不要忘了去新增正則化損失到整體的損失中,否則它們將會被忽略。

三、dropout防止過擬合

1、原理

在深度學習中,最流行的正則化技術,它被證明非常成功,即使在頂尖水準的神經網路中也可以帶來1%到2%的準確度提公升,這可能乍聽起來不是特別多,但是如果模型已經有了95%的準確率,獲得

2%的準確率提公升意味著降低錯誤率大概40%,即從5%的錯誤率降低到3%的錯誤率!!!

在每一次訓練step中,每個神經元,包括輸入神經元,但是不包括輸出神經元,有乙個概率被臨時的丟掉,意味著它將被忽視在整個這次訓練step中,但是有可能下次再被啟用(是隨機的)

超引數p叫做dropout rate,一般設定50%,在訓練之後,神經元不會再被dropout(設定成50%的話,傳輸到下一層就少了半的引數)

2、舉例

公司每天投擲硬幣只要一半的員工上班,或許帶來的公司收入更高?公司或許因為這個被迫調整組織結構,也許員工一人會多個任務,而不是未來受制於一倆個員工的缺席,這裡的員工模擬到神經元

3、優點

相當於變相的提高資料量,但迭代次數要增加,可以理解成每次遮擋一部分資料,變相提高推廣能力,使模型更加健壯,防止過擬合。

4、圖例

除了輸出層其他都可以dropout,一般我們dropout的是全連線層。

5、應用

keep_prob是保留下來的比例,1-keep_prob是dropout rate

當訓練的時候,把is_training設定為true,(丟掉一些資料),當測試的時候,設定為false(不能dropout)

四、選擇適當的啟用函式

大多數情況下啟用函式使用relu啟用函式,這種啟用函式計算更快,並且梯度下降不會卡在plateaus,並且對於大的輸入值,它不會飽和,相反對比logistic function和hyperbolic tangent

function,將會飽和在1對於輸出層,

softmax啟用函式通常是乙個好的選擇對於分類任務,因為類別和類別之間是互相排斥的(會做到歸一化)

對於回歸任務,根本不使用啟用函式

多層感知機通常用於分類問題,二分類,也有很多時候會用於多分類,需要把輸出層的啟用函式改成共享的softmax函式,輸出變成用於評估屬於哪個類別的概率值

五、資料增大

1、原理

從現有的資料產生一些新的訓練樣本,人工增大訓練集,這將減少過擬合

2、舉例

例如如果你的模型是分類蘑菇,你可以輕微的平移,旋轉,改變大小,然後增加這些變化後的到訓練集,這使得模型可以經受位置,方向,大小的影響,如果你想用模型可以經受光條件的影響,你可以同理產生許多用不同的對比度,假設蘑菇對稱的,你也可以水平翻轉tensorflow提供一些操作運算元,例如transposing(shifting),rotating,resizing,flipping,cropping,adjusting brightness(亮度),contrast(對比度),saturation(飽和度),hue(色調)

3、圖示

神經網路和深度學習(二)淺層神經網路

1 計算神經網路的輸出 正向傳播 矩陣表示 向量化 2 多個樣本的向量化 正向傳播 3 啟用函式 1 sigmoid函式僅用於二分分類的情況,較少使用 2 tanh函式絕大多數情況下優於sigmoid函式 3 relu函式是預設的常用啟用函式 4 leaking relu 帶洩露的relu函式 4 ...

Tensoflow 學習筆記二 神經網路的優化

神經元模型 用數學公式表示為 為啟用函式。神經網路是以神經元為基本單 元構成的。啟用函式 引入非線性啟用因素,提高模型的表達力。常用的啟用函式有 relu sigmoid tanh 等。relutf.nn.relu sigmoidtf.nn.sigmoid tanhtf.nn.tanh 神經網路的層...

深度學習 神經網路中的activation

神經網路中有個詞叫做 activation 啟用函式 現假設一神經網路n,其中w為權值引數,x為輸入,b為偏置。神經網路中上層的訊號 wx b 在作為下層的輸入 之前,需要 使用 啟用函式啟用。why?從兩個角度解釋 a 如果不用啟用函式 其實相當於啟用函式是f x x 在這種情況下你每一層輸出都是...