1.数据
数据预处理
数据集尽可能大
删除或填补所有具有损坏数据的训练样本
数据增强: 创建新样本
2. 适当的激活函数
通常使用Relu函数,
Sigmoid函数的缺陷:尾部饱和梯度消失
3. 网络结构
Resnet,通常选用默认结构,或进行微调
使用比最佳隐含单元数多的数量通常是安全的,因为正则化方法一定程度上都可以处理多余的单元
隐含层只需不断增加,直到性能不在提升。层数越多表达能力越强,但过多时容易过拟合。
4. 权重初始化
使用小随机数初始化权重,通常使用框架推荐设置,如Xavier, He。
5. 超参数微调
网格搜索,效率较低
靠经验调整
随机搜索
6. 优化方法
Adam通常使用默认值
Adam比SGD好调且收敛速度快,但SGD + momentum 通常效果更好
7. batchsize
batchsize 过大影响梯度下降的随机性,过小则随机性过大,收敛不稳定。
通常100左右,可以以一定倍数增加或者减少
使用batch normalization
8.可视化
使用tensorboard or tensorboardX 可视化训练过程,观察过拟合情况,选取最优模型。