在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

詳解深度學習中的Normalization及主流的四種規范化方法

電子設計 ? 來源:電子設計 ? 作者:電子設計 ? 2020-12-10 20:11 ? 次閱讀

深度神經網絡模型訓練之難眾所周知,其中一個重要的現象就是 Internal Covariate Shift. Batch Norm 大法自 2015 年由Google 提出之后,就成為深度學習必備之神器。自 BN 之后, Layer Norm / Weight Norm / Cosine Norm 等也橫空出世。本文從 Normalization 的背景講起,用一個公式概括 Normalization 的基本思想與通用框架,將各大主流方法一一對號入座進行深入的對比分析,并從參數和數據的伸縮不變性的角度探討 Normalization 有效的深層原因。
作者:Juliuszh,PhD 畢業于 THU 計算機系。現在 Tencent AI Lab 從事機器學習和個性化推薦研究與 AI 平臺開發工作。
來源:機器學習札記知乎專欄

目錄:

1. 為什么需要 Normalization
——深度學習中的 Internal Covariate Shift 問題及其影響
2. Normalization 的通用框架與基本思想
——從主流 Normalization 方法中提煉出的抽象框架
3. 主流 Normalization 方法梳理
——結合上述框架,將 BatchNorm / LayerNorm / WeightNorm / CosineNorm 對號入座,各種方法之間的異同水落石出。
4. Normalization 為什么會有效?
——從參數和數據的伸縮不變性探討Normalization有效的深層原因。

以下是正文,enjoy.

1. 為什么需要 Normalization

1.1 獨立同分布與白化

機器學習界的煉丹師們最喜歡的數據有什么特點?竊以為,莫過于“獨立同分布”了,即independent and identically distributed,簡稱為 i.i.d. 獨立同分布并非所有機器學習模型的必然要求(比如 Naive Bayes 模型就建立在特征彼此獨立的基礎之上,而Logistic Regression 和 神經網絡 則在非獨立的特征數據上依然可以訓練出很好的模型),但獨立同分布的數據可以簡化常規機器學習模型的訓練、提升機器學習模型的預測能力,已經是一個共識。

因此,在把數據喂給機器學習模型之前,“白化(whitening)”是一個重要的數據預處理步驟。白化一般包含兩個目的:

(1)去除特征之間的相關性 —> 獨立;
(2)使得所有特征具有相同的均值和方差 —> 同分布。

白化最典型的方法就是PCA,可以參考閱讀 PCAWhitening。

1.2 深度學習中的 Internal Covariate Shift

深度神經網絡模型的訓練為什么會很困難?其中一個重要的原因是,深度神經網絡涉及到很多層的疊加,而每一層的參數更新會導致上層的輸入數據分布發生變化,通過層層疊加,高層的輸入分布變化會非常劇烈,這就使得高層需要不斷去重新適應底層的參數更新。為了訓好模型,我們需要非常謹慎地去設定學習率、初始化權重、以及盡可能細致的參數更新策略。

Google 將這一現象總結為 Internal Covariate Shift,簡稱 ICS. 什么是 ICS 呢?@魏秀參在一個回答中做出了一個很好的解釋:

大家都知道在統計機器學習中的一個經典假設是“源空間(source domain)和目標空間(target domain)的數據分布(distribution)是一致的”。如果不一致,那么就出現了新的機器學習問題,如 transfer learning / domain adaptation 等。而 covariate shift 就是分布不一致假設之下的一個分支問題,它是指源空間和目標空間的條件概率是一致的,但是其邊緣概率不同,即:

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

1.3 ICS 會導致什么問題?

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

其一,上層參數需要不斷適應新的輸入數據分布,降低學習速度。
其二,下層輸入的變化可能趨向于變大或者變小,導致上層落入飽和區,使得學習過早停止。
其三,每層的更新都會影響到其它層,因此每層的參數更新策略需要盡可能的謹慎。

2. Normalization 的通用框架與基本思想

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

$${x}=(x_1, x_2, /cdots, x_d)$$

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

$$y=f({x})$$

由于 ICS 問題的存在,x的分布可能相差很大。要解決獨立同分布的問題,“理論正確”的方法就是對每一層的數據都進行白化操作。然而標準的白化操作代價高昂,特別是我們還希望白化操作是可微的,保證白化操作可以通過反向傳播來更新梯度。

因此,以 BN 為代表的 Normalization 方法退而求其次,進行了簡化的白化操作。基本思想是:在將x送給神經元之前,先對其做平移和伸縮變換, 將x的分布規范化成在固定區間范圍的標準分布。

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

我們來看看這個公式中的各個參數。

奇不奇怪?奇不奇怪?

說好的處理 ICS,第一步都已經得到了標準分布,第二步怎么又給變走了?

答案是——為了保證模型的表達能力不因為規范化而下降。

我們可以看到,第一步的變換將輸入數據限制到了一個全局統一的確定范圍(均值為 0、方差為 1)。下層神經元可能很努力地在學習,但不論其如何變化,其輸出的結果在交給上層神經元進行處理之前,將被粗暴地重新調整到這一固定范圍。

沮不沮喪?沮不沮喪?

難道我們底層神經元人民就在做無用功嗎?

所以,為了尊重底層神經網絡的學習結果,我們將規范化后的數據進行再平移和再縮放,使得每個神經元對應的輸入范圍是針對該神經元量身定制的一個確定范圍(均值為b、方差為g2)。rescale 和 reshift 的參數都是可學習的,這就使得 Normalization 層可以學習如何去尊重底層的學習結果。

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

那么問題又來了——

經過這么的變回來再變過去,會不會跟沒變一樣?

那么還有一個問題——

這樣的 Normalization 離標準的白化還有多遠?

標準白化操作的目的是“獨立同分布”。獨立就不說了,暫不考慮。變換為均值為b、方差為g2(g的平方)的分布,也并不是嚴格的同分布,只是映射到了一個確定的區間范圍而已。(所以,這個坑還有得研究呢!)

3. 主流 Normalization 方法梳理

在上一節中,我們提煉了 Normalization 的通用公式:

對照于這一公式,我們來梳理主流的四種規范化方法。

3.1 Batch Normalization —— 縱向規范化

Batch Normalization 于2015年由 Google 提出,開 Normalization 之先河。其規范化針對單個神經元進行,利用網絡訓練時一個 mini-batch 的數據來計算該神經元Xi的均值和方差,因而稱為 Batch Normalization。

其中M是 mini-batch 的大小。

按上圖所示,相對于一層神經元的水平排列,BN 可以看做一種縱向的規范化。由于 BN 是針對單個維度定義的,因此標準公式中的計算均為 element-wise 的。

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

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

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

3.2 Layer Normalization —— 橫向規范化

層規范化就是針對 BN 的上述不足而提出的。與 BN 不同,LN 是一種橫向的規范化,如圖所示。它綜合考慮一層所有維度的輸入,計算該層的平均輸入值和輸入方差,然后用同一個規范化操作來轉換各個維度的輸入。

LN 針對單個訓練樣本進行,不依賴于其他數據,因此可以避免 BN 中受 mini-batch 數據分布影響的問題,可以用于 小mini-batch場景、動態網絡場景和 RNN,特別是自然語言處理領域。此外,LN 不需要保存 mini-batch 的均值和方差,節省了額外的存儲空間。

但是,BN 的轉換是針對單個神經元可訓練的——不同神經元的輸入經過再平移和再縮放后分布在不同的區間,而 LN 對于一整層的神經元訓練得到同一個轉換——所有的輸入都在同一個區間范圍內。如果不同輸入特征不屬于相似的類別(比如顏色和大小),那么 LN 的處理可能會降低模型的表達能力。

3.3 Weight Normalization —— 參數規范化

BN 和 LN 均將規范化應用于輸入的特征數據x,而 WN 則另辟蹊徑,將規范化應用于線性變換函數的權重 w,這就是 WN 名稱的來源。

乍一看,這一方法似乎脫離了我們前文所講的通用框架?

并沒有。其實從最終實現的效果來看,異曲同工。我們來推導一下看。

對照一下前述框架:

我們只需令:

就完美地對號入座了!

回憶一下,BN 和 LN 是用輸入的特征數據的方差對輸入數據進行 scale,而 WN 則是用 神經元的權重的歐氏范式對輸入數據進行 scale。雖然在原始方法中分別進行的是特征數據規范化和參數的規范化,但本質上都實現了對數據的規范化,只是用于 scale 的參數來源不同。

另外,我們看到這里的規范化只是對數據進行了 scale,而沒有進行 shift,因為我們簡單地令 u=0. 但事實上,這里留下了與 BN 或者 LN 相結合的余地——那就是利用 BN 或者 LN 的方法來計算輸入數據的均值 u 。

WN 的規范化不直接使用輸入數據的統計量,因此避免了 BN 過于依賴 mini-batch 的不足,以及 LN 每層唯一轉換器的限制,同時也可以用于動態網絡結構。

3.4 Cosine Normalization —— 余弦規范化

Normalization 還能怎么做?

我們再來看看神經元的經典變換
$$f_{w}({x})={w}/cdot{x}$$

對輸入數據x的變換已經做過了,橫著來是 LN,縱著來是 BN。

對模型參數w的變換也已經做過了,就是 WN。

好像沒啥可做的了。

然而天才的研究員們盯上了中間的那個點,對,就是 . 。

他們說,我們要對數據進行規范化的原因,是數據經過神經網絡的計算之后可能會變得很大,導致數據分布的方差爆炸,而這一問題的根源就是我們的計算方式——點積,權重向量w和 特征數據向量x的點積。向量點積是無界(unbounded)的啊!

那怎么辦呢?我們知道向量點積是衡量兩個向量相似度的方法之一。哪還有沒有其他的相似度衡量方法呢?有啊,很多啊!夾角余弦就是其中之一啊!而且關鍵的是,夾角余弦是有確定界的啊,[-1, 1] 的取值范圍,多么的美好!仿佛看到了新的世界!

于是,Cosine Normalization 就出世了。他們不處理權重向量w,也不處理特征數據向量x ,就改了一下線性變換的函數:

然后就沒有然后了,所有的數據就都是 [-1, 1] 區間范圍之內的了!

不過,回過頭來看,CN 與 WN 還是很相似的。我們看到上式中,分子還是 w和x的內積,而分母則可以看做用w和 x二者的模之積進行規范化。對比一下 WN 的公式:

CN 通過用余弦計算代替內積計算實現了規范化,但成也蕭何敗蕭何。原始的內積計算,其幾何意義是 輸入向量在權重向量上的投影,既包含 二者的夾角信息,也包含 兩個向量的scale信息。去掉scale信息,可能導致表達能力的下降,因此也引起了一些爭議和討論。具體效果如何,可能需要在特定的場景下深入實驗。

現在,BN, LN, WN 和 CN 之間的來龍去脈是不是清楚多了?

4. Normalization 為什么會有效?

我們以下面這個簡化的神經網絡為例來分析。

4.1 Normalization 的權重伸縮不變性

上述規范化方法均有這一性質,這是因為,當權重w伸縮時,對應的均值和標準差均等比例伸縮,分子分母相抵。

權重伸縮不變性可以有效地提高反向傳播的效率。

由于

因此,權重的伸縮變化不會影響反向梯度的 Jacobian 矩陣,因此也就對反向傳播沒有影響,避免了反向傳播時因為權重過大或過小導致的梯度消失或梯度爆炸問題,從而加速了神經網絡的訓練。

權重伸縮不變性還具有參數正則化的效果,可以使用更高的學習率。

由于

因此,下層的權重值越大,其梯度就越小。這樣,參數的變化就越穩定,相當于實現了參數正則化的效果,避免參數的大幅震蕩,提高網絡的泛化性能。

4.2 Normalization 的數據伸縮不變性

數據伸縮不變性僅對 BN、LN 和 CN 成立。因為這三者對輸入數據進行規范化,因此當數據進行常量伸縮時,其均值和方差都會相應變化,分子分母互相抵消。而 WN 不具有這一性質。

數據伸縮不變性可以有效地減少梯度彌散,簡化對學習率的選擇。

每一層神經元的輸出依賴于底下各層的計算結果。如果沒有正則化,當下層輸入發生伸縮變化時,經過層層傳遞,可能會導致數據發生劇烈的膨脹或者彌散,從而也導致了反向計算時的梯度爆炸或梯度彌散。

數據的伸縮變化也不會影響到對該層的權重參數更新,使得訓練過程更加魯棒,簡化了對學習率的選擇。

參考文獻

[1] Sergey Ioffe and Christian Szegedy. Accelerating Deep Network Training by Reducing Internal Covariate Shift.
[2] Jimmy L. Ba, Jamie R. Kiros, Geoffrey E. Hinton. [1607.06450] Layer Normalization.
[3] Tim Salimans, Diederik P. Kingma. A Simple Reparameterization to Accelerate Training of Deep Neural Networks.
[4] Chunjie Luo, Jianfeng Zhan, Lei Wang, Qiang Yang. Using Cosine Similarity Instead of Dot Product in Neural Networks.
[5] Ian Goodfellow, Yoshua Bengio, Aaron Courville. Deep Learning.

本文在寫作過程中,參考了以下各位的回答,特此致謝。

@魏秀參的回答: 深度學習中 Batch Normalization為什么效果好?

@孔濤的回答: 深度學習中 Batch Normalization為什么效果好?

@王峰的回答: 深度學習中 Batch Normalization為什么效果好?

@lqfarmer的回答: Weight Normalization 相比batch Normalization 有什么優點呢?

@Naiyan Wang的回答: Batch normalization和Instance normalization的對比?

@YJango的文章: YJango的Batch Normalization--介紹

-End-

推薦閱讀

2020年醫學圖像處理領域值得關注的期刊和會議

清華劉知遠教授:好的研究想法從哪里來?

歡迎關注我的極術專欄:AI搬運小能手,給您分享最前沿靠譜的高質量AI技術干貨。

審核編輯 黃昊宇

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 機器學習
    +關注

    關注

    66

    文章

    8458

    瀏覽量

    133239
  • 深度學習
    +關注

    關注

    73

    文章

    5523

    瀏覽量

    121726
收藏 人收藏

    評論

    相關推薦

    DAC61404 SPI應該是四種模式的哪種?

    DAC61404 SPI應該是四種模式的哪種?
    發表于 11-27 06:18

    NPU在深度學習的應用

    設計的硬件加速器,它在深度學習的應用日益廣泛。 1. NPU的基本概念 NPU是一專門針對深度學習
    的頭像 發表于 11-14 15:17 ?1105次閱讀

    Pytorch深度學習訓練的方法

    掌握這 17 種方法,用最省力的方式,加速你的 Pytorch 深度學習訓練。
    的頭像 發表于 10-28 14:05 ?317次閱讀
    Pytorch<b class='flag-5'>深度</b><b class='flag-5'>學習</b>訓練的<b class='flag-5'>方法</b>

    labview字符串的四種表示各有什么特點

    。在LabVIEW,字符串是一基本的數據類型,用于表示文本信息。字符串在LabVIEW中有多種表示方式,每種方式都有其特定的應用場景和特點。以下是對LabVIEW四種字符串表示方
    的頭像 發表于 09-04 15:40 ?775次閱讀

    濾波電路的四種類型是什么

    濾波電路是電子電路中非常重要的一部分,它主要用于對信號進行頻率選擇,即允許特定頻率范圍內的信號通過,而阻止其他頻率的信號。濾波電路根據其特性可以分為四種基本類型:低通濾波器(Low-Pass
    的頭像 發表于 08-08 16:25 ?3803次閱讀

    pwm脈寬調制的四種方法有哪些

    于電機控制、LED調光、音頻處理等領域。以下是四種常見的PWM脈寬調制方法: 固定頻率PWM(Fixed-Frequency PWM) 固定頻率PWM是一最基本的PWM調制方法。在這
    的頭像 發表于 08-08 15:10 ?1813次閱讀

    負反饋的四種類型及判斷方法

    類型及其判斷方法。 一、負反饋的四種類型 比例負反饋 比例負反饋是指系統輸出與輸入之間的反饋關系是線性的,即輸出的變化與輸入的變化成正比。在比例負反饋,當系統輸出增加時,輸入會相應減少,反之亦然。這種反饋機制有
    的頭像 發表于 08-02 11:01 ?3107次閱讀

    受控源四種類型及表示方法

    受控源是電子電路的一特殊元件,它具有一個或多個控制量,其輸出電壓或電流與控制量之間存在一定的函數關系。受控源有四種基本類型:電壓控制電壓源(VCVS)、電流控制電壓源(CCVS)、電壓控制電流源
    的頭像 發表于 07-29 15:15 ?7130次閱讀

    簡述四種基本觸發器及其功能

    在數字電路設計,觸發器是一基本且重要的存儲元件,用于存儲二進制信息(即0和1)。根據功能和應用場景的不同,觸發器可以分為多種類型,其中四種基本觸發器包括RS觸發器、JK觸發器、D觸發器和T觸發器。以下是對這
    的頭像 發表于 07-27 14:59 ?1.2w次閱讀

    深度學習模型的過擬合與正則

    測試數據或新數據上表現不佳的現象。為了解決這個問題,正則(Regularization)技術應運而生,成為深度學習不可或缺的一部分。本文將從過擬合的原因、表現、正則
    的頭像 發表于 07-09 15:56 ?1189次閱讀

    深度學習的時間序列分類方法

    的發展,基于深度學習的TSC方法逐漸展現出其強大的自動特征提取和分類能力。本文將從多個角度對深度學習在時間序列分類
    的頭像 發表于 07-09 15:54 ?1282次閱讀

    深度學習的無監督學習方法綜述

    應用往往難以實現。因此,無監督學習深度學習扮演著越來越重要的角色。本文旨在綜述深度
    的頭像 發表于 07-09 10:50 ?1048次閱讀

    深度學習的模型優化與調試方法

    深度學習模型在訓練過程,往往會遇到各種問題和挑戰,如過擬合、欠擬合、梯度消失或爆炸等。因此,對深度學習模型進行優化與調試是確保其性能優越的
    的頭像 發表于 07-01 11:41 ?1108次閱讀

    介紹MCUboot支持的四種升級模式(2)

    介紹MCUboot支持的四種升級模式,分別是Overwrite、Swap、Direct XIP和加載到RAM執行。由于FSP不支持第四種——加載到RAM執行,因為我們重點介紹前三
    的頭像 發表于 06-13 10:56 ?1168次閱讀
    介紹MCUboot支持的<b class='flag-5'>四種</b>升級模式(2)

    電氣設備的狀態有哪四種

    電氣設備的狀態可以分為四種:正常狀態、異常狀態、故障狀態和緊急狀態。這四種狀態涵蓋了電氣設備在運行過程可能遇到的各種情況。本文將詳細分析這四種狀態的特點、原因、影響以及相應的處理措施
    的頭像 發表于 06-05 16:47 ?5291次閱讀
    主站蜘蛛池模板: 亚洲第一中文字幕 | 日本成人福利视频 | 丁香婷婷视频 | 免费任我爽橹视频在线观看 | 国产精品久久在线 | 久久骚 | 色偷偷亚洲| 一级看片免费视频囗交 | 成人免费黄色网 | 男人天堂综合网 | 精品视频一二三区 | 久久久久久综合 | 婷婷久久综合九色综合九七 | 国产精品久久久久天天影视 | 国产片在线观看狂喷潮bt天堂 | 成人丁香| 欧美特级生活片 | 毛片高清一区二区三区 | 99精品久久久久久久婷婷 | 日本一区二区视频 | 精品一区二区三区18 | 天堂网在线新版www 天堂网在线资源 | 九九精品在线观看 | 伊人网在线视频 | 色播五月婷婷 | 日本色视| 亚洲日本三级 | 色天天躁夜夜躁天干天干 | 欧美成人精品一区二三区在线观看 | 久久影视免费观看网址 | 欧美日韩精品乱国产 | 五月婷婷丁香在线视频 | 成人夜色 | 国产ccc| 六月婷婷导航福利在线 | 天天干夜夜艹 | 亚洲福利视频一区 | 香蕉网影院在线观看免费 | 色老久久精品偷偷鲁一区 | 性欧美网站 | 日日艹 |