Coursea吴恩达《卷积神经网络》课程笔记(2)深度卷积网络
经典的卷积神经网络架构
- LeNet-5
- AlexNet
- VGG
- ResNet
- Inception(Google Network)
残差网络
残差网络是由残差块组成
1 残差网络块
2 残差网络的优势
- 可以防止梯度消失和梯度爆炸
- 恒等映射增加了网络的性能,普通网络
3 残差网络表现好的原因
假设有个比较大的神经网络,输入为
假设网络中均使用Relu**函数,所以最后的输出
如果使用L2正则化或者权重衰减,会压缩W和b的值,如果W[l+2]=0同时b[l+2]=0,那么上式就变成:
所以从上面的结果我们可以看出,对于残差块来学习上面这个恒等函数是很容易的。所以在增加了残差块后更深的网络的性能也并不逊色于没有增加残差块简单的网络。所以尽管增加了网络的深度,但是并不会影响网络的性能。同时如果增加的网络结构能够学习到一些有用的信息,那么就会提升网络的性能。
4 残差网络举例
1 * 1的卷积
意义
- 增加非线性
- 可以很方便的控制管道的数量
- 减少计算量(在Inception中经常使用)
Inception 网络
意义
代替人工来确定卷积层中的过滤器类型,确定是否需要卷积层,或池化层。它是通过学习参数来进行选择的
Inception module
虽然Inception网络可以代替人工选择,但是计算量巨大。如何优化计算呢?
利用1*1卷积
- 使用前
- 使用后
计算量减少了10倍
数据增强
- Minoring
- Random Cropping
- Color Shifting
计算机视觉现状
Data Vs Hand engineering
- 当我们拥有少量的数据时,我们更多的是Hand engineering.来获取良好的表现
- 当我们拥有大量的数据时,我们可以设计一个巨大的网络,简单的架构,很少Hand engineering.便可以获得良好的表现
Two Source of Kownledge
- 标记的数据
- 人工特征,设计好的网络架构
Tips for doing well on benchmarks
Ensemble
- 独立的训练几个网络,取所有网络输出的平均值
- 在一个网络上运行测试图片的不同变形,平均输出结果
Use Open Source Code
- 使用公开发表论文中提到的网络架构
- 使用开源网络架构的实现
- 使用别人预先训练好的网络架构,然后在自己的数据集上微调