神經網絡設計中關于BN歸一化(Normalization)的討論

在神經網絡的結構中,我們常常可以看見歸一化(Normalization)如BN的出現,無論是模型的backbone或者是neck的設計都與它有著重大的關系。

因此引發了我對它的思考,接下來我將從
是什么(知識領域,誕生來源),為什么(解決了什么問題),怎么做(公式原理,未來如何使用和設計)的三個哲學維度去討論它。

是什么

從整體到局部 — 先說“屬于哪個研究方向 / 框架

歸一化(Normalization)在深度學習里的位置

研究領域 / 交叉學科:
優化理論(改變梯度分布、條件數、收斂性)
表征學習/歸一化技術(穩定內部表示、減少訓練敏感性)
統計估計(如何準確地估計均值/方差、樣本數對估計方差的影響)
分布式系統工程(SyncBN 涉及跨設備通信)

核心問題:網絡訓練中各層輸入分布隨訓練迭代變化(所謂“internal covariate shift” 的實踐問題)、訓練穩定性、梯度尺度與收斂速度、以及隱式正則化

解決思路家族:按“聚合域”可分——跨樣本(Batch-based,如 BN / SyncBN)、逐樣本但分組(GroupNorm)、逐樣本全部通道(LayerNorm)、逐通道逐樣本空間上(InstanceNorm)等。每種方法在統計樣本數、耦合程度、計算/通信開銷上有不同折中。

這些名詞可能現在絕對有些晦澀難懂,不過后面我會一一解釋。

BN的來源

我現在會扮演一個合適的角色,從0到1帶著你推演為什么需要BN里面的數學操作去解決什么問題

那我們就從**“還沒有 BN 時代”**開始推演,像個深度學習數理偵探一樣,一步步鎖定問題,然后自然推導出 BN 的數學操作。

1?? 案件背景:還沒有 BN 的深度網絡

在早期(2014 年以前),深度神經網絡(尤其是 CNN、RNN)在訓練時會遇到幾個老大難問題:

1 梯度消失 / 梯度爆炸
網絡層數一多,梯度在反向傳播中會被不斷乘上權重的導數。
如果導數平均值 < 1 → 梯度指數級衰減(梯度消失);
如果導數平均值 > 1 → 梯度指數級放大(梯度爆炸)。

2 內部協變量偏移(Internal Covariate Shift)
當我們更新前面層的參數時,后面層的輸入分布就會改變。
這意味著后面層在每個訓練 step 面對的不是一個穩定的任務,而是“每次輸入分布都不同”的任務。
概念
“協變量”是指模型中某一層的輸入(對這一層來說,輸入就是它的特征分布)。
“偏移”是指輸入的分布發生了變化。
在深度網絡中,每一層的輸入分布并不是固定的,因為前面層的參數在訓練中不斷變化。
內部協變量偏移:訓練過程中,深層網絡的中間層輸入分布(均值、方差、形狀)會不斷變化。
影響
如果某一層輸入分布一直變化,那么這一層需要不斷“重新適應”新的輸入分布,訓練起來就很慢。
這相當于你在學做飯,但每天給你的食材味道、大小都不一樣,你需要不斷調整調料用量 → 學習速度慢。

3 學習速度極慢
分布漂移(Distribution Shift)
概念
更寬泛的概念,指訓練數據分布與測試數據分布不一致。
例如:訓練時圖片都在晴天拍,測試時大部分是雨天 → 模型性能下降。
ICS 是一種特殊的分布漂移,只不過它發生在網絡內部層與層之間,不是訓練集與測試集之間。
關系
分布漂移:外部視角,通常是數據集問題。
內部協變量偏移:內部視角,是訓練過程中網絡自身制造的“數據分布變化”。

因為分布漂移,學習率不敢設太高,否則容易發散。
想加速收斂很困難。

以上這就是歸一化的定位以及來源,它屬于表征學習,優化理論的領域,來源于神經網絡訓練時遇到的傳統的幾個問題,梯度爆炸/消失,內部協變量偏移(Internal Covariate Shift),學習速度極慢

理解了是什么,其實我們也就引出了為什么,為什么其實就是去解決它誕生來源的幾個問題

為什么

抽象和解決問題

2?? 偵探分析:輸入分布的“統計混亂”

我們先盯著一個中間層的輸入特征 𝑥看:

假設該層有 100 個神經元,輸入來自上一層輸出。
每個 batch 輸入時,
x 的均值(mean)和標準差(std)會隨 batch 波動。
如果上游權重剛更新過,這些統計量就可能發生明顯變化。
這就像你教一個學生解方程,每次題目里的數字分布都完全變樣,他很難學到穩定的解法。
數學上,這種不穩定性會導致梯度更新方向變化劇烈,訓練過程震蕩。

3?? 第一個線索:標準化能穩定分布

在傳統機器學習(比如 SVM、KNN)中,我們早就知道特征標準化可以讓優化更快:

在這里插入圖片描述
為什么特征標準化可以加快優化
假設我們有一個簡單的模型:
在這里插入圖片描述
如果 xxx 的均值很偏(比如都在 500 左右),那么偏置 b 就要去抵消這個大偏移,浪費了很多學習能力。當時我就想到
這句話如何理解,如果樣本的數據整體均值比較偏,那模型不就應該是解決這個偏的問題,學習這個 偏 嗎,為什么說是浪費了很多學習能力。

1. “偏”有兩種來源
(a) 有意義的偏

偏本身攜帶了任務相關的信息,模型需要去捕捉它。
例子:識別黑夜 vs 白天的照片,亮度均值的偏移是關鍵信息。
這種偏是 語義性的,不能被 BN 抹掉,否則會丟失有效特征。

(b) 無意義的偏(數據分布的偶然偏移)

偏的產生可能是因為采集方式、批次差異、傳感器參數等,和任務標簽沒有直接關系。
例子:同一類貓的照片,有的拍攝時曝光偏高,有的偏低,這個亮度變化與“貓”的類別無關。
模型如果直接學習這種無關的偏,就等于浪費參數去“擬合無關信號”,還可能降低泛化能力。

2. 為什么“浪費學習能力

模型是有限容量的(參數有限,優化能力有限)。
如果早期層需要去適配這種無意義的偏:
一部分參數會被迫去調節不同 batch/樣本間的均值和方差差異
這些參數的更新會因為數據批次差異而震蕩(優化不穩定)
真正與任務有關的模式(如形狀、紋理、結構信息)會被延遲學習

簡單來說:
如果模型花了很多梯度和迭代去修正這些批次間的“量綱偏差”,那它能用來學習語義特征的“精力”就被分走了。

3. 怎么判斷“偏”要不要學?

這在理論上很難提前知道,但可以有經驗判斷:
如果偏是全局一致且標簽相關 → 需要保留(BN 就要小心設計)
如果偏是批次/樣本之間不穩定且與標簽無關 → 適合用 BN 去消除
實踐中,我們很難精確分類,所以 BN 這種方法是基于“假設大部分批次間均值/方差偏移是無關的”來設計的

4?? 關鍵問題:深度網絡的標準化該怎么做(以BN為例)?

偵探的推理來到關鍵一步:

在深度網絡中,我們不能只在輸入層做一次標準化,因為中間層的分布也會漂移。

那我們能不能在每一層的每個訓練 step都做一次標準化,把漂移控制住?

于是,BN 的核心想法出現了:

在這里插入圖片描述
以上其實就是為什么的整個思考,它與前面的BN 的誕生邏輯串起來了

痛點:早期網絡沒有 BN,內部協變量偏移 + 輸入特征分布不穩定 → 訓練慢、難收斂
關鍵假設:均值/方差的批次波動多數與任務無關
操作:對每個 batch 的特征做標準化,讓它的均值 ≈ 0,方差 ≈ 1
好處
梯度更新更穩定(步長不用太小)
不用浪費參數去適配輸入量綱差異
網絡可以更快進入學習“形狀/模式”等更有意義的特征階段

怎么做

公式推演

接下來我會帶著你進行歸一化數學公式上的推演,推演遵循每個操作都講清楚,是什么(參數的意義),為什么(通過參數解決什么問題),怎么做(通過什么公式用參數去解決問題)
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

每個操作的「一句話總結」

在這里插入圖片描述

常見問題

問題 1:為什么把特征強制為 0-mean,1-var 會限制網絡表達能力?γ,β 為什么解決這個問題?

直覺理解
BN 前的標準化:
在這里插入圖片描述

問題 2:推理階段沒有 batch 的概念或 batch 很小是什么意思?

在這里插入圖片描述

問題 3:標準化消除了輸入尺度對激活的影響,減小參數尺度與優化耦合,有哪些地方被標準化了?

在這里插入圖片描述

未來如何使用和設計歸一化

在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
實踐設計示例

場景建議歸一化理由
ImageNet 分類,大 batchBN批內統計穩定,加速收斂
單張圖像生成 / 風格遷移IN 或 GN不依賴 batch
多 GPU 小 batchSyncBN 或 GNBN 單卡統計不穩,GN 可替代
移動端輕量模型GN穩定且無需 batch,硬件友好
TransformerLN序列長度不固定,適合逐樣本標準化
多任務 / 自適應SN學習動態選擇歸一化方式

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/93770.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/93770.shtml
英文地址,請注明出處:http://en.pswp.cn/web/93770.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

MacOS 安全機制與“文件已損壞”排查完整指南

1. 背景說明macOS 為了保護系統安全&#xff0c;內置了多個安全機制&#xff1a;機制作用是否影響第三方 AppSIP (System Integrity Protection)保護系統關鍵文件/目錄不被篡改高風險 App/驅動可能受限Gatekeeper限制未簽名/未認證 App 運行阻止“未知開發者” App文件隔離屬性…

package.json文件中的devDependencies和dependencies對象有什么區別?

前端項目的package.json文件中&#xff0c;dependencies和devDependencies對象都用于指定項目所依賴的軟件包&#xff0c;但它們在項目的開發和生產環境中的使用有所不同。1.dependencies&#xff1a;dependencies是指定項目在生產環境中運行所需要的依賴項。這些依賴項通常包括…

【最新版】CRMEB Pro版v3.4系統源碼全開源+PC端+uniapp前端+搭建教程

一.系統介紹 crmebPro版 v3.4正式發布&#xff0c;智能任務推送、動態標簽管理、商城AI生產力&#xff0c;煥然一新&#xff0c;不負期待&#xff01;頁面DIY設計功能全面升級&#xff0c;組件更豐富&#xff0c;樣式設計更全面&#xff1b;移動端商家管理&#xff0c;讓商城管…

AI 浪潮下 IT 從業者的職業展望:替代之惑與轉型之道

一、引言1.1 科技變革的浪潮&#xff1a;AI 崛起與 IT 行業震蕩在當今科技飛速發展的時代&#xff0c;人工智能&#xff08;AI&#xff09;無疑是最具影響力的變革力量之一。從實驗室的前沿研究到廣泛的商業應用&#xff0c;AI 以驚人的速度滲透到各個領域&#xff0c;徹底改變…

DSP音頻算法移植優化工程師實戰

以下以音頻FIR濾波器算法為例&#xff0c;完整演示從MATLAB原型 → Python驗證 → TI DSP C語言移植優化的全流程&#xff0c;包含關鍵代碼和優化技巧&#xff1a;關鍵優化技術解析&#xff1a; 內存訪問優化使用#pragma DATA_ALIGN確保64位對齊&#xff08;滿足LDDW指令要求&a…

Spark 運行流程核心組件(三)任務執行

一、啟動模式 1、standalone資源申請&#xff1a;Driver向Master申請Executor資源Executor啟動&#xff1a;Master調度Worker啟動Executor注冊通信&#xff1a;Executor直接向Driver注冊 2、YARNDriver向YARN ResourceManager(RM)申請AM容器RM分配NodeManager(NM)啟動AM&#x…

rabbitmq發送的延遲消息時間過長就立即消費了

RabbitMQ延遲消息在設置過長時間后被立即消費的問題&#xff0c;通常與以下原因有關&#xff1a; TTL限制問題 RabbitMQ對消息TTL(Time To Live)有32位整數限制(0-4294967295毫秒)&#xff0c;約49.7天。超過該值的延遲時間會導致消息立即被消費解決方案&#xff1a;確保設置的…

kafka的pull的依據

1. 每次 pull() 是否必須在提交上一批消息的 offset 之后&#xff1f;絕對不需要&#xff01; 提交 offset 和調用 poll() (拉取消息) 是兩個完全獨立的行為。消費者可以連續調用 poll() 多次&#xff0c;期間完全不提交任何 offset。 這是 Kafka 消費者的正常工作模式。提交 o…

學習嵌入式的第二十一天——數據結構——鏈表

單向鏈表特點&#xff1a;存儲的內存空間不連續 。為了彌補順序存儲存劣勢。優勢 插入&#xff0c;刪除 O(1) 動態存儲 &#xff0c;在程序運行期間決定大小。劣勢&#xff1a; 不能隨機訪問 O(N) 節點-> 數據域指針域 順序表(數組) 只有數據域鏈表的操作代碼&#xff1…

Rust Web 全棧開發(十三):發布

Rust Web 全棧開發&#xff08;十三&#xff09;&#xff1a;發布Rust Web 全棧開發&#xff08;十三&#xff09;&#xff1a;發布發布 teacher_service發布 svr測試 teacher_service 和 svr發布 wasm-client測試 wasm-clientRust Web 全棧開發&#xff08;十三&#xff09;&a…

Zephyr 中的 bt_le_per_adv_set_data 函數的介紹和應用方法

目錄 概述 1 函數接口介紹 1.1 函數原型 1.2 功能詳解 2 使用方法 2.1 創建流程 2.1.1 創建擴展廣播實例 2.1.2 設置周期性廣播數據 2.1.3 配置周期性廣播參數 2.1.4 啟動廣播 2.2 主流程函數 2.3 關鍵配置 (prj.conf) 3 高級用法 3.1 大數據分片傳輸 3.2 動態數…

Ansible 角色管理指南

Ansible 角色管理指南 實驗環境設置 以下命令用于準備實驗環境&#xff0c;創建一個工作目錄并配置基本的Ansible設置&#xff1a; # 創建web工作目錄并進入 [azurewhiskycontroller ~]$ mkdir web && cd web# 創建Ansible配置文件 [azurewhiskycontroller web]$ cat &…

【補充】數據庫中有關系統編碼和校驗規則的簡述

一、字符集和校驗規則&#xfeff;1.創建數據庫案例數據庫創建方法&#xff1a;使用CREATE DATABASE語句創建數據庫字符集指定方式&#xff1a;通過CHARACTER SETutf8指定數據庫編碼格式默認配置說明&#xff1a;未指定字符集時默認使用utf8和utf8_general_ci配置文件位置&…

計算機網絡 HTTP1.1、HTTP2、HTTP3 的核心對比及性能分析

以下是 HTTP/1.1、HTTP/2、HTTP/3 的核心對比及性能分析&#xff0c;重點關注 HTTP/3 的性能優勢&#xff1a;&#x1f4ca; HTTP 協議演進對比表特性HTTP/1.1 (1997)HTTP/2 (2015)HTTP/3 (2022)傳輸層協議TCPTCPQUIC (基于 UDP)連接建立TCP 三次握手 TLS 握手 (高延遲)同 HTT…

【計算機視覺與深度學習實戰】07基于Hough變換的答題卡識別技術:原理、實現與生物識別拓展(有完整代碼)

1. 引言 在人工智能和計算機視覺快速發展的今天,自動化圖像識別技術已經滲透到社會生活的各個角落。從工業質檢到醫學影像分析,從自動駕駛到教育評估,計算機視覺技術正在重塑我們與數字世界的交互方式。在這眾多應用中,答題卡識別技術作為教育信息化的重要組成部分,承載著…

《WASM驅動本地PDF與Excel預覽組件的深度實踐》

WASM為何能成為本地文件解析的核心載體,首先需要跳出“前端只能處理輕量任務”的固有認知,從“性能與兼容性平衡”的角度切入。PDF與Excel這類文件格式的解析,本質是對復雜二進制數據的解碼與重構——PDF包含嵌套的對象結構、字體渲染規則和矢量圖形描述,Excel則涉及單元格…

Oracle Free 實例重裝系統操作指南

之前申請了兩臺 x86 架構的 Oracle 機器&#xff0c;偶爾用來部署開源項目測試&#xff0c;有一臺在測試 SSH 相關功能時 “變磚”&#xff0c;網上看重裝系統發現很繁瑣就沒去打理&#xff0c;近期又想到這個機器&#xff0c;發現去年就有了官方重裝方法&#xff0c;簡單配置下…

Linux 基礎指令與權限管理

一、Linux 操作系統概述1.1 操作系統的核心價值操作系統的本質是 "使計算機更好用"。它作為用戶與硬件之間的中間層&#xff0c;負責內存管理、進程調度、文件系統管理和設備驅動管理等核心功能&#xff0c;讓用戶無需直接操作硬件即可完成復雜任務。在服務器領域&am…

深度學習-167-MCP技術之工具函數的設計及注冊到MCP服務器的兩種方式

文章目錄 1 MCP協議概述 1.1 MCP的原理 1.2 兩種主要的通信模式 2 工具函數的設計與實現 2.1 tools.py(工具函數) 2.2 工具函數的設計原則 2.3 工具函數的測試 3 MCP服務器的構建與配置 3.1 安裝mcp庫 3.2 main.py(MCP服務器) 3.2.1 方式一(add_tool方法) 3.2.2 方式二(@mcp.to…

哈希:兩數之和

問題描述&#xff1a;在一個整數數組中&#xff0c;找到兩數之和為target的兩個值&#xff0c;返回找到的兩個值的下標。 nums[3,3] target6 返回&#xff1a;[0,1] 說明&#xff1a;返回結果&#xff0c;索引無順序要求&#xff1b;有唯一的答案&#xff1b;不能使用兩次相…