1. 程式人生 > >『計算機視覺』Normalization層(待續)

『計算機視覺』Normalization層(待續)

tex rnn domain end nbsp str 函數 普通 ria

原文來自知乎

一、兩個概念

獨立同分布(independent and identically distributed)

獨立同分布的數據可以簡化常規機器學習模型的訓練、提升機器學習模型的預測能力

白化(whitening)

去除特征之間的相關性 —> 獨立;

使得所有特征具有相同的均值和方差 —> 同分布。

二、問題

1、抽象程度高的層難以訓練

深度神經網絡涉及到很多層的疊加,而每一層的參數更新會導致上層的輸入數據分布發生變化,通過層層疊加,高層(抽象程度高)的輸入分布變化會非常劇烈,這就使得高層需要不斷去重新適應底層的數據更新

Google 將這一現象總結為 Internal Covariate Shif:

統計機器學習中的一個經典假設是“源空間(source domain)和目標空間(target domain)的數據分布(distribution)是一致的”。如果不一致,那麽就出現了新的機器學習問題,如 transfer learning / domain adaptation 等。

而 covariate shift 就是分布不一致假設之下的一個分支問題,它是指源空間和目標空間的條件概率是一致的,但是其邊緣概率不同,即:對所有技術分享圖片,

技術分享圖片

但是

技術分享圖片

大家細想便會發現,的確,對於神經網絡的各層輸出,由於它們經過了層內操作作用,各層的輸入信號的分布顯然不同,而且差異會隨著網絡深度增大而增大,可是它們所能“指示”的樣本標記(label)仍然是不變的,這便符合了covariate shift的定義。由於是對層間信號的分析,也即是“internal”的來由。

問題描述簡而言之,每個神經元的輸入數據不再是“獨立同分布”。

  其一,上層參數需要不斷適應新的輸入數據分布,降低學習速度。

  其二,下層輸入的變化可能趨向於變大或者變小,導致上層落入飽和區,使得學習過早停止。

  其三,每層的更新都會影響到其它層,因此每層的參數更新策略需要盡可能的謹慎。

2、問題挑戰

我們以神經網絡中的一個普通神經元為例。神經元接收一組輸入向量

技術分享圖片

通過某種運算後,輸出一個標量值:

技術分享圖片

由於 ICS 問題的存在, 對於某一特定層,不同批次的輸入技術分享圖片 的分布可能相差很大。

要解決獨立同分布的問題,“理論正確”的方法就是對每一層的數據都進行白化操作。然而標準的白化操作代價高昂

,特別是我們還希望白化操作是可微的,保證白化操作可以通過反向傳播來更新梯度

三、解決思路

1、通用框架

在將 技術分享圖片 送給神經元之前,先對其做平移和伸縮變換, 將 技術分享圖片 的分布規範化成在固定區間範圍的標準分布。

通用變換框架就如下所示:

技術分享圖片

(1) 技術分享圖片平移參數(shift parameter), 技術分享圖片縮放參數(scale parameter)。通過這兩個參數進行 shift 和 scale 變換:

技術分享圖片

得到的數據符合均值為 0、方差為 1 的標準分布。

(2) 技術分享圖片再平移參數(re-shift parameter), 技術分享圖片再縮放參數(re-scale parameter)。將 上一步得到的 技術分享圖片 進一步變換為: 技術分享圖片

最終得到的數據符合均值為 技術分享圖片 、方差為 技術分享圖片 的分布。

2、第二次變換的目的

目的一

第一次變換得到均值為 0、方差為 1 的標準分布,表達能力有限,下層神經元可能很努力地在學習,但不論其如何變化,其輸出的結果在交給上層神經元進行處理之前,將被粗暴地重新調整到這一固定範圍。為了更好的應用底層神經網絡的學習結果,我們將規範化後的數據進行再平移和再縮放,使得每個神經元對應的輸入範圍是針對該神經元量身定制的一個確定範圍(均值為 技術分享圖片 、方差為 技術分享圖片 )。rescale 和 reshift 的參數都是可學習的,這就使得 Normalization 層可以學習如何去適應底層的學習結果。

目的二

除了充分利用底層學習的能力,另一方面的重要意義在於保證獲得非線性的表達能力。

Sigmoid 等激活函數在神經網絡中有著重要作用,通過區分飽和區和非飽和區,使得神經網絡的數據變換具有了非線性計算能力。而第一步的規範化會將幾乎所有數據映射到激活函數的非飽和區(線性區),僅利用到了線性變化能力,從而降低了神經網絡的表達能力。而進行再變換,則可以將數據從線性區變換到非線性區,恢復模型的表達能力。

優勢

不添加正則化, 技術分享圖片 的均值取決於下層神經網絡的復雜關聯;添加本層後,取值 技術分享圖片 僅由 技術分享圖片 來確定,去除了與下層計算的密切耦合。新參數很容易通過梯度下降來學習,簡化了神經網絡的訓練。

問題

標準白化操作的目的是“獨立同分布”。獨立就不說了,暫不考慮。變換為均值為 技術分享圖片 、方差為 技術分享圖片 的分布,也並不是嚴格的同分布,只是映射到了一個確定的區間範圍而已(所以,這個問題仍然有研究空間)。

四、主流 Normalization 方法梳理

Batch Normalization

於2015年由 Google 提出。具體過程見『教程』Batch Normalization 層介紹

BN 獨立地規範化每一個層不同批次的 技術分享圖片 ,但規範化的參數是一個 mini-batch 的一階統計量和二階統計量。這就要求 每一個 mini-batch 的統計量是整體統計量的近似估計,或者說每一個 mini-batch 彼此之間,以及和整體數據,都應該是近似同分布的。分布差距較小的 mini-batch 可以看做是為規範化操作和模型訓練引入了噪聲,可以增加模型的魯棒性;但如果每個 mini-batch的原始分布差別很大,那麽不同 mini-batch 的數據將會進行不一樣的數據變換,這就增加了模型訓練的難度。

BN 比較適用的場景是:每個 mini-batch 比較大,數據分布比較接近。在進行訓練之前,要做好充分的 shuffle,否則效果會差很多。

另外,由於 BN 需要在運行過程中統計每個 mini-batch 的一階統計量和二階統計量,因此不適用於 動態的網絡結構 和 RNN 網絡。不過,也有研究者專門提出了適用於 RNN 的 BN 使用方法,這裏先不展開了。

Batch Normalization

與 BN 不同,LN 是一種橫向的規範化。它綜合考慮一層所有批次的輸入,計算該層的平均輸入值和輸入方差,然後用同一個規範化操作來轉換各個維度的輸入。

『計算機視覺』Normalization層(待續)