如何优化模型?

  • 1.选好的优化算法
  • 2.模型优化
  • 3.模型设计

如何进行模型调优的?如何进行模型优化?

1.选好的优化算法

在机器学习中

在选择优化算法的时候,就选择经试验证明较为不错的算法。

对于基于梯度的优化算法,随机梯度下降法因为没迭代一次都更新一次参数,所以它走得弯路会相对较多,因为部分样本有可能是噪声数据。

而批量梯度下降法,因为没迭代一次都会计算所有的样本梯度,最后得到全局最优解,但很多时候,这是不太可行的,因为数据量特别大的时候,把所有数据放到内存上计算梯度是不现实的。

在一般的机器学习中,我们会比较喜欢使用小批量梯度下降法。因为它既不想批量梯度下降法那样,需要加载那么多数据到内存上,一般我们会选择50-100个样本作为一个小批量。而且,也不用每次迭代更新,起码能朝着最优解方向走,因为在数据中,大部分还是比较好的样本。

在深度学习中的优化

  • 对下降方向做的优化

选择动量算法和NAG算法,相当于对下降方向做了一个优化。动量算法是根据物理学上的物体运动的原理,引申过来的。对于一个运动的物体,在惯性的作用下,它当前时刻的速度与前一时刻的速度相关。利用这个原理,当前时刻的下降方向,可以由上一次迭代下降的方向和当前梯度的向量组合,这就是动量算法。

而NAG算法则是让迭代点先按照原来的下降方向多走一步,然后在进行向量组合。

这两种算法都是对下降方向进行优化的。

  • 对学习率优化

选择AdaGrad算法,相当于对学习率做了优化。其实严格地说,应该是
对学习率做了一个限制,在迭代公式中,将学习率除以一个累积平方梯度,所以在迭代过程中,学习率是随着累积平方梯度变化而变化的。

选择Adadelta,则是对AdaGrad计算的学习率进行的优化。因为历史累积梯度会越来越大,在训练的中后期,学习率的变化会比较小,所以效果会没那么好。所以AdaDelta计算的累积梯度不是所有的项,而是固定大小的几项,这就很好的避免了累积梯度太大的问题。

更详细的介绍参考:
深度学习中的常用优化算法

2.模型优化

使用一些技巧

一般做法是进行K折交叉验证,格点搜索找到最优的参数。

然后对单个模型进行stacking。它的原理是对很多基分类器预测的结果作为特征,再用分类器预测一下。

当然,还可以更粗暴一点,直接使用基分类器的概率作为特征,然后预测。
更多请参考

模型调优与模型融合(代码应用篇)

群智能优化

使用粒子群等群智能优化算法。

更多参考:
优化算法分析

3.模型设计

模型设计原则:一个方便优化的模型比使用更强大的优化算法要好

所以,模型设计最好注重模块化和可重复利用这两个特性。

很喜欢吴军老师说的一句话,计算机知识一个工具,把它玩好了是一个艺术,但是知道用它来解决什么问题,且能高效的解决,才是真本事。

你可能感兴趣的:(优美的ML-DL题)