深度學習|表示學習|Instance Normalization 全面總結|26

如是我聞:

1. Instance Normalization(IN)

Instance Normalization(IN)最早由 Ulyanov et al.(2017) 提出,主要用于 風格遷移(Style Transfer) 任務。它的核心思想是 對每個樣本的每個通道 ( C ) (C) (C) 單獨計算均值和方差,然后進行歸一化。

與 Batch Normalization(BN)不同,IN 不依賴 mini-batch 統計信息,所以更適用于小 batch size 甚至 batch size = 1 的情況。

數學公式

對于一個輸入特征 x t i l m x_{tilm} xtilm?,其中:

  • t t t 表示 batch 維度(樣本索引)
  • i i i 表示通道索引(C)
  • l , m l, m l,m 分別表示特征圖的空間坐標 H × W H × W H×W
均值計算

μ t i = 1 H W ∑ l = 1 W ∑ m = 1 H x t i l m \mu_{ti} = \frac{1}{HW} \sum_{l=1}^{W} \sum_{m=1}^{H} x_{tilm} μti?=HW1?l=1W?m=1H?xtilm?

方差計算

σ t i 2 = 1 H W ∑ l = 1 W ∑ m = 1 H ( x t i l m ? μ t i ) 2 \sigma^2_{ti} = \frac{1}{HW} \sum_{l=1}^{W} \sum_{m=1}^{H} (x_{tilm} - \mu_{ti})^2 σti2?=HW1?l=1W?m=1H?(xtilm??μti?)2

歸一化

y t i l m = x t i l m ? μ t i σ t i 2 + ? y_{tilm} = \frac{x_{tilm} - \mu_{ti}}{\sqrt{\sigma^2_{ti} + \epsilon}} ytilm?=σti2?+? ?xtilm??μti??

💡 計算范圍:
Instance Normalization 只在 單個樣本的單個通道 (H×W 維度) 內計算均值和方差,而不會跨通道或跨樣本計算。


2. Layer Normalization(LN)

概念

Layer Normalization(LN)由 Ba et al.(2016) 提出,最初用于 RNN 和 Transformer 結構,后來也在 CNN 中被廣泛使用。它的核心思想是 對整個樣本的所有通道 (C×H×W) 計算均值和方差,然后進行歸一化。

不同于 Batch Normalization(BN),LN 不依賴 batch 維度,適用于 NLP 和 Transformer 任務,特別是在 batch size 變化較大的情況下,仍能保持穩定的效果。

數學公式

對于一個輸入特征 x i j k l x_{ijkl} xijkl?,其中:

  • i i i 表示 batch 維度(樣本索引)
  • j j j 表示通道索引( C C C
  • k , l k, l k,l 分別表示特征圖的空間坐標( H × W H × W H×W
均值計算

μ l = 1 C H W ∑ j = 1 C ∑ k = 1 H ∑ l = 1 W x i j k l \mu^l = \frac{1}{CHW} \sum_{j=1}^{C} \sum_{k=1}^{H} \sum_{l=1}^{W} x_{ijkl} μl=CHW1?j=1C?k=1H?l=1W?xijkl?

方差計算

σ l 2 = 1 C H W ∑ j = 1 C ∑ k = 1 H ∑ l = 1 W ( x i j k l ? μ l ) 2 \sigma^2_l = \frac{1}{CHW} \sum_{j=1}^{C} \sum_{k=1}^{H} \sum_{l=1}^{W} (x_{ijkl} - \mu^l)^2 σl2?=CHW1?j=1C?k=1H?l=1W?(xijkl??μl)2

歸一化

y i j k l = x i j k l ? μ l σ l 2 + ? y_{ijkl} = \frac{x_{ijkl} - \mu^l}{\sqrt{\sigma^2_l + \epsilon}} yijkl?=σl2?+? ?xijkl??μl?

💡 計算范圍:
Layer Normalization 在整個樣本的所有通道 (C×H×W) 維度上計算均值和方差,不同通道之間的歸一化統計量是共享的。


3. 計算示例

假設我們有一個輸入 特征圖大小為 2 × 2 2 \times 2 2×2,batch size 為 1,通道數 C = 2,即:
X = [ Channel?1 : [ 1 2 3 4 ] , Channel?2 : [ 5 6 7 8 ] ] X = \begin{bmatrix} \text{Channel 1}: & \begin{bmatrix} 1 & 2 \\ 3 & 4 \end{bmatrix}, \quad \text{Channel 2}: & \begin{bmatrix} 5 & 6 \\ 7 & 8 \end{bmatrix} \end{bmatrix} X=[Channel?1:?[13?24?],Channel?2:?[57?68?]?]

Instance Normalization

IN 對 每個通道 ( C C C) 獨立歸一化,計算均值和方差:

  • Channel 1 均值:
    μ 1 = 1 + 2 + 3 + 4 4 = 2.5 \mu_1 = \frac{1+2+3+4}{4} = 2.5 μ1?=41+2+3+4?=2.5
    方差:
    σ 1 2 = ( 1 ? 2.5 ) 2 + ( 2 ? 2.5 ) 2 + ( 3 ? 2.5 ) 2 + ( 4 ? 2.5 ) 2 4 = 1.25 \sigma_1^2 = \frac{(1-2.5)^2 + (2-2.5)^2 + (3-2.5)^2 + (4-2.5)^2}{4} = 1.25 σ12?=4(1?2.5)2+(2?2.5)2+(3?2.5)2+(4?2.5)2?=1.25
    歸一化:
    Y 1 = X 1 ? 2.5 1.25 + ? Y_1 = \frac{X_1 - 2.5}{\sqrt{1.25 + \epsilon}} Y1?=1.25+? ?X1??2.5?

  • Channel 2 均值:
    μ 2 = 5 + 6 + 7 + 8 4 = 6.5 \mu_2 = \frac{5+6+7+8}{4} = 6.5 μ2?=45+6+7+8?=6.5
    歸一化后:
    Y 2 = X 2 ? 6.5 1.25 + ? Y_2 = \frac{X_2 - 6.5}{\sqrt{1.25 + \epsilon}} Y2?=1.25+? ?X2??6.5?


Layer Normalization

LN 對 整個樣本的所有通道 (C×H×W) 歸一化,計算:

  • 總均值:
    μ = 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 8 = 4.5 \mu = \frac{1+2+3+4+5+6+7+8}{8} = 4.5 μ=81+2+3+4+5+6+7+8?=4.5
  • 總方差:
    σ 2 = ( 1 ? 4.5 ) 2 + ? + ( 8 ? 4.5 ) 2 8 = 5.25 \sigma^2 = \frac{(1-4.5)^2 + \dots + (8-4.5)^2}{8} = 5.25 σ2=8(1?4.5)2+?+(8?4.5)2?=5.25
  • 歸一化:
    Y = X ? 4.5 5.25 + ? Y = \frac{X - 4.5}{\sqrt{5.25 + \epsilon}} Y=5.25+? ?X?4.5?

4. 主要區別

歸一化方法計算均值/方差的范圍歸一化的單位適用場景
Instance Normalization (IN)每個通道 (H×W) 計算均值和方差每個通道獨立歸一化風格遷移、GAN、計算機視覺任務
Layer Normalization (LN)整個樣本 (C×H×W) 計算均值和方差所有通道一起歸一化NLP、Transformer、RNN/CNN 任務

5. 總結

  • IN 適用于圖像任務(如風格遷移),可以幫助去除特定風格信息。
  • LN 適用于 NLP 和 CNN 任務,因為它不會受到 batch size 影響,在 Transformer 和 RNN 里表現更穩定。

希望這篇文章能幫助你理解 Instance Normalization 和 Layer Normalization 的核心概念及其不同應用!🎯

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

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

相關文章

如何保持 mysql 和 redis 中數據的一致性?PegaDB 給出答案

MySQL 與 Redis 數據保持一致性是一個常見且復雜的問題,一般來說需要結合多種策略來平衡性能與一致性。 傳統的解決策略是先讀緩存,未命中則讀數據庫并回填緩存,但方式這種維護成本較高。 隨著云數據庫技術的發展,目前國內云廠商…

探索ELK 的魅力

在大數據時代,海量日志和數據的收集、存儲、處理與可視化分析變得越來越重要。而 ELK 堆棧,由 Elasticsearch、Logstash、Beats 和 Kibana 組成,正是一個強大的開源解決方案,幫助開發者和運維人員高效管理和分析日志數據。本文將詳…

用vue3寫一個好看的wiki前端頁面

以下是一個使用 Vue 3 Element Plus 實現的 Wiki 風格前端頁面示例&#xff0c;包含現代設計、響應式布局和常用功能&#xff1a; <template><div class"wiki-container"><!-- 頭部導航 --><el-header class"wiki-header"><d…

深度學習實戰基礎案例——卷積神經網絡(CNN)基于DenseNet的眼疾檢測|第4例

文章目錄 前言一、數據準備二、項目實戰2.1 設置GPU2.2 數據加載2.3 數據預處理2.4 數據劃分2.5 搭建網絡模型2.6 構建densenet1212.7 訓練模型2.8 結果可視化 三、UI設計四、結果展示總結 前言 在當今社會&#xff0c;眼科疾病尤其是白內障對人們的視力健康構成了嚴重威脅。白…

DeepSeek的開源核爆:當技術民主化重構AI權力版圖

2025年2月&#xff0c;全球AI產業正經歷著由DeepSeek掀起的鏈式反應——這個首個開源千億參數多模態模型的企業&#xff0c;用開放戰略在技術壁壘森嚴的AI戰場投下"制度性核彈"。其貢獻不在于單純的技術突破&#xff0c;而在于通過開源協議實現了三重維度的大爆炸&am…

代碼隨想錄二叉樹篇(含源碼)

二叉樹與遞歸 前言226.翻轉二叉樹算法思路及代碼solution 1 用分解問題的思路來解決solution 2 用遍歷的思路來解決 101.對稱二叉樹算法思路及代碼solution 104.二叉樹的最大深度算法思路及代碼solution 1 遍歷solution 2 分解問題 111.二叉樹的最小深度算法思路及代碼solution…

MyBatis映射文件 <resultMap> 元素詳解與示例

引言 <resultMap> 是 MyBatis 中最核心的映射配置元素&#xff0c;用于解決數據庫字段與 Java 對象屬性之間的復雜映射問題&#xff0c;尤其是字段名不一致、嵌套對象關聯、集合映射等場景。ResultMap 的設計思想是&#xff0c;對簡單的語句做到零配置&#xff0c;對于復…

【xdoj離散數學上機】T283

遞歸函數易錯&#xff1a; 防止出現遞歸死循環&#xff01; 題目 題目&#xff1a;求誘導出的等價關系的關系矩陣 問題描述 給定有限集合上二元關系的關系矩陣&#xff0c;求由其誘導出的等價關系的關系矩陣。 輸入格式 第一行輸入n&#xff0c;表示矩陣為n階方陣&#xff0c…

WIN11上使用GraalVM打包springboot3項目為本地可執行文件exe

耐心肝才能成功 概念步驟概要詳細步驟一. GraalVM 17二. 安裝Visual Studio 2022三. 創建springboot四. IDEA最新版或者eclipse2025調試項目五. 打包exe 概念 springboot3生成的jar編譯成windows本地C文件&#xff0c;不再依賴JVM運行 WINDOW編譯較為復雜&#xff0c;限制條件…

【git-hub項目:YOLOs-CPP】本地實現01:項目構建

目錄 寫在前面 項目介紹 最新發布說明 Segmentation示例 功能特點 依賴項 安裝 克隆代碼倉庫 配置 構建項目 寫在前面 前面剛剛實現的系列文章: 【Windows/C++/yolo開發部署01】 【Windows/C++/yolo開發部署02】 【Windows/C++/yolo開發部署03】 【Windows/C++/yolo…

超越 DeepSeek V3 -->【Qwen2.5-Max】

&#x1f525; 先說明&#xff0c;不是廣子&#xff0c;不是廣子&#xff01;&#xff01;&#xff01;單純分享這個工具給大家&#xff0c;畢竟最近使用 DeepSeek 太容易崩了&#xff0c;每天深度思考一次之后就開始轉圈圈用不了&#xff0c;然后就找到了這個工具使用 一、前言…

python自動化測試之Pytest框架之YAML詳解以及Parametrize數據驅動!

一、YAML詳解 YAML是一種數據類型&#xff0c;它能夠和JSON數據相互轉化&#xff0c;它本身也是有很多數據類型可以滿足我們接口 的參數類型&#xff0c;擴展名可以是.yml或.yaml 作用&#xff1a; 1.全局配置文件 基礎路徑&#xff0c;數據庫信息&#xff0c;賬號信息&…

CentOS 7操作系統部署KVM軟件和創建虛擬機

CentOS 7.9操作系統部署KVM軟件和配置指南&#xff0c;包括如何創建一個虛擬機。 步驟 1: 檢查硬件支持 首先&#xff0c;確認您的CPU支持虛擬化技術&#xff0c;并且已在BIOS中啟用&#xff1a; egrep -c (vmx|svm) /proc/cpuinfo 如果輸出大于0&#xff0c;則表示支持虛擬…

日本 萬葉假名

萬葉假名&#xff08;まんようがな&#xff0c;Manyōgana&#xff09;是一種早期的日語書寫系統&#xff0c;主要用于《萬葉集》等古代文獻中。它的特點是完全使用漢字來表示日語的音&#xff0c;不考慮漢字的原意。可以將其視為平假名和片假名的前身。 記住是唐代的發音不是…

【鴻蒙HarmonyOS Next實戰開發】實現組件動態創建和卸載-優化性能

一、簡介 為了解決頁面和組件加載緩慢的問題&#xff0c;ArkUI框架引入了動態操作功能&#xff0c;支持組件的預創建&#xff0c;并允許應用在運行時根據實際需求動態加載和渲染組件。 這些動態操作包括動態創建組件&#xff08;即動態添加組件&#xff09;和動態卸載組件&am…

【未完待續】關于I-Cache的一些思考

前言 最近對計組重拾興趣&#xff0c;想到了一些問題&#xff0c;本來想著會不會存在一些漏洞的&#xff0c;但是查閱資料發現還是自己太年輕了&#xff0c;架構師們早就想到了這些問題。這里簡單記錄一些與 GPT 的對話。感興趣的同學可以自行思考或查閱資料學習 與 GPT 的對…

MongoDB 7 分片副本集升級方案詳解(上)

#作者&#xff1a;任少近 文章目錄 前言&#xff1a;Mongodb版本升級升級步驟環境1.1環境準備1.2standalone升級1.3分片、副本集升級 前言&#xff1a;Mongodb版本升級 在開始升級之前&#xff0c;請參閱 MongoDB下個版本中的兼容性變更文檔&#xff0c;以確保您的應用程序和…

AI前端開發:跨領域合作的新引擎

隨著人工智能技術的飛速發展&#xff0c;AI代碼生成器等工具的出現正深刻地改變著軟件開發的模式。 AI前端開發的興起&#xff0c;不僅提高了開發效率&#xff0c;更重要的是促進了跨領域合作&#xff0c;讓數據科學家、UI/UX設計師和前端工程師能夠更緊密地協同工作&#xff0…

前端開發所需參考文檔—重中之中

菜鳥教程&#xff1a;https://www.runoob.com/ W3C&#xff1a;https://www.w3school.com.cn/index.html MMDN&#xff1a;https://developer.mozilla.org/zh-CN/ Vue3&#xff1a;Vue.js - 漸進式 JavaScript 框架 | Vue.js 基本上所有的前端開發基礎都可以在其中找到參考…

DeepSeek 助力 Vue 開發:打造絲滑的返回頂部按鈕(Back to Top)

前言&#xff1a;哈嘍&#xff0c;大家好&#xff0c;今天給大家分享一篇文章&#xff01;并提供具體代碼幫助大家深入理解&#xff0c;徹底掌握&#xff01;創作不易&#xff0c;如果能幫助到大家或者給大家一些靈感和啟發&#xff0c;歡迎收藏關注哦 &#x1f495; 目錄 Deep…