训练神经网络

对当前输入的感受野,只与滤波器的大小有关,与padding和stride无关,
对网络输入的感受野:r0=∑l=1L((kl−1)∏i=1l−1si)+1r_0=\sum_{l=1}^L((k_l-1)\prod_{i=1}^{l-1}s_i)+1r0=l=1L((kl1)i=1l1si)+1

激活函数

ReLU:max(0,x):

  1. 在正数区域,梯度不会消失
  2. 计算效率非常高
  3. 收敛速度很快

问题:

  1. 输出不是以0为中心
  2. 负数区域梯度为0(神经元“死掉”)

Leaky ReLU:
y={x,x>00.01x,x≤0y=\begin{cases}x,x>0\\ 0.01 x,x\leq 0\end{cases}y={x,x>00.01x,x0
任何时候梯度都不会为0(神经元不会“死掉”)

输出以0为中心的好处:模型训练收敛更快

使用建议:使用ReLU,可以尝试Leaky ReLU,尽量避免使用sigmoid/tanh

数据预处理:

X′=X−μσX'=\frac{X-\mu}{\sigma}X=σXμ,μ\muμ是训练集的均值,σ\sigmaσ是训练集的标准差,X′X'X是归一化后的数据

将权重全部设置为一个常量的话:不管进行多少轮正向传播以及反向传播,每俩层之间的参数都是一样的。换句话说,本来我们希望不同的结点学习到不同的参数,但是由于参数相同以及输出值都一样,不同的结点根本无法学到不同的特征!!!这样就失去了网络学习特征的意义。

dropout

在模型训练的每次前向传播计算中,将一些神经元随即设置为0,让网络学习冗余表示,防止特征的协同适应

Stochastic Depth

随机网络深度
训练时:随机跳过某些层
测试时:使用所有层

数据增强

水平翻转、锐化、随即裁剪和缩放、颜色扰动

超参数选择:

  1. 检查初始损失(关闭权重衰减)
  2. 过拟合少量样本
  3. 选择合适的lr
  4. 粗调1-5epochs
  5. 细调10-20epochs
  6. 检查损失和准确率曲线
  7. 如果第六步出现问题,返回第五步
Logo

一站式 AI 云服务平台

更多推荐