2021-05-17

  1. List item

卷积神经网络:带有卷积结构的深度神经网络
结构分为:
1卷积层 提取图像特征
2下采样层 对图像进行采样 减少数据量的同时保留有用信息(不必在意具体位置)需要这个特征和其他特征的相对位置
3全连接层 采用softmax全连接,得到的激活值即卷积神经网络提取到图片特征

https://blog.csdn.net/lz_peter/article/details/84574716?utm_source=app&app_version=4.7.1&code=app_1562916241&uLinkId=usr1mkqgl919blen
激活函数:在深度神经网络中,上层结点输出和下层结点的输入之间,引入非线性函数
在这里插入图片描述

为什么要引入激活函数呢?
因为线性函数是无界的。
对于线性函数来说,你的定义域是很大,其值域也很广——其绝对值会大于1。
在人工神经网络中,我们需要的激活函数的值域的绝对值往往应该局限在0到1之间。为什么?
比如我们要判断一个图片中有没有猫,有猫输出1,没猫输出0。因此,我们不需要激活函数输出一个8或者123这样的大数字,所以我们不能使用线性激活函数。因为线性激活函数是很容易突破绝对值小于等于1的这个限制的。
那么,你想想,有什么函数的值域的绝对值是小于等于1的呢?最简单的能想到的就是三角函数,比如sin 或者cos函数,但这两个函数具有周期性,没有单调性,也不太好。所以,最后人工智能专家用的激活函数一般是sigmoid、tanh函数。这两个函数都是有界的,而且是单调函数,用起来很舒服。当然你可以选择别的非线性激活函数的。
在多层神经网络中,上层节点的输出和下层节点的输入之间具有一个函数关系,这个函数称为激活函数(又称激励函数)。

卷积核:卷积可以看做一种数学运算,提取图像特征,借鉴了加权求和的特点
本质是找出图片中和自己相似的部分

残差网:

与普通网络相比的特征是层数越高,效果越好
学习的目标:目标值H(x)和输入x的差值,即F(x):=H(x)-x,将残差逼近于0,使得随着网络加深,准确率不下降。
图像是层次非常深的数据,所以要层次深的网络来进行特征提取,网络深度是很有意义的。

一般的卷积神经网络,输入图像x,输出卷积后的特征F(x),一次性抽出所有的信息,梯度消失会出现,Res网络就说只学习残差即可。

第一条直接向下传递的网络:试图从x中直接学习残差F(x)
第二条捷径网络:输入x
整合:将残差和x相加,即H(x)=F(x)+x,也就是所要求的映射H(x)

好处:只有一条通路的反向传播,会做连乘导致梯度消失,但现在有两条路,会变成求和的形式,避免梯度消失。后面的层可以看见输入,不至于因为信息损失而失去学习能力。

如果连乘的方式会造成梯度消失的话,那么连加。传统的网络每次学习会学习x->f(x)的完整映射,那么ResNet只学习残差的映射,

随着网络的加深,出现了训练集准确率下降的现象,但是我们又可以确定这不是由过拟合造成的,因为过拟合的情况下,训练集应该准确率很高,所以作者针对这个问题提出了一种全新的网络,称为深度残差网络,它能够允许网络尽可能的假设,其中引入了一种全新的结构:

在这里插入图片描述

残差指什么:

ResNet提出了两种mapping:

其一:identity mapping,指的“本身的线”,也就是公式中的x xx,就是图中弯曲的曲线;

其二:residual mapping,指的是“差”,也就是y − x y-xy−x,所以残差指的是F ( x ) 部 分 F(x)部分F(x)部分,也就是除过identity mapping之外的其余的线;

所以最后的输出为,y = F ( x ) + x y=F(x)+xy=F(x)+x

为什么ResNet可以解决随着网络加深,准确率不下降的问题?

理论上,对于“随着网络加深,准确率下降”的问题,Resnet提供了两种选择方式,也就是identity mapping和residual mapping,如果网络已经到达最优,继续加深网络,residual mapping将被push为0,只剩下identity mapping,这样理论上网络一直处于最优状态了,网络的性能也就不会随着深度增加而降低了。
传统的神经网络都是以层叠卷积层的方式提高网络深度,从而提高识别精度,但层叠过多的卷积层会出现一个问题,就是梯度消失,使得反向传播的过程中无法有效的将梯度更新到前面的网络层,导致前面的层的参数无法更新。

而BN和ResNet的skip connection就是为了解决这个问题,BN通过规范化输入数据,改变数据的分布,在前向传播的过程中,防止梯度消失的问题,而skip connection则能在后传过程中更好地把梯度传到更浅的层次中。

问题:为什么加了一个捷径就可以把梯度传到浅层网络?

这和神经网络参数更新的过程密切相关,cs231n 2016视频有很好的讲解。

前向传播:

首先x与w1相乘,得到1;1与w2相乘,得到0.1,以此类推,如下面的gif图绿色数字表示
在这里插入图片描述

反向传播:

假设从下一层网络传回来的梯度为1(最右边的数字),后向传播的梯度数值如下面gif图红色数字表示:

那么这里可以看到,本来从上一层传过来的梯度为1,经过这个block之后,得到的梯度已经变成了0.0001和0.01,也就是说,梯度流过一个blcok之后,就已经下降了几个量级,传到前一层的梯度将会变得很小!

当权重很小的时候,前向传播之后到输出层的参数值会非常小,反向传播时依然要和小的权重值相乘,参数值只会越来越小,数量级下降的非常快。

这就是梯度弥散。假如模型的层数越深,这种梯度弥散的情况就更加严重,导致浅层部分的网络权重参数得不到很好的训练,这就是为什么在Resnet出现之前,CNN网络都不超过二十几层的原因。
假如,我们在这个block的旁边加了一条“捷径”(如图5橙色箭头),也就是常说的“skip connection”。假设左边的上一层输入为x,虚线框的输出为f(x),上下两条路线输出的激活值相加为h(x),即h(x) = F(x) + x,得出的h(x)再输入到下一层。

当进行后向传播时,右边来自深层网络传回来的梯度为1,经过一个加法门,橙色方向的梯度为dh(x)/dF(x)=1,蓝色方向的梯度也为1。这样,经过梯度传播后,现在传到前一层的梯度就变成了[1, 0.0001, 0.01],多了一个“1”!正是由于多了这条捷径,来自深层的梯度能直接畅通无阻地通过,去到上一层,使得浅层的网络层参数等到有效的训练!

损失函数:
在进行神经网络学习时,以损失函数的值作为指标,当我们关注神经网络的中的某一个权重参数时,就对权重参数的损失函数进行求导,如果导数的值为负,通过使该权重参数向正方向改变,可以减小损失函数的值;反过来,如果导数的值为正,则通过使该权重参数向负方向改变,可以减小损失函数的值。不过,当导数的值为0时,无论权重参数向哪个方向变化,损失函数的值都不会改变,此时该权重参数的更新会停在此处。
范德华项:
气体状态方程
势函数:又称调和函数,特点是单调递增或递减
数据的输入:
训练集:
测试集:
PDB

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值