【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.mzph.cn/news/894423.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Android学习制作app(ESP8266-01S连接-简单制作)

一、理论 部分理论见arduino学习-CSDN博客和Android Studio安装配置_android studio gradle 配置-CSDN博客 以下直接上代码和效果视频,esp01S的收发硬件代码目前没有分享,但是可以通过另一个手机网络调试助手进行模拟。也可以直接根据我的代码进行改动…

DeepSeek Janus-Pro:多模态AI模型的突破与创新

近年来,人工智能领域取得了显著的进展,尤其是在多模态模型(Multimodal Models)方面。多模态模型能够同时处理和理解文本、图像等多种类型的数据,极大地扩展了AI的应用场景。DeepSeek(DeepSeek-V3 深度剖析:…

OpenGL学习笔记(五):Textures 纹理

文章目录 纹理坐标纹理环绕方式纹理过滤——处理纹理分辨率低的情况多级渐远纹理Mipmap——处理纹理分辨率高的情况加载与创建纹理 &#xff08; <stb_image.h> &#xff09;生成纹理应用纹理纹理单元练习1练习2练习3练习4 通过上一篇着色部分的学习&#xff0c;我们可以…

代理模式——C++实现

目录 1. 代理模式简介 2. 代码示例 1. 代理模式简介 代理模式是一种行为型模式。 代理模式的定义&#xff1a;由于某些原因需要给某对象提供一个代理以控制该对象的访问。这时&#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…

Vue 响应式渲染 - 列表布局和v-html

Vue 渐进式JavaScript 框架 基于Vue2的学习笔记 - Vue 响应式渲染 - 列表布局和v-html 目录 列表布局 简单渲染列表 显示索引值 点击变色 V-html 作用 注意 采用策略 应用 总结 列表布局 简单渲染列表 Data中设置状态&#xff0c;是一个数组格式的默认信息。 然后…

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的简介、安…

AI开发学习之——PyTorch框架

PyTorch 简介 PyTorch &#xff08;Python torch&#xff09;是由 Facebook AI 研究团队开发的开源机器学习库&#xff0c;广泛应用于深度学习研究和生产。它以动态计算图和易用性著称&#xff0c;支持 GPU 加速计算&#xff0c;并提供丰富的工具和模块。 PyTorch的主要特点 …

Python安居客二手小区数据爬取(2025年)

目录 2025年安居客二手小区数据爬取观察目标网页观察详情页数据准备工作&#xff1a;安装装备就像打游戏代码详解&#xff1a;每行代码都是你的小兵完整代码大放送爬取结果 2025年安居客二手小区数据爬取 这段时间需要爬取安居客二手小区数据&#xff0c;看了一下相关教程基本…

OpenCV:开运算

目录 1. 简述 2. 用腐蚀和膨胀实现开运算 2.1 代码示例 2.2 运行结果 3. 开运算接口 3.1 参数详解 3.2 代码示例 3.3 运行结果 4. 开运算应用场景 5. 注意事项 6. 总结 相关阅读 OpenCV&#xff1a;图像的腐蚀与膨胀-CSDN博客 OpenCV&#xff1a;闭运算-CSDN博客 …

JavaWeb入门-请求响应(Day3)

(一)请求响应概述 请求(HttpServletRequest):获取请求数据 响应(HttpServletResponse):设置响应数据 BS架构:Browser/Server,浏览器/服务器架构模式。客户端只需要浏览器就可访问,应用程序的逻辑和数据都存储在服务端(维护方便,响应速度一般) CS架构:Client/ser…

【SLAM】于AutoDL云上GPU运行GCNv2_SLAM的记录

配置GCNv2_SLAM所需环境并实现AutoDL云端运行项目的全过程记录。 本文首发于❄慕雪的寒舍 1. 引子 前几天写了一篇在本地虚拟机里面CPU运行GCNv2_SLAM项目的博客&#xff1a;链接&#xff0c;关于GCNv2_SLAM项目相关的介绍请移步此文章&#xff0c;本文不再重复说明。 GCNv2:…

罗格斯大学:通过输入嵌入对齐选择agent

&#x1f4d6;标题&#xff1a;AgentRec: Agent Recommendation Using Sentence Embeddings Aligned to Human Feedback &#x1f310;来源&#xff1a;arXiv, 2501.13333 &#x1f31f;摘要 &#x1f538;多代理系统必须决定哪个代理最适合给定的任务。我们提出了一种新的架…

团体程序设计天梯赛-练习集——L1-025 正整数A+B

一年之际在于春&#xff0c;新年的第一天&#xff0c;大家敲代码了吗&#xff1f;哈哈 前言 这道题分值是15分&#xff0c;值这个分&#xff0c;有一小点运算&#xff0c;难度不大&#xff0c;虽然说做出来了&#xff0c;但是有两个小疑点。 L1-025 正整数AB 题的目标很简单…

Leetcode:598

1&#xff0c;题目 2&#xff0c;思路 脑筋急转弯&#xff0c;看题目一时半会还没搞懂意思。 其实不然就是说ops是个矩阵集合&#xff0c;集合的每个矩阵有俩个元素理解为行列边距 m和n是理解为一个主矩阵&#xff0c;计算ops的每个小矩阵还有这个主矩阵的交集返回面积 3&…

web前端12--表单和表格

1、表格标签 使用<table>标签来定义表格 HTML 中的表格和Excel中的表格是类似的&#xff0c;都包括行、列、单元格、表头等元素。 区别&#xff1a;HTML表格在功能方面远没有Excel表格强大&#xff0c;HTML表格不支持排序、求和、方差等数学计算&#xff0c;主要用于布…

【AI】探索自然语言处理(NLP):从基础到前沿技术及代码实践

Hi &#xff01; 云边有个稻草人-CSDN博客 必须有为成功付出代价的决心&#xff0c;然后想办法付出这个代价。 目录 引言 1. 什么是自然语言处理&#xff08;NLP&#xff09;&#xff1f; 2. NLP的基础技术 2.1 词袋模型&#xff08;Bag-of-Words&#xff0c;BoW&#xff…

第1章 量子暗网中的血色黎明

月球暗面的危机与阴谋 量子隧穿效应催生的幽蓝电弧&#xff0c;于环形山表面肆意跳跃&#xff0c;仿若无数奋力挣扎的机械蠕虫&#xff0c;将月球暗面的死寂打破&#xff0c;徒增几分诡异。艾丽伫立在被遗弃的“广寒宫”量子基站顶端&#xff0c;机械义眼之中&#xff0c;倒映着…

AI-ISP论文Learning to See in the Dark解读

论文地址&#xff1a;Learning to See in the Dark 图1. 利用卷积网络进行极微光成像。黑暗的室内环境。相机处的照度小于0.1勒克斯。索尼α7S II传感器曝光时间为1/30秒。(a) 相机在ISO 8000下拍摄的图像。(b) 相机在ISO 409600下拍摄的图像。该图像存在噪点和色彩偏差。©…

【Git】初识Git Git基本操作详解

文章目录 学习目标Ⅰ. 初始 Git&#x1f4a5;注意事项 Ⅱ. Git 安装Linux-centos安装Git Ⅲ. Git基本操作一、创建git本地仓库 -- git init二、配置 Git -- git config三、认识工作区、暂存区、版本库① 工作区② 暂存区③ 版本库④ 三者的关系 四、添加、提交更改、查看提交日…