当前位置: 首页 > article >正文

sheng的学习笔记-AI-残差网络-Residual Networks (ResNets)

目录:sheng的学习笔记-AI目录-CSDN博客

非常非常深的神经网络,网络发生了退化(degradation)的现象:随着网络层数的增多,训练集loss逐渐下降,然后趋于饱和,当你再增加网络深度的话,训练集loss反而会增大。注意这并不是过拟合,因为在过拟合中训练loss是一直减小的。

 

网络退化:在增加网络层数的过程中,training accuracy (精度)逐渐趋于饱和,继续增加层数,training accuracy 就会出现下降的现象,而这种下降不是由过拟合造成的。实际上较深模型后面添加的不是恒等映射,而是一些非线性层。

退化问题的实质:通过多个非线性层来近似恒等映射可能是困难的(恒等映射亦称恒等函数:是一种重要的映射,对任何元素,象与原象相同的映射)。神经网络在反向传播过程中要不断传播梯度,而当层数加深,梯度在传播过程中逐渐消失【而梯度消失则是导致网络退化的一个重要因素】,导致无法对前面网络的权重进行有效调整(这里大家可以想一下一条很长的绳子从头抖一下,有时候是不能影响末端的。

跳跃连接(Skip connection),它可以从某一层网络层获取激活,然后迅速反馈给另外一层,甚至是神经网络的更深层。我们可以利用跳跃连接构建能够训练深度网络的ResNets,有时深度能够超过100层

残差网络

残差块

 

 深层网络

普通的深层网络

把它变成ResNet的方法是加上所有跳跃连接,每两层增加一个捷径,构成一个残差块。如图所示,5个残差块连接在一起构成一个残差网络 

如果我们使用标准优化算法训练一个普通网络,比如说梯度下降法,或者其它热门的优化算法。如果没有残差,没有这些捷径或者跳跃连接,凭经验你会发现随着网络深度的加深,训练错误会先减少,然后增多。而理论上,随着网络深度的加深,应该训练得越来越好才对。也就是说,理论上网络深度越深越好。但实际上,如果没有残差网络,对于一个普通网络来说,深度越深意味着用优化算法越难训练。实际上,随着网络深度的加深,训练错误会越来越多。

但有了ResNets就不一样了,即使网络再深,训练的表现却不错,比如说训练误差减少,就算是训练深达100层的网络也不例外。有人甚至在1000多层的神经网络中做过实验,尽管目前我还没有看到太多实际应用。但是对x的激活,或者这些中间的激活能够到达网络的更深层。这种方式确实有助于解决梯度消失和梯度爆炸问题,让我们在训练更深网络的同时,又能保证良好的性能。也许从另外一个角度来看,随着网络越来深,网络连接会变得臃肿,但是ResNet确实在训练深度网络方面非常有效

残差网络为什么有效

 

 

因为a[l+2]等于a[l],是将浅层次的a的特征,损耗较少的传递到深层次上,从而减少了退化的程度 

 网络转化为残差网络

普通网络:

 

 

 

参考文章:

深度学习——残差网络(ResNet)-CSDN博客

详解残差网络 - 知乎

GoogLeNet, Maxout and NIN - 知乎 


http://www.kler.cn/a/273362.html

相关文章:

  • CAN总线学习笔记(1、CAN总线定义)
  • HTTP 405 Method Not Allowed:解析与解决
  • 解决 ClickHouse 高可用集群中 VRID 冲突问题:基于 chproxy 和 keepalived 的实践分析
  • AI打造超写实虚拟人物:是科技奇迹还是伦理挑战?
  • solidity selfdestruct合约销毁
  • #【YashanDB认证】#YCA的学习过程总结-之崖山数据库初体验
  • 【C++初阶】第七站:string类的初识(万字详解、细节拉满)
  • 最新Java面试题2【2024初级】
  • 【LAMMPS学习】二、LAMMPS安装(2)MacOS和Win安装
  • 如何通过ETL做数据转换
  • 铝壳电阻的工艺结构原理及选型参数总结
  • 【排序】快速排序
  • 2024.3.18-408学习笔记-C-结构体
  • npm和pnpm安装、更换镜像源
  • 转录因子/组蛋白修饰靶基因数据库:Cistrome DB使用教程
  • huawei 华为交换机 配置手工模式链路聚合示例
  • 精准核酸检测(100用例)C卷(JavaPythonC++Node.jsC语言)
  • 深入理解与使用go之配置--实现
  • 京津冀自动驾驶产业盛会“2024北京国际自动驾驶技术展览会”
  • 前端结合 react axios 获取真实下载、上传进度
  • NFS性能优化参考 —— 筑梦之路
  • Unity中实现游戏对象逐渐放大的脚本教程
  • FreeRTOS入门基础
  • 【数据结构和算法初阶(C语言)】二叉树的顺序结构--堆的实现/堆排序/topk问题详解---二叉树学习日记②
  • GEE:为什么在机器学习分类或回归时,提取特征变量后的样本点下载到本地时,数据为空且缺少坐标?
  • AR/MR产品设计(二):如何用一双手完成与虚拟对象的自然交互