Transformer(二)—— ResNet(残差网络)

Transformer(二)—— ResNet(残差网络)

    • 一、背景
      • 1.1 梯度消失/爆炸
      • 1.2 网络退化(Degradation)
    • 二、思路
      • 2.1 为什么需要更深的网络
      • 2.2 理想中的深网络表现
    • 三、实践和实验效果
      • 3.1 构造恒等映射:残差学习(residule learning)
      • 3.2 残差网络
    • 四、Transformer中的残差连接

在这里插入图片描述
在Transformer中,数据过Attention层和FFN层后,都会经过一个Add & Norm处理。其中,Add为residule block(残差模块),数据在这里进行residule connection(残差连接)。残差连接的思想最经典的代表就是2015年被提出的ResNet,这个用于解决深层网络训练问题的模型最早被用于图像任务处理上,现在已经成为一种普适性的深度学习方法。

一、背景

1.1 梯度消失/爆炸

在深度学习网络中,为了让模型学到更多非线性的特征,在激活层往往使用例如sigmoid这样的激活函数。对sigmoid来说,其导数的取值范围在 (0, 1/4],在层数堆叠的情况下,更容易出现梯度消失的问题。

面对梯度消失/爆炸的情况,可以通过Normalization等方式解决,使得模型最终能够收敛。

1.2 网络退化(Degradation)

因为梯度消失/爆炸所导致的深层网络模型不收敛的问题,已经得到了解决。那么现在新的问题出现了:在模型能够收敛的情况下,网络越深,模型的准确率越低,同时,模型的准确率先达到饱和,此后迅速下降。这个情况我们称之为网络退化(Degradation)。如下图,56层网络在测试集(右)上的错误率比20层网络要更高,这个现象也不是因为overfitting所引起的,因为在训练集上,深层网络的表现依然更差。
在这里插入图片描述

二、思路

2.1 为什么需要更深的网络

神经网络帮我们避免了繁重的特征工程过程。借助神经网络中的非线形操作,可以帮助我们更好地拟合模型的特征。为了增加模型的表达能力,一种直觉的想法是,增加网络的深度,一来使得网络的每一层都尽量学到不同的模式,二来更好地利用网络的非线性拟合能力。

2.2 理想中的深网络表现

理想中的深网络,其表现不应该差于浅网络。举一个简单的例子,下图左边是2层的浅网络,右边是4层的深网络,我们只要令深网络的最后两层的输入输出相等,那么两个网络就是等效的,这种操作被称为恒等映射(Identity Mapping)
在这里插入图片描述
当然,这样完全相等的映射是一种极端情况,更为理想的情况是,在网络的深层,让网络尽量逼近这样的极端情况,使得网络在学到新东西的同时,其输出又能逼近输入,这样就能保证深网络的效果不会比浅网络更差。

总结:在网络的深层,需要学习一种恒等映射(Identity Mapping)。

三、实践和实验效果

3.1 构造恒等映射:残差学习(residule learning)

最暴力的构造恒等映射的方法,就是在相应网络部分的尾端增加一层学习层在这里插入图片描述 ,来满足输出和输入逼近。但是本来深网络要学的参数就很庞大了,再构造新的参数层,又增加了模型的复杂度。
在这里插入图片描述
能不能在不添加参数层的情况下,实现恒等映射的功能?考虑下图:
在这里插入图片描述
在这里插入图片描述

因此,ResNet就作为一种解决网络退化问题的有效办法出现了,借助ResNet,我们能够有效训练出更深的网络模型(可以超过1000层),使得深网络的表现不差于浅网络。

在深度神经网络中,当网络很深时,除了增加计算资源消耗以及模型过拟合问题外,还会出现梯度消失/爆炸问题,导致浅层网络参数无法更新。

而且深层的网络还有一个问题,假设我们的初始设定网络是M层,而其实最优化模型对应的层数可能是K层,那么多出来的(M-K)层网络结构,不仅不会提升模型的表达能力,反而使得模型的效果变差(表现为Loss先下降并趋于稳定值,然后再次上升。),这就产生了网络退化问题。

基于以上问题,CV领域里ResNet模型中的残差网络闪亮登场了。

3.2 残差网络

定义问题:统计学中的残差和误差是非常易混淆的两个概念。误差是衡量观测值和真实值之间的差距,残差是指预测值和观测值之间的差距。为什么叫残差网络呢?作者的解释是,网络的一层通常可以看做y=H(x),而残差网络的一个残差块为:H(x)=F(x)+x,则F(x) = H(x)-x,而y=x是观测值,H(x)是预测值,所以H(x)-x即为残差,也即F(x)是残差,故称残差网络

深层网络在前向传播时,随着网络加深,网络获得的信息会逐层递减,而ResNet针对该问题的处理方式是“直接映射”,即下一层不仅包括该层的信息x,还包括该层经非线性变换后的新信息F(x)。这样的处理使得信息反而呈现逐层递增趋势。这可太好用了,可以不用担心信息的丢失问题了。

在这里插入图片描述

残差连接解决的问题
解决梯度消失网络退化的问题。

四、Transformer中的残差连接

在transformer的encoder和decoder中,各用到了6层的attention模块,每一个attention模块又和一个FeedForward层(简称FFN)相接。对每一层的attention和FFN,都采用了一次残差连接,即把每一个位置的输入数据和输出数据相加,使得Transformer能够有效训练更深的网络。在残差连接过后,再采取Layer Nomalization的方式。具体的操作过程见下图,箭头表示画不下了,从左边转到右边去画:
在这里插入图片描述

【必知必会】残差连接
Transformer学习笔记四:ResNet(残差网络)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/129435.html

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

相关文章

0016Java程序设计-springboot幼儿园管理系统

摘 要目 录系统设计开发环境 摘 要 随着科学技术的飞速发展,各行各业都在努力与现代先进技术接轨,通过科技手段提高自身的优势;对于幼儿园管理系统当然也不能排除在外,随着网络技术的不断成熟,带动了幼儿园管理系统&a…

【进阶篇】MySQL的MVCC实现机制详解

文章目录 0.前言1.基础介绍1.1. 什么是MVCC?1.1. 什么是当前读和快照读?1.1. 当前读,快照读和MVCC的关系1.1. MVCC能解决什么问题,好处是?1.1.1. 提高并发性能1.1.2. 避免死锁1.1.3. 解决脏读、不可重复读和幻读等问题1.1.4. 实现…

【unity3D】如何修改相机的默认视角

💗 未来的游戏开发程序媛,现在的努力学习菜鸡 💦本专栏是我关于游戏开发的学习笔记 🈶本篇是unity的如何修改相机的默认视角 如何修改相机的默认视角 Game窗口运行的话视角是这样的: 此时Scene窗口的视角是这样的&…

游戏发行平台都有什么服务和功能?

游戏发行平台通常提供一系列服务和功能,以帮助游戏开发商将游戏推向市场,并为玩家提供游戏。以下是一些常见的游戏发行平台服务和功能: 1、游戏发布 发行平台允许游戏开发商将游戏上传到平台上,以供玩家下载和安装。 2、游戏销售…

qt作业day4

//clock_exercise.cpp#include "clock_timer.h" #include "ui_clock_timer.h"//时间事件处理函数 void Clock_Timer::timerEvent(QTimerEvent *event) {if(event->timerId() time_id){sys_tm QDateTime :: currentDateTime(); // int year sy…

远程恋爱网站部署秘籍——群晖虚拟机助ni秀恩爱

文章目录 前言1. 安装网页运行环境1.1 安装php1.2 安装webstation 2. 下载网页源码文件2.1 访问网站地址并下载压缩包2.2 解压并上传至群辉NAS 3. 配置webstation3.1 配置网页服务3.2 配置网络门户 4. 局域网访问静态网页配置成功5. 使用cpolar发布静态网页,实现公网…

习题练习 C语言(暑期第四弹)

自我小提升! 前言一、数组二、指针运算三、统计每个月兔子的总数四、双指针的应用五、判断指针六、珠玑妙算七、两数之和八、数组下标九、指针十、寻找峰值十一、二级指针十二、大端小端十三、无符号参数十四、数对十五、截取字符串总结 前言 重要的事说三遍&#…

分布式系统常用的模式

分布式系统常用的模式 Ambassador 名称:“大使”模式 介绍:作为应用程序和其他服务的“中间人”,负责应用程序和其他服务之间的通信,包括日志、监控或重试处理等任务。 举例:K8S使用Envoy作为一个“大使”来简化服务…

Docker 搭建Redis 集群之路

前言 搞技术就是动手,动手再动手,实践出真知,毕竟最终是要解决问题的呢,废话不多讲,开搞,主要是为了记录一下,毕竟过程还是有点艰辛呢需求(target) Windows 电脑 装一个虚拟机用虚拟机构造Linux 系统下载Docker 搭建Redis 集群代码交互集群过关斩将 检查电脑是否开启…

初识Kafka

kafka 第一章、初识Kafka 原先: kafka,由LinkedIn公司采用Scala语言开发的一个多分区,多副本,基于Zookeeper协调的分布式消息系统,被捐献给Apache基金会。 现在 分布式流式处理平台。 高吞吐 可持久化 可水平扩展 …

go小知识2

Golang开发新手常犯的50个错误_gezhonglei2007的博客-CSDN博客 一些题目整理,附带大佬的解释 1.go中哪些值不能寻址& 常量(const常量,字面值3.14,字符串“xxx”,函数或方法, map的val值) golang中接…

JVM系列 运行时数据区

系列文章目录 第一章 运行区实验 文章目录 系列文章目录前言一、堆(Heap)1.1、新生代/Young区1.1.1、Eden区1.1.2、Survival区 1.2、年老代(old区) 二、虚拟机栈(Stack)2.1、栈顶缓存技术2.2、溢出2.3、栈…

83 # 静态服务中间件 koa-static 的使用以及实现

静态服务中间件:koa-static 中间件可以决定是否向下执行,如果自己可以处理,那么直接处理完毕结束,如果自己处理不了,next 方法会继续向下执行 新建 public 文件夹,里面添加 index.html、style.css 文件 …

图的学习,深度和广度遍历

一、什么是图 表示“多对多”的关系 包括&#xff1a; 一组顶点&#xff1a;通常用V&#xff08;Vertex&#xff09;表示顶点集合一组边&#xff1a;通常用E&#xff08;Edge&#xff09;表示边的集合 边是顶点对&#xff1a;(v, w)∈E&#xff0c;其中v,w∈V有向边<v, w&…

go开发之个微机器人的二次开发

简要描述&#xff1a; 设置某条朋友圈为隐私 请求URL&#xff1a; http://域名地址/snsSetAsPrivacy 请求方式&#xff1a; POST 请求头Headers&#xff1a; Content-Type&#xff1a;application/jsonAuthorization&#xff1a;login接口返回 参数&#xff1a; 参数名…

CFTC可能比SEC更可怕,将监管炮口直接对准DeFi?

还未开始享受Uniswap在法庭上为DeFi行业带来的“胜利果实”&#xff0c;美国商品期货委员会&#xff08;CFTC&#xff09;在一个星期之后立即将其无情砸碎&#xff0c;并将其监管大炮直接对准了DeFi衍生品市场&#xff0c;乃至整个DeFi行业。 2023年9月7日&#xff0c;CFTC宣布…

leetcode 215.数组中第k大的元素

⭐️ 题目描述 &#x1f31f; leetcode链接&#xff1a;数组中第k大的元素 思路&#xff1a; 使用堆数据结构&#xff0c;大堆的堆顶是堆内最大的元素&#xff0c;也就是把当前堆 pop k - 1 次&#xff0c;第 k 次 top 出来的元素就是第 k 大的数。 代码&#xff1a; class …

Spring-MVC使用JSR303及拦截器,增强网络隐私安全

目录 一、JSR303 ( 1 ) 是什么 ( 2 ) 作用 ( 3 ) 常用注解 ( 4 ) 入门使用 二、拦截器 2.1 是什么 2.2 拦截器与过滤器的区别 2.3 应用场景 2.4 基础使用 2.5 用户登录权限控制 给我们带来的收获 一、JSR303 ( 1 ) 是什么 JSR 303是Java规范请求&#xff…

LeetCode 1126.查询活跃业务

数据准备 Create table If Not Exists Events (business_id int, event_type varchar(10), occurences int); Truncate table Events; insert into Events (business_id, event_type, occurences) values (1, reviews, 7); insert into Events (business_id, event_type, occu…

职场新人对测试用例的困惑

职场新人对测试用例的困惑无非有以下几点&#xff1a; 什么是测试用例&#xff0c;为什么要写测试用例&#xff1f; 不知道怎么写&#xff0c;写了也不知道写的是否完整。 一、什么是测试用例&#xff1f; 百科的释义&#xff1a; 测试用例是对一项特定的软件产品进行测试任…