殘差連接與歸一化結合應用

殘差連接(Residual Connection / Skip Connection)和歸一化(Normalization)的結合,是現代深度學習模型(尤其是深度神經網絡和Transformer架構)成功的關鍵因素之一。

核心概念回顧

  1. 殘差連接 (Residual Connection):

    • 思想: 不是讓網絡層直接學習目標映射 H(x),而是讓它們學習殘差映射 F(x) = H(x) - x。然后,最終的輸出是 H(x) = F(x) + x
    • 實現: 將某一層(或一組層)的輸入 x 直接跳過這些層,加到這些層的輸出 F(x) 上。通常通過簡單的加法(y = F(x, {W_i}) + x)或連接(y = F(x, {W_i}) || x)實現,加法更常見。
    • 主要作用:
      • 緩解梯度消失/爆炸: 在反向傳播時,梯度可以通過殘差路徑(+ x 部分)幾乎無損地傳遞回淺層,使得深層網絡能夠被有效訓練。
      • 恒等映射: 如果最優的 F(x) 是零映射(即什么都不做是最好的),那么學習 F(x) = 0 比學習 H(x) = x 更容易(因為后者需要精確的恒等變換)。
      • 促進信息流動: 允許原始輸入信息更直接地傳遞到后面的層,減少信息在多層變換中的損失或扭曲。
      • 簡化優化: 優化殘差映射 F(x) 通常比優化原始映射 H(x) 更容易。
  2. 歸一化 (Normalization):

    • 思想: 對神經網絡層內部的激活值或權重進行標準化處理,使其分布(如均值、方差)保持穩定。
    • 常見類型:
      • 批歸一化 (Batch Normalization, BN): 對單個特征通道在一個小批量(Batch)的所有樣本上進行歸一化(減均值除標準差)。廣泛應用于CNN。
      • 層歸一化 (Layer Normalization, LN): 對單個樣本的所有特征通道(或一個子集)進行歸一化。廣泛應用于RNN、Transformer。
      • 實例歸一化 (Instance Normalization, IN): 對單個樣本的單個特征通道進行歸一化。常用于風格遷移。
      • 組歸一化 (Group Normalization, GN): 將通道分組,對單個樣本的每個組進行歸一化。是BN在小批量場景下的替代方案。
    • 主要作用:
      • 加速訓練收斂: 通過穩定層輸入的分布,減少內部協變量偏移(Internal Covariate Shift),使得網絡可以使用更大的學習率。
      • 緩解梯度問題: 有助于緩解梯度消失/爆炸問題。
      • 輕微的正則化效果: BN在訓練時使用小批量的統計量,引入了隨機性,有輕微正則化效果。

殘差連接與歸一化的結合:協同效應

將殘差連接和歸一化結合使用,能產生強大的協同效應,解決深度模型訓練中的關鍵挑戰:

  1. 解決殘差加法帶來的分布偏移:

    • 殘差連接 y = F(x) + x 將兩個不同來源(原始輸入 x 和變換后的輸出 F(x))的數據相加。F(x)x 的分布可能差異很大(尤其是 F(x) 經過了權重矩陣和非線性激活)。
    • 直接將它們相加可能導致 y 的分布發生劇烈變化(分布偏移),這不利于后續層的處理和學習。
    • 歸一化的作用:y 輸入到下一層之前(或之后,取決于具體結構),應用歸一化層(如 BN 或 LN)可以將 y 重新調整到期望的分布(例如,零均值、單位方差),穩定后續層的輸入。這抵消了殘差加法可能引入的分布不穩定性。
  2. 穩定深層訓練:

    • 深度網絡的核心問題是梯度在反向傳播過程中會逐層衰減(消失)或急劇增大(爆炸)。
    • 殘差連接的作用: 提供了一條梯度可以幾乎無損回傳的“高速公路”。
    • 歸一化的作用: 通過穩定各層的輸入分布,使得梯度計算更加穩定可靠,避免了因輸入分布劇烈變化導致的梯度異常。
    • 結合效果: 殘差連接確保了梯度流的通暢,而歸一化確保了梯度流經的路徑是平滑穩定的。兩者共同作用,使得訓練非常深的網絡(如數百層的 ResNet 或數十層的 Transformer)成為可能。
  3. 提升模型性能和收斂速度:

    • 穩定的梯度流和輸入分布使得優化器(如 SGD, Adam)能夠更有效地工作。
    • 模型能夠更快地收斂到更好的解,通常也能獲得更高的最終精度。

結合方式:常見模式

最常見的結合方式是在殘差塊(Residual Block)內部或周圍放置歸一化層。具體位置有多種設計,各有優缺點:

  1. Pre-Normalization (Pre-Norm):

    • 結構: Norm -> Layer (Conv/Linear/Attention) -> Activation -> + Shortcut
    • 流程: 輸入 x 先經過歸一化層(如 LN),然后進入主要的計算層(卷積、全連接、注意力等),再經過激活函數(如 ReLU, GELU),最后與原始輸入 x(或經過投影的 x)相加。
    • 優點: 梯度流更穩定,尤其對非常深的模型(如 Transformer)效果更好。訓練通常更穩定。
    • 缺點: 原始輸入 x 沒有經過歸一化就直接參與加法,理論上加法后的分布可能不如 Post-Norm 穩定(但在實踐中,Pre-Norm 的穩定性優勢通常更顯著)。
    • 典型應用: Transformer 架構(如 GPT, BERT 的后續變種,T5)普遍采用 Pre-LN 結構。
  2. Post-Normalization (Post-Norm):

    • 結構: Layer (Conv/Linear/Attention) -> Norm -> Activation -> + ShortcutLayer -> Activation -> Norm -> + Shortcut
    • 流程: 輸入 x 先經過主要的計算層和激活函數,然后進行歸一化,最后再與原始輸入 x(或經過投影的 x)相加。
    • 優點: 加法操作 F(x) + x 的輸出 y 會立即被歸一化,理論上能更直接地穩定輸出分布。
    • 缺點: 對于非常深的模型,梯度流經過多個 Post-Norm 層時可能會累積不穩定因素,導致訓練困難(如梯度消失或爆炸)。
    • 典型應用: 原始 ResNet 使用 Conv -> BN -> ReLU 結構(BN 在卷積后、激活前),加法后不再歸一化(可視為一種 Post-Norm 變體)。原始 Transformer 論文使用的是 Post-LN(Add & Norm 在計算層之后)。
  3. 其他變體:

    • 有些結構會在殘差塊內部使用多個歸一化層。
    • 有些結構(如原始的 ResNet)只在卷積層后使用 BN,殘差加法后不再歸一化(因為 BN 已經穩定了卷積層的輸出,且 CNN 的深度相對 Transformer 較淺)。

實際應用例子

  1. ResNet (圖像識別 - CNN 代表):

    • 結構: 核心是殘差塊。一個基本塊包含:
      • 卷積層 1 -> 批歸一化 (BN) -> ReLU
      • 卷積層 2 -> 批歸一化 (BN)
      • 殘差連接:將塊的輸入 x 加到第二個 BN 的輸出上 (F(x) + x)
      • ReLU (在加法之后)
    • 結合方式: 這是 Post-Normalization 的一種形式(BN 在卷積后,加法前)。BN 穩定了卷積層的輸出 F(x),使得 F(x) + x 的分布相對可控,然后最后的 ReLU 再進行非線性變換。BN 在這里至關重要,它使得 ResNet 能夠訓練超過 100 層,并在 ImageNet 等任務上取得突破性成果。
  2. Transformer Encoder/Decoder Layer (NLP/CV - Transformer 代表):

    • 結構 (以 Pre-LN 為例,如 BERT, GPT):
      • 子層 1 (如 Multi-Head Self-Attention):
        • 輸入 x
        • 層歸一化 (LN) -> 多頭注意力計算 -> Dropout
        • 殘差連接:x + Dropout(Attention(LN(x)))
      • 子層 2 (如 Feed-Forward Network):
        • 輸入 y (子層 1 的輸出)
        • 層歸一化 (LN) -> 全連接層 1 -> 激活 (如 GELU) -> Dropout -> 全連接層 2 -> Dropout
        • 殘差連接:y + Dropout(FFN(LN(y)))
    • 結合方式: 這是典型的 Pre-Normalization (Pre-LN)。在每個子層(注意力或前饋網絡)的核心計算之前進行層歸一化 (LN)。LN 穩定了子層的輸入,然后子層進行計算,最后通過殘差連接與子層輸入相加。這種 Pre-LN 結構被證明在訓練非常深的 Transformer 模型(如大型語言模型)時比原始的 Post-LN 更穩定。
  3. Vision Transformer (ViT - CV):

    • 結構: ViT 將 Transformer 架構應用于圖像。其編碼器層結構與上述 Transformer Encoder Layer 幾乎完全相同。
    • 結合方式: 同樣采用類似 Pre-LN 或 Post-LN 的結構(現代實現多傾向 Pre-LN),在每個多頭注意力層和前饋網絡層前后使用層歸一化 (LN) 和殘差連接。這使得 ViT 能夠有效處理圖像塊序列,并在大規模圖像識別任務上取得優異性能。
  4. BERT / GPT (NLP):

    • 結構: BERT(編碼器)和 GPT(解碼器)的核心構建塊就是 Transformer 層。
    • 結合方式: 與上述 Transformer 例子一致。BERT/GPT 及其后續變種(RoBERTa, GPT-2, GPT-3 等)的成功,很大程度上依賴于殘差連接和層歸一化 (LN) 的結合,使得訓練包含數億甚至數千億參數的數十層深度模型成為可能。

總結

殘差連接解決了深度模型訓練中的梯度流問題,使得訓練極深網絡成為可能。歸一化(BN, LN 等)解決了網絡內部激活值分布不穩定的問題,加速收斂并提升穩定性。兩者的結合是協同的:

  • 歸一化補償了殘差連接中直接加法操作可能引起的輸入分布偏移,為后續層提供了穩定的輸入。
  • 殘差連接為歸一化層提供了更通暢、更穩定的梯度回傳路徑。
  • 這種組合極大地增強了深度模型的訓練穩定性、收斂速度和最終性能,是現代深度學習架構(從 ResNet 到 Transformer 及其各種衍生模型)不可或缺的核心設計范式。選擇 Pre-Norm 還是 Post-Norm 取決于具體架構和深度,Pre-Norm 在極深模型中通常表現出更好的穩定性。

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

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

相關文章

K8s集群+Rancher Server:部署DolphinScheduler 3.2.2集群

本文手把手演示了如何在 K8s Rancher 環境中快速拉起一套生產可用的 Apache DolphinScheduler 3.2.2 集群。全文圍繞“鏡像加速、依賴本地化、存儲持久化”三大痛點展開,附有詳細的代碼解析,收藏細看吧! 環境準備 1、軟件準備2、環境規劃部署…

查詢語言的進化:SQL之后,為什么是GQL?數據世界正在改變

數據是現代世界的核心驅動力。 在數據驅動的世界里,查詢語言就像人與數據溝通的橋梁。 如何高效地獲取、操作和理解數據,取決于查詢語言的演進。 自20世紀70年代關系型數據庫興起以來,SQL(Structured Query Language&#xff0…

AgentThink:一種在自動駕駛視覺語言模型中用于工具增強鏈式思維推理的統一框架

文章目錄摘要1. 引言2. 相關工作2.1 自動駕駛中的語言模型2.2 自動駕駛中的視覺問答3. 方法3.1 數據生成流水線3.2 兩階段訓練流程3.2.1 基于 SFT 的推理預熱3.2.2 基于 RLFT 的推理增強3.3 推理與評估4. 實驗4.1 主要實驗結果4.2 工具使用分析4.3 消融實驗4.4 泛化性評估5. 結…

Bug 排查日記:打造高效問題定位與解決的技術秘籍

一、引言在軟件開發的漫漫征程中,Bug 如影隨形,成為開發者們必須跨越的一道道障礙。它們或如微小的瑕疵,影響用戶體驗;或似隱藏的炸彈,引發系統故障,導致嚴重后果。高效排查 Bug,不僅是保障軟件…

使用 Sentry 為 PHP 和 Web 移動小程序提供多平臺錯誤監控

今天我在 reddit 上看到 Sentry 的推廣,想到 19 年我第一次在公司自研產品b2b2c上使用 Sentry 的經歷,后面在其他項目上多次使用Sentry,今天就順手分享一下在 Laravel 項目中接入 Sentry 的實踐心得。現代項目往往涉及 Web、移動端和小程序&a…

Python包管理工具全對比:pip、conda、Poetry、uv、Flit深度解析

在Python開發中,包的管理和使用是重要環節,現如今python包管理工具眾多,如何選擇合適的管理工具?常用的工具有pip、conda、Poetry、uv、Flit,下面這些工具進行詳細對比分析。一、工具概覽對比工具類型開發者主要特點適…

車載診斷架構 --- Service 14一丟丟小匯總

我是穿拖鞋的漢子,魔都中堅持長期主義的汽車電子工程師。 老規矩,分享一段喜歡的文字,避免自己成為高知識低文化的工程師: 做你把時間花在哪里,你的人生就在哪里。千萬別看見別人發光,就覺得自己暗淡。人生如逆旅,你我皆行人。唯有不斷閱己、越己、悅己才能活出生命的意…

Struts2 工作總結

一 in,在SQL中,IN 是一個條件操作符,用于指定多個可能的值,通常用在 WHERE 子句中。它的作用是檢查某個字段的值是否在給定的值列表中,相當于多個 OR 條件的簡寫形式。不使用 IN(冗長)SELECT * …

MQTT 認證與授權機制實踐(二)

四、實戰案例:主流 Broker 的認證授權配置指南(一)EMQ X:企業級物聯網 Broker 的安全方案1. 認證配置(用戶名密碼 證書)EMQ X 作為一款企業級物聯網 Broker,在安全認證方面提供了豐富且靈活的配…

多路轉接介紹及代碼實現

目錄 1.多路轉接技術的產生背景 2.select 3.poll 3.epoll 1.多路轉接技術的產生背景 一個技術的出現必然有它要解決的問題,那么多路轉接解決的問題是什么嗯? 我們知道,一個進程里面有一個文件描述符表管理這個進程所打開的文件,我們進行網絡通信的時候,本質就是創建一個…

《sklearn機器學習——回歸指標1》

skearn.metrics模塊實現一些損失函數,評分,并且應用函數去測度回歸標簽。其中一些已經改進,可以處理多指標案例:mean_squared_error,mean_absolute_error,explained_variance_score和r2_score。 這些函數使…

消息存儲機制-索引文件及頁緩存

對于生產者來說,將消息寫到commit log文件里面。這里會有消息的邏輯隊列,邏輯隊列里面保存了消息的偏移量。除了consumerquenue之外,它還會將數據分發到另外一個文件叫indexfile索引文件里面。這個索引文件可以保存消息的一些信息&#xff0c…

輾轉相除法(歐幾里得算法)的證明

歡迎訪問我的主頁: https://heeheeaii.github.io/ 輾轉相除法是一種用于計算兩個非負整數最大公約數的有效算法。它的證明主要分為兩個部分: 證明核心引理: gcd(a,b)gcd(b,amodb)證明算法的收斂性: 證明算法一定會在有限步內結束。 輾轉相除法…

RL【3】:Bellman Optimality Equation

系列文章目錄 文章目錄系列文章目錄前言Definition of optimal policyBellman optimality equationIntroductionMaximization on the right-hand sideContraction mapping theoremSolutionOptimalityAnalyzing optimal policies總結前言 本系列文章主要用于記錄 B站 趙世鈺老師…

有序數組,距離目標最近的k個數 二分查找

🤔 新手做題思路:第1步:理解題目- 找距離x最近的k個數- 數組已排序- 返回結果也要排序(升序)- 距離相同時,選擇較小的數第2步:關鍵insight- 數組已排序 → 考慮二分查找- 最近的k個數一定是連續…

學習心得分享

我認為知識是一定要系統化的學習,結構化梳理,這樣在運用或思考的時候,能夠回憶起自己在這一塊梳理的知識結構,如果有記錄那么能快速回憶并理解,如果沒有記錄,那么說明對自己來說超綱了,把知識進…

為什么說 Linode 和 DigitalOcean 的差距,不止于 VPS?

在今天這個全球化的商業戰場上,中國企業的出海已從“選擇題”變為“必答題”。當我們滿懷雄心,將產品和業務推向海外市場時,基礎設施的選擇,往往是決定成敗的第一步。它不僅關乎成本與性能,更直接影響著團隊的開發效率…

NSSCTF每日一題_Web_[SWPUCTF 2022 新生賽]奇妙的MD5

為了保持做題的感覺和持續學習,也就有了每日一題系列,選一些有意義的題目或者一些CTF新穎題目作為參考學習。[SWPUCTF 2022 新生賽]奇妙的MD51. 訪問首頁界面并進行分析估計題目MD5提示,查詢得知ffifdyop 這個字符串是一個奇妙的MD5字符串因為將“ffifdy…

服務器IP暴露被攻擊了怎么辦?

當服務器IP暴露后,可能會面臨各種網絡攻擊,如DDoS攻擊、端口掃描、惡意入侵等,這將嚴重影響服務器的正常運行和數據安全。本文將從檢測攻擊類型、采取緊急防護措施、優化服務器配置、尋求專業支持以及預防未來攻擊五個方面,詳細探…

TDengine 時間函數 TIMETRUNCATE 用戶手冊

TDengine TIMETRUNCATE 函數用戶使用手冊 函數概述 TIMETRUNCATE 是 TDengine 中的一個時間處理標量函數,用于將時間戳按照指定的時間單位進行截斷操作。該函數在時間數據聚合、分組和統計分析中非常有用,特別適用于智能電表等時序數據的分析場景。 語…