徐州网站开发公司,百度云搜索入口,做那个网站的图客比较好,网页设计素材书时间#xff1a;2015
网络中的亮点#xff1a;
超深的网络结构#xff08;突破1000层#xff09;提出residual模块使用Batch Normalization加速训练#xff08;丢弃dropout#xff09; 层数越深效果越好#xff1f; 是什么样的原因导致更深的网络导致的训练效果更差呢…时间2015
网络中的亮点
超深的网络结构突破1000层提出residual模块使用Batch Normalization加速训练丢弃dropout 层数越深效果越好 是什么样的原因导致更深的网络导致的训练效果更差呢
梯度消失和梯度爆炸
随着网络层数的不断加深梯度消失和梯度爆炸的现象会越来越明显
梯度消失假设每一层的误差梯度是一个小于1的数那么在我们反向传播过程中每向前传播一次都要乘以小于1的误差梯度。那么当我们网络越来越深的时候所乘的小于1的系数越多那么久越趋近于0这样梯度就会越来越小造成梯度消失现象。
梯度爆炸假设每一层的误差梯度是一个大于1的数那么在我们反向传播过程中每向前传播一次都要乘以大于1的误差梯度。那么当我们网络越来越深的时候所乘的大于1的系数越多这样梯度就会越来越大造成梯度爆炸现象。
退化问题
解决了梯度消失和梯度爆炸的问题后仍存在层数深的效果还是没有层数小的效果好。怎样解决呢在我们的resnet当中提出了一个叫做“残差”的结构。
梯度消失和梯度爆炸现象怎么解决呢
数据标准化处理权重初始化以及BN(Batch Normalization).
residual结构 shotcut捷径的意思。主分支和侧分支要相加两个的shape一定要相同。
Batch Normalization
参考链接Batch Normalization详解以及pytorch实验_pytorch batch normalization-CSDN博客
Bath Normalization的目的是使我们的一批Batchfeature map满足均值为0方差为1的分布规律。通过该方法能够加速网络的收敛并提升准确率。 如下图所示对于Conv1来说输入的就是满足某一分布的特征矩阵但对于Conv2而言输入的feature map就不一定满足某一分布规律了注意这里所说满足某一分布规律并不是指某一个feature map的数据要满足分布规律理论上是指整个训练样本集所对应feature map的数据要满足分布规律。而我们Batch Normalization的目的就是使我们的feature map满足均值为0方差为1的分布规律。 使用BN时需要注意的问题
1训练时要将traning参数设置为True在验证时将trainning参数设置为False。在pytorch中可通过创建模型的model.train()和model.eval()方法控制。因为在我们训练过程当中需要我们不断去统计均值和方差而在我们的验证或者预测过程当中使用的是我们历史统计的均值和方差而不是当前所计算的均值和方差。
2batch size尽可能设置大点设置小后表现可能很糟糕设置的越大求的均值和方差越接近整个训练集的均值和方差。值设置得越大越接近我们整个样本训练集的均值和方差效果也会越好。设置得很小的时候比如说它的极限状况也就是batch size设置为1这种情况使用BN是没有什么作用的效果可能还会变差。
3建议将bn层放在卷积层Conv和激活层例如Relu之间且卷积层不要使用偏置bias因为没有用参考下图推理即使使用了偏置bias求出的结果也是一样的。
迁移学习 使用迁移学习的优势
能够快速的训练处一个理想的结果当数据集较小时也能训练处理想的效果
什么是迁移学习 对于浅层的卷积层而言所学习到的角点信息和纹理信息等是比较通用的信息这些信息不仅是在本网络中适用在其他网络中也同样适用。所以就会有迁移的这么一个概念。就是将我们学习好的一些浅层网络的参数迁移到我们新的网络中去这样我们新的网络就也拥有了识别底层通用特征的能力了新的网络拥有了这些底层通用的检测识别能力之后我们就能更加快速地去学习新的数据集的高维特征。
常见的迁移学习方式 载入权重后训练所有参数 最后一层无法载入预训练模型参数载入权重后只训练最后几层参数 载入所有模型参数后固定全连接之前的所有模型参数只去训练最后三层全连接层这样我们所需训练的参数就会变少训练速度也会变快。载入权重后在原网络基础上再添加一层全连接层进训练最后一个全连接层。 由于我们训练集的分类个数和原预训练集的分类个数不一样所以最后一层是无法载入的。当我们使用第三个方法也可以将最后一层的参数载入进去只不过我们在最后的全连接层之后再加上新的全连接层这个新的全连接层的节点个数也就是我们所采用的训练集的分类个数然后仅仅去训练最后一层的参数。
自己的硬件条件有限或者训练时间有要求第二种第三种方法都适合。对于硬件参数不受限而且希望得到一个最优的结果那就要采用第一种方法这种方法相比于后面的两种方法训练时间稍微长一点但最终达到的效果也要比后两种方法的好。但相比不用迁移学习的方法还是要快很多的。