【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的收发硬件代码目前没有分享,但是可以通过另一个手机网络调试助手进行模拟。也可以直接根据我的代码进行改动…

图书管理系统 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;看了一下相关教程基本…