### 3.3規范化
如前所述,由于在這些網絡中發生的非線性操作的級聯,多層體系結構是高度非線性的。除了上一節中討論的整流非線性之外,歸一化是另一個非線性處理塊,它在ConvNet架構中起著重要作用。 ConvNets中使用最廣泛的標準化形式是所謂的Divisive Normalization或DN(也稱為局部響應標準化)。本節闡述了歸一化步驟的作用,并描述了它如何糾正前兩個處理塊(_,即_。卷積和整流)的一些缺點。再次從生物學和理論的角度討論規范化的作用。
#### 3.3.1生物學觀點
早期由神經生理學家提出標準化來解釋視網膜中光適應的現象[13],后來擴展到解釋哺乳動物視皮層中神經元的非線性特性[66]。實際上,從生物學的角度來看,對標準化步驟的需求源于兩個主要觀察[67,66]。首先,雖然細胞反應被證明是刺激特異性的[74],但也表明細胞反應可以相互抑制,并且存在交叉定向抑制現象,其中神經元對其優選刺激的反應被減弱。如果它與另一種無效的刺激疊加[67,14,19]。線性模型(卷積步驟中的_即_。)和前一節中討論的不同形式的整流,例如計算神經科學家提出的半波整流,都沒有解釋這種交叉定向抑制和抑制行為。 。其次,雖然已知細胞響應在高對比度下飽和,但僅依賴于卷積和無界整流器(例如ReLU)的模型將具有隨著對比度增加而不斷增加的值。這兩個觀察結果表明,需要一個折扣其他刺激反應的步驟,以保持每個細胞的特異性,并使其對比不變,同時解釋細胞的其他抑制行為。
處理這些問題的一種流行模型包括在數學上描述如下的分裂歸一化塊
(3.8)
其中是平方半波整流卷積運算的輸出,匯集在一組方向和尺度上和是一個飽和常數,可以根據兩種適應機制中的任何一種來選擇[66] ]。在第一種情況下,從細胞的反應歷史中學習的每個細胞可能是不同的值。第二種可能性是從所有細胞的反應統計數據中推導出來。這種分裂歸一化方案丟棄了關于對比度大小的信息,有利于在歸一化操作中,根據輸入響應的相對對比度對基礎圖像模式進行編碼,(3.8)。使用該模型似乎可以很好地適應哺乳動物視皮層的神經元反應[67]。還表明它也很好地解釋了交叉方向抑制現象[14]。
##### 討論
有趣的是,大多數研究分裂歸一化作用的研究表明,包括它的神經元模型很好地符合記錄數據(_,例如_。[66,67,14,19])。事實上,最近的研究表明,分裂正常化也可以解釋IT皮層的適應現象,其中神經反應隨著刺激重復而降低(_,例如_。[83])。此外,在皮質的幾個區域中建議的分裂正常化的普遍性導致了這樣的假設:分裂歸一化可以被視為哺乳動物視覺皮層的規范操作,類似于卷積的操作[19]。
#### 3.3.2理論觀點
從理論的角度來看,歸一化已被解釋為在表示自然圖像時實現有效編碼的方法[102]。在這項工作中,標準化步驟的動機是關于自然圖像統計的發現[102],這些結果已知是高度相關的并且包含非常冗余的信息。根據這些發現,引入了歸一化步驟,目的是找到最小化圖像中統計依賴性的表示。為了實現這一目標,在[102,101]中徹底討論的流行推導開始于使用基于高斯尺度混合的統計模型來表示圖像。使用該模型和目標函數,其作用是最小化依賴性,非線性以形式導出
(3.9)
其中和分別是輸入和輸出圖像,而,和是可以從訓練集中學習的分裂歸一化的參數。值得注意的是,在處理冗余時引入的分裂歸一化的定義與自然圖像中的高階依賴性之間存在直接關系,(3.9),并且建議最佳地擬合視覺皮層中的神經元響應,(3.8)。特別是,隨著我們設置的變量的變化,我們看到這兩個方程通過元素運算(_即_。平方,與相關,受平方根差異的影響。 ]),從而兩個模型都達到了在滿足神經科學觀察的同時最大化獨立性的目標。
另一種看待ConvNets標準化的方法是將其視為一種強化特征之間局部競爭的方式[77,91],類似于生物神經元中發生的競爭。該競爭可以通過減法歸一化在特征地圖內的相鄰特征之間實施,或者通過在特征地圖上的相同空間位置處操作的分裂歸一化在特征地圖之間實施。或者,分裂歸一化可被視為一種最小化對乘法對比度變化的敏感性的方法[60]。在更深層次的網絡架構中,還發現分裂歸一化有助于提高網絡的泛化能力[88]。
最近的ConvNets依賴于所謂的批量標準化[129]。批量標準化是另一種分裂標準化,它考慮了一批訓練數據來學習標準化參數(_即_。方程式(3.10)中的均值和方差)并且它還引入了新的超參數,和,以控制每層所需的標準化量。
批量標準化可以分為兩個步驟。首先,在具有維輸入的任何層,每個標量特征根據以下內容獨立標準化。
(3.10)
是小批量平均值計算的小批量平均值,是計算的相同小批量的方差。其次,等式(3.10)中歸一化的輸出經歷線性變換,使得所提出的批量歸一化塊的最終輸出由給出,其中和是在參數期間學習的超參數。訓練。
批量標準化的第一步旨在確定每層輸入的均值和方差。但是,由于該規范化策略可以改變或限制層可以表示的內容,因此包括第二個線性轉換步驟以維持網絡的表示能力。例如,如果輸入處的原始分布已經是最優的,則網絡可以通過學習身份映射來恢復它。因此,歸一化輸入可以被認為是在網絡的每一層添加的線性塊的輸入。
批量歸一化首先被引入作為對傳統分裂歸一化的改進,其最終目標是減少內部協變量移位問題,這是指每層輸入分布的連續變化[129]。每層輸入的變化規模和分布意味著網絡必須在每一層顯著調整其參數,因此訓練必須緩慢(_即_。使用小學習率)以保持損失在訓練期間減少(_即_。以避免訓練期間的分歧)。因此,引入批量標準化以保證所有輸入處的更規則分布。
這種規范化策略的靈感來自為ConvNets的有效培訓而建立的一般經驗法則。特別是,為了在ConvNets中獲得良好的泛化性能,通常的做法是強制所有訓練和測試集樣本具有相同的分布(_,即_。通過歸一化)。例如,已經表明,當輸入始終變白時,網絡收斂得更快[91,77]。通過考慮每個層可以被視為淺層網絡,批量標準化建立在這個想法的基礎上。因此,確保輸入在每一層保持相同的分布是有利的,并且這通過學習訓練數據的分布(使用小批量)并使用訓練集的統計來標準化每個輸入來強制執行。更一般地說,重要的是要記住,從機器學習的角度來看,這種規范化方案還可以使特征更容易分類。例如,如果兩個不同的輸入引起兩個不同的輸出,如果響應位于相同的范圍內,則它們更容易被分類器分離,因此處理數據以滿足該條件是重要的。
與分裂歸一化類似,批量歸一化也證明在ConvNets中起著重要作用。特別是,已經證明批量標準化不僅加速了訓練,而且在一般化方面起著非常重要的作用,它能夠超越以前最先進的圖像分類(特別是在ImageNet上)同時消除了對Dropout正則化的需求[88]。
相比之下,批量歸一化有點類似于分裂歸一化,因為它們都使得每層輸入的比例相似。但是,Divisive Normalization通過將每個輸入的值除以同一層內同一位置的所有其他輸入來標準化每個輸入的值。另一方面,批量標準化相對于在相同位置處的訓練集的統計(或更準確地說,包含來自整個訓練集的示例的小批量的統計)對每個輸入進行標準化。批量標準化依賴于訓練集的統計的事實可以解釋這樣的事實,即它提高了表示的泛化能力。
批量標準化的一個問題是它對小批量大小的依賴:如果選擇它太小,它可能無法正確表示每次迭代的訓練集;或者,如果它太大(_,即_,它會產生減慢訓練的負面影響。因為網絡必須在當前權重下看到所有訓練樣本以計算小批量統計數據)。此外,批量標準化不易應用于遞歸神經網絡,因為它依賴于在一小批訓練樣本上計算的統計數據。因此,在[4]中提出了層標準化。層規范化遵循批量歸一化中提出的相同過程,唯一的區別在于規范化統計的計算方式。批量標準化計算小批量的統計數據時,圖層標準化使用任何一個圖層中的所有要素圖或隱藏單位分別計算每個輸入的統計數據。因此,在批量標準化中,每個單元使用與該單元相關的不同統計量進行標準化,而層標準以相同方式標準化所有單元。
雖然層次規范被證明在語言相關的應用程序中是有效的,其中循環網絡通常更合適,但它無法與使用批量標準化訓練的ConvNets競爭圖像處理任務[129]。作者提出的一個可能的解釋是,在ConvNets中,所有單位在輸出中激活單位時沒有做出同等貢獻;因此,在層標準化(_即_。使用所有單位來計算標準化的統計數據的情況下)的基本假設不適用于ConvNets。
##### Discussion
本小節中討論的貢獻的共同點是,他們都同意標準化在提高多層體系結構的表征能力方面的重要作用。需要注意的另一個重要的一點是,它們都有著共同的目標,即減少輸入中的冗余,并且即使在以不同形式提出問題時也將其提高到相同的規模。實際上,雖然早期提出了分裂正常化,_,例如_。 [102],明確地將問題作為冗余減少問題,諸如批量標準化[129]之類的新提議也通過在每一層白化數據來隱式地強制執行該操作。最后,從生物學角度反思歸一化問題,重要的是要注意生物系統在編碼自然信號的統計特性方面也是有效的,因為它們代表了具有小代碼的世界。因此,人們可能會假設他們也在執行類似的分裂歸一化操作,以減少冗余并獲得那些有效的代碼。
- TensorFlow 1.x 深度學習秘籍
- 零、前言
- 一、TensorFlow 簡介
- 二、回歸
- 三、神經網絡:感知器
- 四、卷積神經網絡
- 五、高級卷積神經網絡
- 六、循環神經網絡
- 七、無監督學習
- 八、自編碼器
- 九、強化學習
- 十、移動計算
- 十一、生成模型和 CapsNet
- 十二、分布式 TensorFlow 和云深度學習
- 十三、AutoML 和學習如何學習(元學習)
- 十四、TensorFlow 處理單元
- 使用 TensorFlow 構建機器學習項目中文版
- 一、探索和轉換數據
- 二、聚類
- 三、線性回歸
- 四、邏輯回歸
- 五、簡單的前饋神經網絡
- 六、卷積神經網絡
- 七、循環神經網絡和 LSTM
- 八、深度神經網絡
- 九、大規模運行模型 -- GPU 和服務
- 十、庫安裝和其他提示
- TensorFlow 深度學習中文第二版
- 一、人工神經網絡
- 二、TensorFlow v1.6 的新功能是什么?
- 三、實現前饋神經網絡
- 四、CNN 實戰
- 五、使用 TensorFlow 實現自編碼器
- 六、RNN 和梯度消失或爆炸問題
- 七、TensorFlow GPU 配置
- 八、TFLearn
- 九、使用協同過濾的電影推薦
- 十、OpenAI Gym
- TensorFlow 深度學習實戰指南中文版
- 一、入門
- 二、深度神經網絡
- 三、卷積神經網絡
- 四、循環神經網絡介紹
- 五、總結
- 精通 TensorFlow 1.x
- 一、TensorFlow 101
- 二、TensorFlow 的高級庫
- 三、Keras 101
- 四、TensorFlow 中的經典機器學習
- 五、TensorFlow 和 Keras 中的神經網絡和 MLP
- 六、TensorFlow 和 Keras 中的 RNN
- 七、TensorFlow 和 Keras 中的用于時間序列數據的 RNN
- 八、TensorFlow 和 Keras 中的用于文本數據的 RNN
- 九、TensorFlow 和 Keras 中的 CNN
- 十、TensorFlow 和 Keras 中的自編碼器
- 十一、TF 服務:生產中的 TensorFlow 模型
- 十二、遷移學習和預訓練模型
- 十三、深度強化學習
- 十四、生成對抗網絡
- 十五、TensorFlow 集群的分布式模型
- 十六、移動和嵌入式平臺上的 TensorFlow 模型
- 十七、R 中的 TensorFlow 和 Keras
- 十八、調試 TensorFlow 模型
- 十九、張量處理單元
- TensorFlow 機器學習秘籍中文第二版
- 一、TensorFlow 入門
- 二、TensorFlow 的方式
- 三、線性回歸
- 四、支持向量機
- 五、最近鄰方法
- 六、神經網絡
- 七、自然語言處理
- 八、卷積神經網絡
- 九、循環神經網絡
- 十、將 TensorFlow 投入生產
- 十一、更多 TensorFlow
- 與 TensorFlow 的初次接觸
- 前言
- 1.?TensorFlow 基礎知識
- 2. TensorFlow 中的線性回歸
- 3. TensorFlow 中的聚類
- 4. TensorFlow 中的單層神經網絡
- 5. TensorFlow 中的多層神經網絡
- 6. 并行
- 后記
- TensorFlow 學習指南
- 一、基礎
- 二、線性模型
- 三、學習
- 四、分布式
- TensorFlow Rager 教程
- 一、如何使用 TensorFlow Eager 構建簡單的神經網絡
- 二、在 Eager 模式中使用指標
- 三、如何保存和恢復訓練模型
- 四、文本序列到 TFRecords
- 五、如何將原始圖片數據轉換為 TFRecords
- 六、如何使用 TensorFlow Eager 從 TFRecords 批量讀取數據
- 七、使用 TensorFlow Eager 構建用于情感識別的卷積神經網絡(CNN)
- 八、用于 TensorFlow Eager 序列分類的動態循壞神經網絡
- 九、用于 TensorFlow Eager 時間序列回歸的遞歸神經網絡
- TensorFlow 高效編程
- 圖嵌入綜述:問題,技術與應用
- 一、引言
- 三、圖嵌入的問題設定
- 四、圖嵌入技術
- 基于邊重構的優化問題
- 應用
- 基于深度學習的推薦系統:綜述和新視角
- 引言
- 基于深度學習的推薦:最先進的技術
- 基于卷積神經網絡的推薦
- 關于卷積神經網絡我們理解了什么
- 第1章概論
- 第2章多層網絡
- 2.1.4生成對抗網絡
- 2.2.1最近ConvNets演變中的關鍵架構
- 2.2.2走向ConvNet不變性
- 2.3時空卷積網絡
- 第3章了解ConvNets構建塊
- 3.2整改
- 3.3規范化
- 3.4匯集
- 第四章現狀
- 4.2打開問題
- 參考
- 機器學習超級復習筆記
- Python 遷移學習實用指南
- 零、前言
- 一、機器學習基礎
- 二、深度學習基礎
- 三、了解深度學習架構
- 四、遷移學習基礎
- 五、釋放遷移學習的力量
- 六、圖像識別與分類
- 七、文本文件分類
- 八、音頻事件識別與分類
- 九、DeepDream
- 十、自動圖像字幕生成器
- 十一、圖像著色
- 面向計算機視覺的深度學習
- 零、前言
- 一、入門
- 二、圖像分類
- 三、圖像檢索
- 四、對象檢測
- 五、語義分割
- 六、相似性學習
- 七、圖像字幕
- 八、生成模型
- 九、視頻分類
- 十、部署
- 深度學習快速參考
- 零、前言
- 一、深度學習的基礎
- 二、使用深度學習解決回歸問題
- 三、使用 TensorBoard 監控網絡訓練
- 四、使用深度學習解決二分類問題
- 五、使用 Keras 解決多分類問題
- 六、超參數優化
- 七、從頭開始訓練 CNN
- 八、將預訓練的 CNN 用于遷移學習
- 九、從頭開始訓練 RNN
- 十、使用詞嵌入從頭開始訓練 LSTM
- 十一、訓練 Seq2Seq 模型
- 十二、深度強化學習
- 十三、生成對抗網絡
- TensorFlow 2.0 快速入門指南
- 零、前言
- 第 1 部分:TensorFlow 2.00 Alpha 簡介
- 一、TensorFlow 2 簡介
- 二、Keras:TensorFlow 2 的高級 API
- 三、TensorFlow 2 和 ANN 技術
- 第 2 部分:TensorFlow 2.00 Alpha 中的監督和無監督學習
- 四、TensorFlow 2 和監督機器學習
- 五、TensorFlow 2 和無監督學習
- 第 3 部分:TensorFlow 2.00 Alpha 的神經網絡應用
- 六、使用 TensorFlow 2 識別圖像
- 七、TensorFlow 2 和神經風格遷移
- 八、TensorFlow 2 和循環神經網絡
- 九、TensorFlow 估計器和 TensorFlow HUB
- 十、從 tf1.12 轉換為 tf2
- TensorFlow 入門
- 零、前言
- 一、TensorFlow 基本概念
- 二、TensorFlow 數學運算
- 三、機器學習入門
- 四、神經網絡簡介
- 五、深度學習
- 六、TensorFlow GPU 編程和服務
- TensorFlow 卷積神經網絡實用指南
- 零、前言
- 一、TensorFlow 的設置和介紹
- 二、深度學習和卷積神經網絡
- 三、TensorFlow 中的圖像分類
- 四、目標檢測與分割
- 五、VGG,Inception,ResNet 和 MobileNets
- 六、自編碼器,變分自編碼器和生成對抗網絡
- 七、遷移學習
- 八、機器學習最佳實踐和故障排除
- 九、大規模訓練
- 十、參考文獻