小学生都能看懂的残差网络

无乎648 无乎648     2022-12-26     514

关键词:

ResNet残差网络

本文适用于初次接触残差网络的小白,只是为了对残差网络有着更好的入门的一篇文章。

问题提出:

所谓深度学习,大部分人都会认为准确率会随着卷积层的增加而增加,但是随着技术的增加,有人开始尝试着用一个56层的卷积来代替20层的卷积,但是实验结果缺发现56层的卷积准确率还要低于20层的卷积,这样的实验结果让人们感到很不解,为什么层数的增加反正还会导致准确率降低呢?
后来通过对深层的卷积研究发现,导致的原因有可能深层的卷积导致了数据过拟合的现象和梯度下降的后果,由于梯度下降导致有些卷积层的参数完全没有任何意义,那么这样的卷积就算是一个随机卷积层了,这样的卷积层效果肯定是很差的。

解决办法

后来有人提出了两种解决办法:
一种是调整求解方法,比如更好的初始化、更好的梯度下降算法等;
另一种是调整模型结构,让模型更易于优化——改变模型结构实际上是改变了error surface的形态。
那么ResNet的作者采用了第二种解决办法,尝试通过改变模型的结构来解决梯度下降的办法,那么为了让更深层的卷积可以有着更好的效果,提出了下图的设计

上图按照标准话语来称作残差模块,也就是ResNet的核心技术,
将堆叠的几层layer称之为一个block,对于某个block,其可以拟合的函数为F(x),如果期望的潜在映射为H(x),与其让F(x) 直接学习潜在的映射,不如去学习残差H(x)−x,即F(x):=H(x)−x,这样原本的前向路径上就变成了F(x)+x,用F(x)+x来拟合H(x)。作者认为这样可能更易于优化,因为相比于让F(x)学习成恒等映射,让F(x)学习成0要更加容易——后者通过L2正则就可以轻松实现。这样,对于冗余的block,只需F(x)→0就可以得到恒等映射,性能不减。
按照大白话来说的意思就是,一起每次输入的特征图都是单纯的来着上一次的输出的特征图,之所以梯度下降或爆炸都是因为卷积层都是两两相关,就像是传话一样,第一个人告诉第二个人,之后第二个人理解一下再告诉第三个人,以此类推,直到传到最后一个人的时候,可能跟最初的原话已经大相径庭了,所以ResNet建立另一人传话模式,就是在第二个人告诉第三个人之后,第一个人再告诉一遍第三个人,这样第三个人就收到了第一个人和第二个人两个人的理解的意思了,这样就可以保证最差的效果也是可以知道原话的意思,而且还可以根据前一个人的理解加深理解。

残差网络的作用

残差网络起作用的主要原因就是这些残差块学习恒等函数非常容易,能够保证网络的性能不会收到影响,很多时候甚至可以提高效率,或者说至少不会降低网络效率,因此创建类似残差网络可以提升网络性能。一般卷积神经网络的结构都是几个卷积层后面跟一个池化层,在网络的最后还有一个或多个全连接层。
这是因为残差网络的每一层输入是上一层和以前的层,这样就保证了再差也是跟以前层一样的,就是上述说的“传话”一样,即使这个人再做的不好,他也可以重复以前层的数据,这样就不会出现偏差了,再深的神经网络都可以实现了,由此看来残差网络其实对深度神经网络有着很大的影响。

上图左是在没有残差网络之前的错误率会随着层数的增加先减小后增加,图右是有了残差网络之后的错误率会随着层数的增加一直减少。
为了加深理解,我们来看一下下面这张图

可以把原图理解为最初输入特征图,细节是经过卷积处理后逇特征图,这两者通过矩阵相加,就得到了锐化后的特征图,但是如果把细节这张图变成一张全黑的图,也就是没有任何数据,这两者通过矩阵相加,得到的锐化的图其实还是更原图是一个效果,但是这样图并不会因为这个操作而变成还不如原图,这也就是残差网络的最差的一个情况。

结语

通过短短的一篇文章就可以大概对残差网络的概念有了一定的理解,但是这些只是残差的一些概念而已,毕竟像残差网络这么大的成就不可能几句话就讲完,如要是真正学习卷积神经网络的学者们,还是去看一些残差网络的论文或者大佬写的详细教程最为好。

小学生都能看懂的fft!!!

小学生都能看懂的FFT!!!前言在创新实践重心偷偷看了一天FFT资料后,我终于看懂了一点。为了给大家提供一份简单易懂的学习资料,同时也方便自己以后复习,我决定动手写这份学习笔记。食用指南:本篇受众:如标题所示... 查看详情

节:1-1.2|神经网络输入输出连小学生都能看懂的深度学习基础总结(代码片段)

💁这应该是本站最好的人工智能资料库👋本文由EasyAI原创,首发于CSDN🙉⌚️欢迎点赞👍收藏⭐留言📝如有错误敬请指正!😎未来很长,值得我们全力奔赴更美好的生活✋本章内容图像是如... 查看详情

《小学生都能看懂的群论从入门到升天教程》《群论全家桶》

...!!!实际上是一个全新的精炼模板整合计划小学生都能看懂系列,小学生:我太难了  群论、置换、Bunrnside引理、Pόlya定理等概念是群论的内容,也是《组合数学》第十四章Pόlya计数的内容(一般... 查看详情

干货|十分钟带你从入门到进阶python爬虫,小学生都能看懂的教程,零基础学习宝典(代码片段)

我们正处在一个万物互联的网络时代,早在2021年,全球网络用户数就已达到了惊人的46亿。人们在网络世界里的行为会产生大量数据,而这些数据对于各类商业公司来说,有着极大的商业价值,基数越大,... 查看详情

人人都能看懂的lstm

点击上方“迈微AI研习社”,选择“星标★”公众号重磅干货,第一时间送达大家好,我是Charmve。熟悉深度学习的朋友知道,LSTM是一种RNN模型,可以方便地处理时间序列数据,在NLP等领域有广泛应用。在看了台大李宏毅教授的... 查看详情

小白都能看懂的linux系统下安装配置zabbix

实验环境:操作系统:Centos7.6服务器ip:192.168.10.100运行用户:root网络环境:InternetZabbix是一个基于web界面的提供分布式系统监控及网络功能的企业级的开源监控工具,做为一个企业运维人员来说,zabbix可以给企业和运维人员带来... 查看详情

小白都能看得懂的教程一本教你如何在前端实现富文本编辑器(代码片段)

小白都能看得懂的教程一本教你如何在前端实现富文本编辑器博主博客文章内容导航(实时更新)更多优质文章推荐:收藏!最详细的Python全栈开发指南看完这篇你还不会Python全栈开发你来打我!!!一本教你如何在... 查看详情

小白都能看懂的实战教程手把手教你pythonweb全栈开发(day4)(代码片段)

...家好,我叫亓官劼(qíguānjié),这个《小白都能看懂的实战教程手把手教你PythonWeb全栈开发》是一个零基础的实战教程,手把手带你开发一套系统,带你了解Pythonweb全栈开发,目前正在连续更新中,如... 查看详情

小白都能看懂的redis讲解--针对单个键操作集锦

1重命名键renamekeynewname可以对键重命名,下面的例子我们创建了一个key为name,value为luke的键值对。然后将name重命名为user,之后查询name就返回nil,而user是可以查到值的。127.0.0.1:6379>setnamelukeOK127.0.0.1:6379>getname"luke"127.0.0.1:6379&... 查看详情

大白话聊聊微服务——人人都能看懂的演进过程

...的逻辑,才是有意义的分享。所以接下来我会尝试用大家都能理解的语言来聊一聊”微服务“。【写在前面】那么,什么是微服务呢?你不一定知道微服务,但是你一定知道麦某劳,而且知道麦某劳有个甜品站。你可能会问,甜... 查看详情

猴子都能看懂的androidmenu总结(代码片段)

简单谈谈Androidmenu菜单的使用,帮助入门的同学。menu主要分类:选项菜单:最常规的菜单子菜单:多层菜单的实现方案之一上下文菜单:android中长按视图控件后出现的菜单选项菜单(OptionMenu)该菜单默认在右上... 查看详情

小白都能看懂的关于mixins机制的理解(代码片段)

前言​在学习Flutter源码的时候,看到各种复杂的mixin和on,为了便于后续Flutter的学习,这里有必要一起来份详细Dart的Mixin机制。什么是mixins首先看看官方文档的定义:Mixinsareawayofreusingaclass’scodeinmultipleclasshierarchie... 查看详情

小白都能看懂的关于mixins机制的理解(代码片段)

前言​在学习Flutter源码的时候,看到各种复杂的mixin和on,为了便于后续Flutter的学习,这里有必要一起来份详细Dart的Mixin机制。什么是mixins首先看看官方文档的定义:Mixinsareawayofreusingaclass’scodeinmultipleclasshierarchie... 查看详情

零基础都能看懂的stlmap详解(代码片段)

🎈作者:Linux猿🎈简介:CSDN博客专家🏆,C/C++、面试、刷题、算法尽管咨询我,关注我,有问题私聊!🎈关注专栏:C/C++面试通关集锦 (优质好文持续更新中……)... 查看详情

小白都能看懂的实战教程手把手教你pythonweb全栈开发(day2)(代码片段)

小白都能看懂的实战教程手把手教你PythonWeb全栈开发Flask(PythonWeb)实战系列之在线论坛系统第二讲这是小白都能看懂的实战教程手把手教你PythonWeb全栈开发的第二讲,如果文中有基础知识不太熟悉的话,可以看博主前几期... 查看详情

[图解]小白都能看懂的fasterr-cnn–原理和实现细节(代码片段)

Contents [hide]1 论文原文2 介绍3 Anchors3.1 如何确定一个anchor是正样本还是负样本?4 实现细节5 调试信息6 参考资料论文原文FasterR-CNN:TowardsReal-TimeObjectDetectionwithRegionProposalNetworks介绍  FasterRCNN由RossB.Girshick在2016年提出ÿ 查看详情

图解连狗子都能看懂的python基础总结什么是库包模块?(代码片段)

【图解】连狗子都能看懂的Python基础总结!(二)什么是库、包、模块?本章内容什么是模块?什么是包?什么是库?什么是标准库和第三方库?上次,我们解释了“变量”、“数组”、“函数... 查看详情

图解连狗子都能看懂的python基础总结什么是库包模块?(代码片段)

【图解】连狗子都能看懂的Python基础总结!(二)什么是库、包、模块?本章内容什么是模块?什么是包?什么是库?什么是标准库和第三方库?上次,我们解释了“变量”、“数组”、“函数... 查看详情