**- 更多优化算法
- 激活函数
- 网络初始化
- 批归一化
- 数据增强
- 更多调参技巧。。。。**
一。更多优化算法:
~~随机梯度下降:1。效果较好,时间较长,但受初始学习率影响很大 2。每个维度的学习率一样
~AdaGrad算法:调整学习率,,,,,,前期regularizer较小,放大梯度,后期减小梯度,梯度随训练次数增大而减小,每个分量有不同的学习率,,,,,,缺点:前期学习率设置太大,后期学习率太小。需要训练较深较复杂的网络且需要快速收敛时,使用Adam更合适。
~RMSProp算法:是Adagrad的变种,由累积平方梯度变为平均平方梯度,解决了后期学习不动的问题(学习率过小提前结束)
***注意:***对于稀疏矩阵,要使用学习率自适应方法。
Adam的收敛性好于AdaGrad和RMSProp.
激活函数
sigmoid:
1在输入非常大或非常小时,非常小
2.输出均值非0
Tanh:
依旧没有梯度,输出均值是0
Relu
不饱和(梯度不会过小)
收敛速度快
输出均值非0
在x的负轴的梯度为0,会有Dead-Relu
Leaky-Relu
在Relu的基础上,负轴用一个斜率小的正比例函数代替
Elu
在Relu基础上,负轴用指数代替
均值更接近0,但计算量会变大
Maxout
Relu的泛化版本。。。。
总结激活函数选择技巧
1.。。。。Relu-小心设置learning rate
2…不要使用sigmoid
3…使用后三种Relu的改进版
4.。。。可以试试Tanh,不要抱太大期望
网络初始化
如何分析初始化好坏
查看初始化后各层的激活值分布,如果分布特别集中不均匀,则初始化不好
1。全为0
只能适用于单层网络,不能用于多层
正态分布初始化
方差较小时会逐渐集中到0,方差较大会逐渐集中到1
**。
。
。
。
。
。
。。
**
批归一化
思想:使每层的激活分布比较统一,理解成正态分布变成标准正态
每个batch在每一层上都做归一化
另设两个参数来逆归一化
数据增强
归一化
图像变换:翻转拉伸剪裁变形
色彩变化对比度,亮度
多尺度裁剪缩放。。。
更多调参技巧
- 拿到更多的数据
- 给神经网络添加层次
- 紧跟最新进展,使用新方法
- 增大训练的迭代次数
- 尝试正则化
- 使用更多的GPU来加速训练
- 可视化工具检查中间状态:
。。。。。。 [损失 ]
。。。。。. [ 梯度]
。。。。. 【准确率]
。。。。。。. [学习率】 - 标准数据集上训练
- 在小数据集上进行训练
- 数据集分布平衡
- 使用预调整好的稳定模型结构
- Fine-tuning:使用预训练好的网络结构进行微调