【NLP251】Transformer精講 殘差鏈接與層歸一化

精講部分,主要是對Transformer的深度理解方便日后從底層邏輯進行創新,對于僅應用需求的小伙伴可以跳過這一部分,不影響正常學習。

1.? 殘差模塊?

?何凱明在2015年提出的殘差網絡(ResNet),Transformer在2016年提出時正好踏上了ResNet的東風,所以就順其自然的加上了這一部分以提高特征的提取能力,殘差模塊(Residual Block)是殘差網絡(ResNet)中的核心組件,其設計原理是為了解決深度神經網絡訓練中的退化問題,即隨著網絡層數的增加,網絡的性能反而可能下降。殘差模塊通過引入恒等映射(Identity Mapping)和殘差連接(Residual Connection)來緩解這一問題。殘差模塊是實踐證明有效的模塊對于數學原理的證明目前還沒有較為清晰的推導,我來簡單說一下他的原理。

恒等映射(Identity Mapping)

恒等映射是指輸入直接通過一個“快捷方式”傳遞到后面的層,而不需要經過任何變換。這種設計允許輸入信息在網絡中直接流動,不受中間層的影響。

殘差連接(Residual Connection)

殘差連接是指將輸入 x 直接加到網絡的輸出上。具體來說,如果網絡的輸出是 F(x),那么殘差模塊的最終輸出是 F(x)+x。這種設計使得網絡可以通過學習殘差函數 F(x) 來優化原始函數 H(x),即 H(x)=F(x)+x。

殘差函數(Residual Function)

殘差函數 F(x) 是網絡中需要學習的函數,它表示輸入 x 經過一系列變換后的結果。通過殘差連接,網絡實際上是在學習 F(x) 來逼近目標函數 H(x),而不是直接學習 H(x)。這種設計使得網絡更容易優化,因為 F(x) 只需要學習 H(x) 與 x 之間的差異,即H(x)=F(x)+x≈ x。由此我們可知F(x)趨近于0。

激活函數

在殘差模塊中,通常會在殘差連接之后添加一個激活函數(如ReLU),以引入非線性特性。這樣可以確保網絡的表達能力,同時保持殘差連接的線性特性。

權重層(Weight Layers)

殘差模塊中的權重層可以包括卷積層、全連接層等,用于對輸入進行變換。這些權重層通常包含多個層,如圖中所示的兩個權重層。

當?F(x)?趨近于0時的意義

梯度流:當 F(x) 趨近于0時,殘差塊的輸出 y 將主要由輸入 x 決定。這意味著即使在深層網絡中,梯度也可以直接通過恒等映射傳播回輸入層,從而緩解梯度消失問題。

我們可以從數學角度、非嚴格證明一下它為什么能夠解決梯度消失問題。

假設現在存在一個神經網絡,它由多個殘差結構相連(類似于Transformer的結構)。每個殘差結構被定義為F(x,W),這一結構是由一個復雜結構和一個殘差鏈接并行組成的,其中x代表殘差輸入的數據,W代表該結構中的權重。設xi,xi+1分別代表殘差結構F()的輸入和輸出,設xI代表整個神經網絡的輸入,令relu激活函數為r(y)=max(0,x),簡寫為r()。由此可得:

殘差網絡中的前向傳播過程:

?殘差網絡中的反向傳播過程:

由于“1+”結構的引入,殘差網絡能夠有效地避免梯度消失現象,即在求解過程中梯度不致變為零。這使得深層網絡的梯度可以直接傳遞至淺層,從而使得整個迭代過程更加穩定。此外,殘差網絡在更新梯度時將部分乘法操作轉化為加法操作,這一改變顯著提升了計算效率。

網絡深度:殘差網絡允許構建非常深的網絡,因為即使深層網絡的權重層輸出趨近于0,網絡仍然可以通過恒等映射學習到有效的特征表示。

優化難度:當 F(x) 趨近于0時,優化問題變得相對簡單,因為網絡可以通過調整權重層的輸出來最小化損失函數,即使權重層的輸出很小或接近0。

特征重用:殘差塊允許網絡在深層中重用淺層的特征表示,從而提高模型的表達能力和泛化能力。

2. 層歸一化?

層歸一化是實踐上證明有效的中間過程特征處理方法,在目前大多數網絡結構的重要層后都會加一個歸一化層,Layer Normalization(層歸一化)是一個至關重要的部分,它是一種特定的歸一化技術,它在2016年被提出,用于減少訓練深度神經網絡時的內部協方差偏移(internal covariate shift)。而我們要講的Transformer也是在同年(2016)層歸一化提出不久后發表出來的,所以在構造網絡時也加入了從層歸一化。

歸一化在現在的網絡結構中被廣泛的應用,之后會出一期詳細的進行講解。鏈接會被放到這一位置方便小伙伴們學習。

我們來簡單講一下歸一化在NLP領域的應用。

首先,為什么要進行歸一化操作?

  • 減少內部協方差偏移:在深度學習模型訓練過程中,參數的更新會影響后續層的激活分布,這可能導致訓練過程不穩定。Layer Normalization通過規范化每一層的輸出來減輕這種效應,有助于穩定訓練過程。
    ?
  • 加速訓練速度:歸一化可以使得梯度更穩定,這通常允許更高的學習率,從而加快模型的收斂速度。
    ?
  • 減少對初始值的依賴:由于Layer Normalization使得模型對于輸入數據的分布變化更為魯棒,因此可以減少模型對于參數初始值的敏感性。
    ?
  • 允許更深層網絡的訓練:通過規范化每層的激活,Layer Normalization可以幫助訓練更深的網絡結構,而不會那么容易出現梯度消失或爆炸的問題。

接下來,第二個問題為什么要進行層歸一化??

?通過前面的學習我們知道對于自然語言的處理通常是在三個維度上進行的

(batch_ size, vocal_ size, input_ dimensions)或
(batch_ size,time_ step, input_ dimensions )
?

出去特征維度?input_ dimensions還有兩個維度,一個是批次維度,另一個是時間維度或詞表維度

也就對應了兩種歸一化即批歸一化(Batch Normalization)和層歸一化(Layer Normalization)。

那為什么不進行批歸一化呢?其實也不是絕對的,主要是經過以下三方面的考量,為了方便大家理解在說明之前我們先來認識以下這兩種歸一化方式分別是什么邏輯

在自然語言處理(NLP)中,層歸一化(Layer Normalization,LN)比批歸一化(Batch Normalization,BN)更常用,原因如下:

  1. 變長序列:NLP任務中的輸入序列長度不固定,層歸一化能有效處理變長序列,而批歸一化依賴于批次中的數據均值和方差,可能會受到序列長度變化的影響。換句話說就是在三個批次中提取到的特征分別是(填充,0.5775,0.3798)提取到的數據均值和方差就不準確,即便是將填充替換為某一數字,仍然無法像其他 input_ dimensions數字一樣體現有效的特征信息,故而算出的數據均值和方差也會受到影響

  2. 小批次訓練:NLP任務中通常使用較小的批次大小,BN在小批次時較小的樣本數很難提取出具有廣泛代表意義的數據均值和方差,導致均值和方差估計不穩定,而LN不依賴于批次大小,適應性更強。

  3. RNN和Transformer:尤其在Transformer模型中,層歸一化能夠在每個樣本的特征維度上進行歸一化,避免了批歸一化需要跨樣本計算均值和方差的問題,從而提高了模型的訓練穩定性。

?所以呀基于上述考量我們多采用LN即層歸一化方式。

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

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

相關文章

Android學習制作app(ESP8266-01S連接-簡單制作)

一、理論 部分理論見arduino學習-CSDN博客和Android Studio安裝配置_android studio gradle 配置-CSDN博客 以下直接上代碼和效果視頻,esp01S的收發硬件代碼目前沒有分享,但是可以通過另一個手機網絡調試助手進行模擬。也可以直接根據我的代碼進行改動…

圖書管理系統 Axios 源碼__新增圖書

目錄 功能介紹 核心代碼解析 源碼:新增圖書功能 總結 本項目基于 HTML、Bootstrap、JavaScript 和 Axios 開發,實現了圖書的增刪改查功能。以下是新增圖書的功能實現,適合前端開發學習和項目實踐。 功能介紹 用戶可以通過 模態框&#xf…

DeepSeek Janus-Pro:多模態AI模型的突破與創新

近年來,人工智能領域取得了顯著的進展,尤其是在多模態模型(Multimodal Models)方面。多模態模型能夠同時處理和理解文本、圖像等多種類型的數據,極大地擴展了AI的應用場景。DeepSeek(DeepSeek-V3 深度剖析:…

AJAX XML

AJAX XML 引言 隨著互聯網技術的不斷發展,Web應用對用戶交互性和實時性的要求越來越高。AJAX(Asynchronous JavaScript and XML)技術的出現,為Web應用開發提供了強大的支持。AJAX技術允許Web應用在不重新加載整個頁面的情況下,與服務器進行異步通信。XML作為數據傳輸格式…

OpenGL學習筆記(五):Textures 紋理

文章目錄 紋理坐標紋理環繞方式紋理過濾——處理紋理分辨率低的情況多級漸遠紋理Mipmap——處理紋理分辨率高的情況加載與創建紋理 &#xff08; <stb_image.h> &#xff09;生成紋理應用紋理紋理單元練習1練習2練習3練習4 通過上一篇著色部分的學習&#xff0c;我們可以…

代理模式——C++實現

目錄 1. 代理模式簡介 2. 代碼示例 1. 代理模式簡介 代理模式是一種行為型模式。 代理模式的定義&#xff1a;由于某些原因需要給某對象提供一個代理以控制該對象的訪問。這時&#xff0c;訪問對象不適合或者不能直接訪問引用目標對象&#xff0c;代理對象作為訪問對象和目標…

Vue3 表單:全面解析與最佳實踐

Vue3 表單&#xff1a;全面解析與最佳實踐 引言 隨著前端技術的發展&#xff0c;Vue.js 已經成為最受歡迎的前端框架之一。Vue3 作為 Vue.js 的最新版本&#xff0c;帶來了許多改進和新的特性。其中&#xff0c;表單處理是 Vue 應用中不可或缺的一部分。本文將全面解析 Vue3 …

C++11新特性之范圍for循環

1.介紹 C11標準之前&#xff0c;使用for循環遍歷數組或容器&#xff0c;只能使用以下結構&#xff1a; for&#xff08;表達式1&#xff1b;表達式2&#xff1b;表達式3&#xff09;{ 循環體 } 那么在C11標準中&#xff0c;除了上面的方法外&#xff0c;又引入了一種全新的語…

攻防世界 fileclude

代碼審計 WRONG WAY! <?php include("flag.php"); highlight_file(__FILE__);//高亮顯示文件的源代碼 if(isset($_GET["file1"]) && isset($_GET["file2"]))//檢查file1和file2參數是否存在 {$file1 $_GET["file1"];$fi…

圖書管理系統 Axios 源碼__獲取圖書列表

目錄 核心功能 源碼介紹 1. 獲取圖書列表 技術要點 適用人群 本項目是一個基于 HTML Bootstrap JavaScript Axios 開發的圖書管理系統&#xff0c;可用于 添加、編輯、刪除和管理圖書信息&#xff0c;適合前端開發者學習 前端交互設計、Axios 數據請求 以及 Bootstrap 樣…

Vue 響應式渲染 - 列表布局和v-html

Vue 漸進式JavaScript 框架 基于Vue2的學習筆記 - Vue 響應式渲染 - 列表布局和v-html 目錄 列表布局 簡單渲染列表 顯示索引值 點擊變色 V-html 作用 注意 采用策略 應用 總結 列表布局 簡單渲染列表 Data中設置狀態&#xff0c;是一個數組格式的默認信息。 然后…

如何實現一個CLI命令行功能 | python 小知識

如何實現一個CLI命令行功能 | python 小知識 在現代軟件開發中&#xff0c;命令行界面&#xff08;CLI&#xff09;的設計與交互至關重要。Click是一個強大的Python庫&#xff0c;專門用于快速創建命令行界面&#xff0c;以其簡單易用性和豐富的功能贏得了開發者的青睞。本文將…

[SAP ABAP] Debug Skill

SAP ABAP Debug相關資料 [SAP ABAP] DEBUG ABAP程序中的循環語句 [SAP ABAP] 靜態斷點的使用 [SAP ABAP] 在ABAP Debugger調試器中設置斷點 [SAP ABAP] SE11 / SE16N 修改標準表(慎用)

kamailio-Core 說明書 版本:Kamailio SIP Server v6.0.x(穩定版)

Core 說明書 版本&#xff1a;Kamailio SIP Server v6.0.x&#xff08;穩定版&#xff09; 概述 本教程收集了 Kamailio 導出的函數和參數 core 添加到配置文件中。 注意&#xff1a;此頁面上的參數不按字母順序排列。 結構 kamailio.cfg 的結構可以看作是三個部分&#xff…

.Net / C# 繁體中文 與 簡體中文 互相轉換, 支持地方特色詞匯

版本號 Nuget 搜索 “OpenCCNET”, 注意別找錯, 好多庫的名字都差不多 支持 “繁,簡” 的互相轉換, 支持多個地區常用詞匯的轉換, 還支持 日文的新舊轉換. OpenCC 在 .Net 中的實現 https://github.com/CosineG/OpenCC.NET <PackageReference Include"OpenCCNET"…

Redis腦裂問題詳解及解決方案

Redis是一種高性能的內存數據庫&#xff0c;廣泛應用于緩存、消息隊列等場景。然而&#xff0c;在分布式Redis集群中&#xff0c;腦裂問題&#xff08;Split-Brain&#xff09;是一個需要特別關注的復雜問題。本文將詳細介紹Redis腦裂問題的成因、影響及解決方案。 一、什么是…

LLMs之OpenAI o系列:OpenAI o3-mini的簡介、安裝和使用方法、案例應用之詳細攻略

LLMs之OpenAI o系列&#xff1a;OpenAI o3-mini的簡介、安裝和使用方法、案例應用之詳細攻略 目錄 相關文章 LLMs之o3&#xff1a;《Deliberative Alignment: Reasoning Enables Safer Language Models》翻譯與解讀 LLMs之OpenAI o系列&#xff1a;OpenAI o3-mini的簡介、安…

女生年薪12萬,算不算屬于高收入人群

在繁華喧囂的都市中&#xff0c;我們時常會聽到關于收入、高薪與生活質量等話題的討論。尤其是對于年輕女性而言&#xff0c;薪資水平不僅關乎個人價值的體現&#xff0c;更直接影響到生活質量與未來的規劃。那么&#xff0c;女生年薪12萬&#xff0c;是否可以被劃入高收入人群…

AI開發學習之——PyTorch框架

PyTorch 簡介 PyTorch &#xff08;Python torch&#xff09;是由 Facebook AI 研究團隊開發的開源機器學習庫&#xff0c;廣泛應用于深度學習研究和生產。它以動態計算圖和易用性著稱&#xff0c;支持 GPU 加速計算&#xff0c;并提供豐富的工具和模塊。 PyTorch的主要特點 …

Python安居客二手小區數據爬取(2025年)

目錄 2025年安居客二手小區數據爬取觀察目標網頁觀察詳情頁數據準備工作&#xff1a;安裝裝備就像打游戲代碼詳解&#xff1a;每行代碼都是你的小兵完整代碼大放送爬取結果 2025年安居客二手小區數據爬取 這段時間需要爬取安居客二手小區數據&#xff0c;看了一下相關教程基本…