【卷积神经网络】ResNets 残差网络

通常来说,增加卷积神经网络的层数有利于提高模型的准确率,但是深层的神经网络也变得难以训练的,因为存在梯度消失与梯度爆炸问题。Microsoft 亚洲研究院的 Kaiming He 等人提出了一个残差学习框架,以简化对 CNN 网络的训练。通过将层重新表述为参考层输入的学习残差函数,深层神经网络变得更容易优化,并且可以从显著增加网络的准确性。本文主要介绍 ResNet 残差网络的基本结构(Residual block)及其工作原理。

目录

1 深层网络的瓶颈

2 残差块与残差网络


1 深层网络的瓶颈

        在 ImageNet 挑战赛中,排名靠前的团队都使用深度较深的模型,一般是深度在 16 到 30 层之间的神经网络。通过叠加多个网络层,神经网络能够更容易地提取出丰富的分类特征,从而提高分类准确性。

        但随之而来的问题是,简单地增加网络层数,就能获得学习效果更好的模型吗?前面提到的梯度消失与梯度爆炸问题是一个阻碍。实际上,神经网络的学习误差,一开始会随着网络层数的增加而减少,但是当层数增大到一定数量时,学习误差反而会增加,这种问题被称为退化(Degradation problem)。

        下图展现了 20 层模型与 56 层模型的训练误差,和测试误差随迭代次数的变化情况,图片来源《Deep Residual Learning for Image Recognition》论文。

2 残差块与残差网络

        在《Deep Residual Learning for Image Recognition》论文中,Kaiming He 等人通过引入深度残差学习框架来解决退化问题。

        残差网络使用了被称为残差块的基本结构,如下图所示。

        在残差块中,输入 x 除了沿着主分支(即经过两层线性加权与非线性激活)传播之外,还沿着一条捷径进行传播,作为第二层非线性激活的输入,这条捷径被称为 “Shortcur connection”。

        假设神经网络需要学习的函数为 H(x) = x,对于不存在捷径的网络,神经网络需要学习 F(x) = H(x) = x 这个函数,当神经网络的层数增加时,优化算法训练模型的复杂度会增加。

        而引入 Shortcut connection 之后,模型学习的函数变为 F(x) = H(x) - x = 0,这只需要让 weight layer 的权重为 0 即可实现,这说明残差网络更擅长学习 H(x) = x 恒等映射。当神经网络的层数增加时,Shortcut connection 的引入不会增额外的训练参数,也不会增加训练的复杂度,可以有效解决前面提到的退化问题。

        残差网络(Residual Networks)使用了多个堆叠的残差块,在《Deep Residual Learning for Image Recognition》论文中,Kaiming He 等人对比了使用与未使用残差结构网络的表现,网络结构如下图所示。

                当残差块的输入与输出具有相同维度时,x 可以直接加到 F(x) 之上;当输出维度增加时,可以使用 0 值填充多出来的维度,也可以使用 1x1 卷积(上图中用虚线连接表示)。

        在 ImageNet 训练集上,ResNet-34 实现了比 ResNet-18 更低的误差。

【参考文献】

[1] Kaiming He, Xiangyu Zhang, Xiangyu Zhang, et al. Deep residual learning for image recognition[C]//Proceedings of the IEEE conference on computer vision and pattern recognition. 2016: 770-778.

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

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

相关文章

基于SpringBoot+Vue的餐饮管理系统设计与实现

前言 💗博主介绍:✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌💗 👇🏻…

【SSM】登录和注册

框架 controller 控制层 dao 持久层 interceptor 拦截器 model 实体层 uils 工具类 service 业务层 resources 资源文件层 mapper 放编写sql语句的文件,与持久层的文件对应 具体代码 Controller //控制层 public class UserController { //用于调用Servic…

Linux设备驱动之gpio-keys

Linux设备驱动之gpio-keys 前两个章节介绍了Linux字符设备和platform设备的注册,他们都是比较基础的,让大家理解Linux内核的设备驱动是如何注册、使用的。但在工作中,个人认为完全手写一个字符设备驱动的机会比较少,更多的都是基…

你的第1个 Unity 游戏!!!

简介 首先新建一个方块添加重力!!!总结首先 首先,你要先打开 U n i t y Unity Unity

Linux 挂载

挂载需要挂载源和挂载点 虚拟机本身就有的挂源 添加硬件 重启虚拟机 操作程序 sudo fdisk -l //以管理员权限查看电脑硬盘使用情况sudo mkfs.ext4 /dev/sdb //以管理员身份格式化硬盘sudo mkdir guazai //创建挂载文件夹 sudo mount /dev/sdb/guazai //将挂载源接上挂载点 s…

嵌入式C语言知识复习和提高

文章目录 前言基础知识main函数防BUG注释(重要)关键字标识符命名(驼峰命名)常量类型变量printf1.输出不同类型数据2.输出不同宽度数据3.不同类型数据长度归类 scanf函数运算符sizeof(运算符,优先级2&#x…

欧拉操作系统在线安装mysql8数据库并用navicat premium远程连接

网上太多安装教程,但是没有一个教程能够一站式解决安装问题,而我不一样,我写的每一个博客,都是我自己试验过很多次,能够确保一站式解决,才会发上去,希望能够帮助到大家 第一步:升级…

Java手写背包问题算法应用拓展案例

Java手写背包问题算法应用拓展案例 1. 0-1背包问题 实际案例:购物问题 假设你是一个购物爱好者,你去商场购物,商场里有很多商品,每个商品有自己的重量和价值。你只有一个背包,它的容量是有限的。你希望在购物过程中…

恒合仓库 - 仓库管理系统搭建

仓库管理系统搭建 文章目录 仓库管理系统搭建一、项目介绍1.1 项目描述1.2 技术选型1.3 模块划分 二、搭建前端环境三、搭建后端环境3.1 创建springboot项目 - 划分包层次3.2 导入依赖3.3 启动类配置3.4.配置文件配置 一、项目介绍 1.1 项目描述 项目搭球为满足日益扩大的仓库…

Matlab图像处理-区域描述

一旦一幅图像的目标区域被确定,我们往往用一套描述子来表示其特性。选择区域描述子的动机不单纯为了减少在区域中原始数据的数量,而且也应有利于区别带有不同特性的区域。因此,当目标区域有大小、旋转、平移等方面的变化时,针对这…

2023 亲测好用版VScode配置文件

tasks.json {"tasks": [{"type": "cppbuild","label": "g++",// 调试会话开始前执行的任务,一般为编译程序,c++为g++, c为gcc 和launch中preLaunchTask保持一致// "command": "D:/Users/Downloads/ming…

力扣 -- 394. 字符串解码

解题方法&#xff1a; 参考代码&#xff1a; class Solution{ public:string decodeString(string s){stack<string> sst;stack<int> dst;//防止字符串栈为空的时候再追加字符串到栈顶元素sst.push("");int n s.size();int i 0;while(i<n)//最好不…

高级运维学习(九)块存储、文件系统存储和对象存储的实现

块存储基础 块设备存取数据时&#xff0c;可以一次存取很多。字符设备只能是字符流 [rootceph1 ~]# ll /dev/sda brw-rw---- 1 root disk 8, 0 Dec 12 13:15 /dev/sda # b表示block&#xff0c;块设备[rootceph1 ~]# ll /dev/tty crw-rw-rw- 1 root tty 5, 0 Dec 12 13:31 /d…

工业机器人仿真参考

最近有一些朋友看到我做的关于Unity3d仿真机器人的项目&#xff0c;本次我在平台做以分享&#xff0c;希望的朋友或者有需要在此基础做开发的可以参考下。 开发工具&#xff1a; 下位机&#xff1a;Unity3D 上位机&#xff1a;Visual Studio 机械臂模型&#xff1a;TH6-QKM…

从零开始:使用Python创建GUI驱动的简易国际象棋游戏

第一部分&#xff1a;国际象棋的基础 1. 介绍 国际象棋&#xff0c;一个古老而又充满策略的游戏&#xff0c;历经数世纪的发展&#xff0c;至今仍然广受喜爱。那么&#xff0c;如何使用Python来创建一个简单的国际象棋游戏&#xff0c;并给它加上一个图形界面(GUI)呢? 这篇文…

Python图像处理初探:Pillow库的基础使用

图像处理在许多领域都有广泛的应用&#xff0c;包括计算机视觉&#xff0c;机器学习&#xff0c;人工智能&#xff0c;网页开发等。Pillow库是Python中最流行的图像处理库之一&#xff0c;它是PIL&#xff08;Python Imaging Library&#xff09;的一个分支&#xff0c;提供了丰…

高云FPGA系列教程(7):ARM GPIO外部中断

文章目录 [toc]GPIO中断简介FPGA配置常用函数MCU程序设计工程下载 本文是高云FPGA系列教程的第7篇文章。 本篇文章介绍片上ARM Cortex-M3硬核处理器GPIO外部的使用&#xff0c;演示按键中断方式来控制LED亮灭&#xff0c;基于TangNano 4K开发板。 参考文档&#xff1a;Gowin_E…

Android 下的usb框架及功能点

有关USB android框架的链接 http://blog.sina.com.cn/s/articlelist_1627432177_0_1.html ICS4.0下Framework层的usb框架 Android 下的usb主要工作还是在android的framework层。主要有以下几个文件&#xff1a; 1.1UsbDeviceManager.java/高 主要完成功能切换及状态的更新&a…

L1-027 出租

一、题目再现 下面是新浪微博上曾经很火的一张图&#xff1a; 一时间网上一片求救声&#xff0c;急问这个怎么破。其实这段代码很简单&#xff0c;index数组就是arr数组的下标&#xff0c;index[0]2 对应 arr[2]1&#xff0c;index[1]0 对应 arr[0]8&#xff0c;index[2]3 对应…

消息队列(五):虚拟主机设计

虚拟主机存在的意义 一个虚拟主机类似于 MySQL 的 database&#xff0c;把交换机&#xff0c;队列&#xff0c;绑定&#xff0c;消息....进⾏逻辑上的隔离&#xff0c;⼀个服务器可以有多 个虚拟主机&#xff0c;此处我们项⽬就设计了⼀个虚拟主机&#xff08;VirtualHost&…