深度學習批標準化

2021-10-16 23:13:46 字數 1265 閱讀 5264

傳統機器學習中標準化也叫做歸一化,一般是將資料對映到指定的範圍,用於去除不同維度資料的量綱以及量綱單位。資料標準化讓機器學習模型看到的不同樣本彼此之間更加相似,這有助於模型的學習與對新資料的泛化。常見的資料標準化形式:標準化和歸一化,將資料減去其平均值使其中心為 0,然後將資料除以其標準差使其標準差為 1。

batch normalization, 批標準化, 和普通的資料標準化類似, 是將分散的資料統一的一種做法, 也是優化神經網路的一種方法。批標準化不僅在將資料輸入模型之前對資料做標準化。在網路的每一次變換之後都應該考慮資料標準化。即使在訓練過程中均值和方差隨時間發生變化,它也可以適應性地將資料標準化。

(1)批標準化解決的問題是梯度消失與梯度**。

(2)批標準化一種訓練優化方法。

我們知道資料預處理做標準化可以加速收斂,同理,在神經網路使用標準化也可以加速收斂,而且還有更多好處。

(1)具有正則化的效果。

(2)提高模型的泛化能力。

(3)允許更高的學習速率從而加速收斂。

批標準化有助於梯度傳播,因此允許更深的網路。對於有些特別深的網路,只有包含多個batchnormalization 層時才能進行訓練。batchnormalization 廣泛用於 keras 內建的許多高階卷積神經網路架構,比如 resnet50、inception v3 和 xception。

batchnormalization 層通常在卷積層或密集連線層之後使用。

tf.keras.layers.batchnormalization()

(1)求每乙個訓練批次資料的均值。

(2)求每乙個訓練批次資料的方差。

(3)資料進行標準化。

(4)訓練引數γ,β。

(5)輸出y通過γ與β的線性變換得到原來的數值。

在訓練的正向傳播中,不會改變當前輸出,只記錄下γ與β。在反向傳播的時候,根據求得的γ與β通過鏈式求導方式,求出學習速率以至改變權值。

對於**階段時所使用的均值和方差,其實也是**於訓練集。比如我們在模型訓練時我們就記錄下每個batch下的均值和方差,待訓練完畢後,我們求整個訓練樣本的均值和方差期望值,作為我們進行**時進行bn的的均值和方差。

training:python布林值,指示圖層應在訓練模式還是在推理模式下執行。

training=true:該圖層將使用當前批輸入的均值和方差對其輸入進行標準化。

training=false:該層將使用在訓練期間學習的移動統計資料的均值和方差來標準化其輸入。

原始**講在cnn中一般應作用與非線性啟用函式之前,但是,實際上放在啟用函式之後效果可能會更好。

批標準化 Batch Norm

bn作用 加速收斂 控制過擬合,可以少用或不用dropout和正則 降低網路對初始化權重不敏感 允許使用較大的學習率 一 如何加速收斂?通過歸一化輸入值 隱藏單元值,以獲得類似的範圍值,可加速學習。限制了在前層的引數更新會影響數值分布的程度,使層的輸出更加穩定,神經網路的之後的層就會有更堅實的基礎 ...

18 批標準化 超引數選擇原則

batch normalization 批標準化和普通的資料標準化類似,是將分散的資料統一的一種方法,也是優化神經網路的一種方法。批標準化,不僅在將資料輸入模型之前對資料做標準化,而且還在網路的每一次變換之後都做標準化。即使在訓練過程中均值和方差隨時間發生變化,它也可以適應性地將資料標準化。我們知道...

ERP專案管理的深度標準化

分享一下我老師大神的人工智慧教程。零基礎!通俗易懂!風趣幽默!還帶黃段子!希望你也加入到我們人工智慧的隊伍中來!erp專案管理需要深度標準化!按erp專案管理的理論,一般都強調對專案計畫 成本 風險 資源等幾大要素的良好控制與預防,但到了活生生的專案中,這幾大點只要是專案經理都應該知道 但也有不知道...