C. 深度学习 — 基础组件概述(二)
Dropout
- Dropout简介
- Dropout出现的原因
- Dropout可以比较有效的缓解过拟合的发生,在一定程度上达到正则化的效果
- 什么是Dropout
- 我们在前向传播的时候,让某个神经元的激活值以一定的概率p停止工作,这样可以使模型泛化性更强,因为它不会太依赖某些局部的特征
- Dropout出现的原因
- Dropout工作流程及使用
- Dropout具体工作流程
- 首先随机(临时)删掉网络中一半的隐藏神经元,输入输出神经元保持不变
- 然后把输入x通过修改后的网络前向传播,然后把得到的损失结果通过修改的网络反向传播。一小批训练样本执行完这个过程后,在没有被删除的神经元上按照随机梯度下降法更新对应的参数(w,b)
- 然后继续重复这一过程:
- 恢复被删掉的神经元(此时被删除的神经元保持原样,而没有被删除的神经元已经有所更新)
- 从隐藏层神经元中随机选择一个一半大小的子集临时删除掉(备份被删除神经元的参数)。
- 对一小批训练样本,先前向传播然后反向传播损失并根据随机梯度下降法更新参数(w,b) (没有被删除的那一部分参数得到更新,删除的神经元参数保持被删除前的结果)。
- Dropout在神经网络中的使用
- 取平均的作用
- 减少神经元之间复杂的共适应关系
- Dropout类似于性别在生物进化中的角色
- Dropout具体工作流程
- 为什么说Dropout可以解决过拟合
- Dropout:train 和 test 用的weight不一样
- Train
- 每次train,网络结构不一样
- performance 会变差
- Test
- 不用Dropout
- Weight = weight * (1 - p)%
- 线性激活函数,效果会更好一些,比如说:ReLU,Maxout
- Train
- Dropout:train 和 test 用的weight不一样
池化层
- 目的
- 出现的原因:图像深度学习中图像尺寸过大,引入池化以减少参数矩阵的尺寸,从而减少最后全连层中的参数数量——根本目的为了防止过拟合
- 在图像识别领域,池化还能提供平移和旋转不变性。若对某个区域做了池化,即使图像平移/旋转几个像素,得到的输出值也基本一样,因为每次最大值运算得到的结果总是一样的。
- 常出现的场合:卷积层后一般会跟上一个池化层
- 实际上是一种降采样的方式
- 种类
- 最大池化
- 平均池化
- 全局最大池化
- 全局平均池化
- 形态
- 1D 用于一维数据
- 2D 一般用于二维图像数据
- 3D 带时间序列数据的图像数据
- 参数
残差连接
- 问题
- 梯度消失问题
- 我们发现很深的网络层,由于参数初始化一般更靠近0,这样在训练的过程中更新浅层网络的参数时,很容易随着网络的深入而导致梯度消失,浅层的参数无法更新。
- 网络退化问题
- 随着网络深度增加,模型会产生退化现象。它不是由过拟合产生的,而是由冗余的网络层学习了不是恒等映射的参数造成的
- 梯度消失问题
- 核心思想
- ResNet的思想是假设我们涉及一个网络层,存在最优化的网络层次,那么往往我们设计的深层次网络是有很多网络层为冗余层的。那么我们希望这些冗余层能够完成恒等映射,保证经过该恒等层的输入和输出完全相同。具体哪些层是恒等层,这个会有网络训练的时候自己判断出来。
- 残差网络
- ResNet的方法是加上所有跳跃连接,每两层增加一个捷径,构成一个残差块。