ResNet精读笔记(1)

introduction部分提出了几个问题

1.构建一个好的网络 =? 把层堆起来吗

哈哈 跟堆汉堡一样 

ResNet精读笔记(1)_第1张图片

这里呢 我们都知道 当网络的层数变多之后 加深了 deep了 但是

就会带来 梯度消失或者爆炸的问题

这里 实在找不到好的图 

ResNet精读笔记(1)_第2张图片

本质上因为当层数多了之后 反向传播的计算里面是不是 有连乘啊 那就会导致 

要么算的很小 接近0 而接近0就意味着梯度消失 

要么就接近无穷大那就是梯度爆炸 而解决这问题,

1.初始化要做好一点

权重不要太大 也不要太小

2.中间加入BN层

可以使得校验每个层之间的那些输出和他的梯度的那些均值和方差

在深的网络是可以训练的(避免一些层特别大或是特别小)

我们发现使用这些trick就是可以收敛了

但是

面临第二个难点时,当我们的网络变深了,我们的性能变差了==精度变差

ResNet精读笔记(1)_第3张图片

20->50 变差 很明显(这里图中可以看出错误率变高了 很明显)

ResNet精读笔记(1)_第4张图片

但是这里并不是因为层数变深模型变复杂导致的过拟合

这是因为你的训练误差也变高了 (这里的训练误差和测试误差都很差)

overfitting的意思是 你的训练精度很高(训练误差变得很低 )但是你的测试精度低了(测试误差变得很高)中间有比较大的区别

也就是说我们发现啊 这个网络用了 BN 用了归一初始化确实work 让最后梯度下降收敛了

但是最后并没有得到一个好的结果 也就是对于最终的结果来说 不怎么有效啊

考虑一个架构浅一点的网络 和一个比较深的版本

注意:比较深的版本  在浅的网络加一些层

我们想一下 如果我们浅的架构很好的话 按道理 深的网络 不应该变差

因为深的架构加的层 都是学到的

(identity mapping)input x output 也是x

把一些权重学成简单的 n 分之一 使得我们的输入和输出 是一一对应的关系

理论上权重确实可以学成这个样子

但是

实际上 臣妾办不到  采用随机梯度下降 深的 层学到表较好的(浅的层学习表现好的层的复制)

而上面的那些层由于identity mapping  

整理一下 我们构建的深的网络 前20层是学的比较好的 后14层是identity mapping  

这样其实效果肯定会好(有这个最优解) 但是我们发现这个SGD(随机梯度下降)办不到,找不到一个最优解

所以 这篇文章 给出了一个解决方案 

identity mapping 不会变差 ——————deep residual learning 框架

ResNet精读笔记(1)_第5张图片

RPReplay_Final1673156538

输出 = 输出+输入

shortcut connection ——indentity mapping

1.不会增加任何你需要学习的参数,不会增加模型复杂度

2.加法也不会增加计算的复杂度

3.网络可以被训练

4.在caffe可以直接实现

解释了residual在干嘛

而追溯residual 在机器学习和统计里面比较多 线性模型最早的解法 靠residual 来迭代

那么残差连接如何处理你的输入和输出的形状是不同的情况

1.补0填充

2.投影(1*1的卷积在空间维度上不做任何的change,主要是可以改变channel的维度)

而高宽通常会变成原来的一半 所以给1*1卷积的步长设为2

实验部分

细节1:把短边随机的采样到256和480

随机放到比较大 有一个好处:当切割的时候,会增加随机性

RGB上做颜色增强 BN

没有全连接层 所以没有dropout

10-crop test image 

给一张图片 在里面随机的按照一定规则去采样10个图片在每个子图上做预测

最后将结果做平均

就到这吧,我要休息了,88

你可能感兴趣的:(深度学习,神经网络,计算机视觉,学习)