深度学习模型性能及网络调参

深度学习有很多的参数需要优化,调整训练数据或是问题的抽象定义方法可能会带来巨大的效果改善,甚至是显著的改善。

1、提升模型容量

要想提升模型容量,可以向深度网络逐渐添加层和节点,更深的层会输出更复杂的模型数据。调参过程更重实践而非理论,所以逐渐添加层和节点,可以与模型过拟合,而后面可以用正则化方式再将其调低。

2、模型与数据集设计变化

我们应该在激活函数之前密切监控激活直方图,如果它们的规模差别很大,不以零为中心或非正态分布时,那么梯度下降将会无效,使用归一化。如果深度网络有大量无效节点,那么我们应该进一步追踪该问题。它可能是由bug、权重初始化或梯度消失导致的。如果都不是,则试验一些高级ReLU函数。

3、数据集收集与清洗

如果要构建自己的数据集,最好就是仔细研究如何收集样本,找最优质的资源,过滤掉与问题无关的所有数据,分析误差。可以添加卷积层和小型滤波器来改变模型,亦可以精细化项目范围,缩小样本范围。

4、数据增强

对于图片来说,我们可以使用数据增强方法如旋转、随机剪裁、移位等方式来对已有数据进行修改,生成更多的数据,以便后续收集有标签的数据做为训练样本。

5、半监督学习

可以使用无标注数据补充训练数据,使用模型分类数据,把具备高置信预测的样本添加到具备对应标签预测的训练数据集中。

6、调整参数

① 学习率调整
② 超参数调整
③ 稀疏度
④ 激活函数
⑤ 高级调参

7、网格搜索

一些超参数是高度相关的。我们应该使用对数尺度上的可能性网格一起调整它们。网格搜索的计算量很大,对于较小的项目,它们会被零星使用。开始用较少的迭代来调整粗粒度参数,在后期的细调阶段,我们会使用更长的迭代,并将数值调至3(或更低)。

8、模型集合

在机器学习中,我们可以从决策树中投票进行预测。在深度学习中,可以从随机猜测开始训练,优化模型也不是唯一的。使用验证数据集测试多次选出表现最佳的模型,也可以让多个模型进行内部投票,最终输出预测结果。

9、模型提升

在微调模型以外,也可以尝试使用模型的不同变体来提升模块性能,性能重大提升的背后往往是模型设计的改变。不过有些时候对模型进行微调也可以提升机器学习的性能,最终的判断可能会取决于你对相应任务的基准测试结果。

10、实验框架

深度学习开发需要依赖大量经验,调节超参数是一件非常乏味的工作。创建实验框架可以加速这一过程。例如:将模型定义外化为字符串以便调节,但是通常不能为小团队带来收益。这样做的话代码的简洁性和可追溯性损失会远比受益要大,这意味着难以对代码进行简单的修改。

很多AI云产品已经开始提供自动调节超参数的特性,虽然目前这种技术仍处于初始阶段,但无需人类自己编写框架的流程应该是大势所趋。

本文转自:HALCON图像处理与机器视觉,转载此文目的在于传递更多信息,版权归原作者所有。

最新文章