1. 实例学习
2.经典神经网络
LeNet - 5
AlexNet
VGG-16
3. 残差网络(Residual Networks, ResNets)
残差块:
short cut/skip connection
原来的传播是a->liner->ReLu->liner->ReLu->a[l+2]
残差块做的事是把a直接约过几个层,传播到ReLu之前,让a[l+2]在ReLu计算时包含了这一部分的a(如图)
将一个普通的神经网络变成残差网络就是不断地约过某些层传播参数,可以大大神经网络的深度,也不会让training error增长
4. 为什么ResNet工作的好
即使w[l+2]不断被缩小(假设变为0,b同理),最后a[l+2]=a[l],不会变得更差。而如果不为0(学到一些“东西”),表现会比a[l]好。所以short cut不会降低准确率。
普通网络变成ResNet的结构,重点是保持维度不变,即使有池化层改变了输入输出的维度,也可以用w参数调整回“same”
5. Network in Network(NiN) and 1 * 1 convolutions
可以压缩或者增加filter的数量:
6. Inception Network 模块
基本思想:不需要人工选择需要不需要池化,采用怎样的过滤器,可以全都做了然后连接起来,让网络自己学习用什么。
问题:计算代价
为了减小计算代价,常用NiN来构造瓶颈层:
7. Inception Network
中间的softmax层可以有效防止过拟合
为什么叫inception:
8. 使用开源方法实现方案
主要展示了如何使用GitHub上的开源项目(以ResNet为例)
找到项目、下载、开始自己的项目(迁移学习)
9. 迁移学习
用已经训练好的参数进行自己的实验
比较小的数据集:冻结前面的层,写最后的softmax层
比较大的数据集:少冻结前面的层,最后几层的权重自己训练(越多的数据需要冻结的层越少)
10. 数据增强
数据不够的情况下使用
1)垂直镜像对称(mirroring)
2)随机修剪(random cropping)
3)颜色转换(color shifting):改变了色调
高级:PCA 颜色增强
也可以用旋转等,但是在实践中由于太过复杂使用的很少
如果数据量比较大: