七0月在1线 深度学习特训营 第三课时
课程内容
神经网络与卷积神经网络
CNN层级结构
- 保持了层级网络结构
- 不同层次有不同形式(运算)与功能
CNN主要层级
- 数据输入层/ Input layer
- 卷积计算层/ CONV layer
- 激励层 / Activation layer
- 池化层 / Pooling layer
- 全连接层 / FC layer
- Batch Normalization层(可能有)
数据输入层/ Input layer
有3种常见的数据处理方式:
- 去均值
- 把输入数据各个维度都中心化到0
- 归一化
- 幅度归一化到同样的范围
- PCA/白化
- 用PCA降维
- 白化是对数据每个特征轴上的幅度归一化
去均值与归一化
去相关与白化
卷积计算层/ CONV layer
- 局部关联。每个神经元看做一个filter。
- 窗口(receptive field)滑动,filter对局部数据计算
- 涉及概念:
- 深度/depth
- 步长/stride
- 填充值/zero-padding
- 参数共享机制
假设每个神经元连接数据窗的权重是固定的 - 固定每个神经元连接权重,可以看做模板
每个神经元只关注一个特性 - 需要估算的权重个数减少: 一层 1亿 => 3.5w
- 一组固定的权重和不同窗口内数据做内积: 卷积
激励层
把卷积层输出结果做非线性映射
把卷积层输出结果做非线性映射
- Sigmoid
- Tanh(双曲正切)
- ReLU
- Leaky ReLU
- ELU
- Maxout
NOTICE
① CNN慎用sigmoid!慎用sigmoid!慎用sigmoid!
② 首先试RELU,因为快,但要小心点
③ 如果2失效,请用Leaky ReLU或者Maxout
④ 某些情况下tanh倒是有不错的结果,但是很少
池化层/ Pooling layer
- 夹在连续的卷积层中间
- 压缩数据和参数的量,减小过拟合
全连接层 / FC layer
- 两层之间所有神经元都有权重连接
- 通常全连接层在卷积神经网络尾部
训练算法
- 同一般机器学习算法,先定义Loss function,衡
量和实际结果之间差距。 - 找到最小化损失函数的W和b,CNN中用的算法是SGD。
- SGD需要计算W和b的偏导
- BP算法就是计算偏导用的。
- BP算法的核心是求导链式法则。
优缺点
- 优点
- 共享卷积核,优化计算量
- 无需手动选取特征,训练好权重,即得特征
- 深层次的网络抽取图像信息丰富,表达效果好
- 缺点
- 需要调参,需要大样本量,GPU等硬件依赖
- 物理含义不明确
正则化与Dropout
- 神经⽹络学习能⼒强可能会过拟合。
- Dropout(随机失活)正则化:不是⼀次开启所有学习单元
Dropout理解
- 防⽌过拟合的第1种理解⽅式
- 别让你的神经⽹络记住那么多东西(虽然CNN记忆⼒好)
- 学习的过程中,保持泛化能⼒
- 防⽌过拟合的第2种理解⽅式:
- 每次都关掉⼀部分感知器,得到⼀个新模型,最后做融合。
不⾄于听⼀家所⾔。
典型结构与训练
典型CNN
- LeNet,这是最早用于数字识别的CNN
- AlexNet,2012 ILSVRC比赛远超第2名的CNN,比
LeNet更深,用多层小卷积层叠加替换单大卷积层。 - ZF Net,2013 ILSVRC比赛冠军
- GoogLeNet,2014 ILSVRC比赛冠军
- VGGNet,2014 ILSVRC比赛中的模型,图像识别略
差于GoogLeNet,但是在很多图像转化学习问题(比 如object detection)上效果很好 - ResNet,2015ILSVRC比赛冠军,结构修正(残差学
习)以适应深层次CNN训练
我的收获
- 学到了DNN与CNN的主要区别,以及对CNN卷积神经网络有了更深入的理解
- 寒老师讲的很通俗易懂,用易懂的语言介绍了CNN各层的功能。
- 学习了正则化和Dropout及其训练算法,从不同角度解释了Dropout的功能。
- 学习了几种典型的CNN算法。
需要进一步补充的知识
- 还需要增强实战经验
- 进一步学习正则化与Dropout更深入的知识
- 更加充分地理解CNN算法
- 补充一些跟矩阵有关的知识