经验梯度算法是一种解决回归和分类问题的机器学习技术,它通过对弱预测模型(比如决策树)的集成产生预测模型。它像其他提升方法一样以分步的方式构建模型,并且通过允许使用任意可微分的损失函数来推广它们。
非正式介绍和其他boost方法一样,梯度提升方法也是通过迭代的方法联合弱”学习者”联合形成一个强学习者。很容易在最小二乘回归中解释算法的原理,最小二乘法回归的目的就是“教”模型通过将平方误差最小化(平均训练集)来预测函数的值。
在梯度提升中,假设已经有一些不完美的模型(最初可以使用非常弱的模型,它只是预测输出训练集的平均值)。梯度提升算法不改变,而是通过增加估计器构建新的模型来提高整体模型的效果。那么问题来了,如何寻找函数呢,梯度提升方法的解决办法是认为最好的应该使得梯度下降方向最优化。1
经验之谈1、对于稀疏数据,尽量使用学习率可自适应的优化方法,不用手动调节,而且最好采用默认值。
2、SGD通常训练时间更长,但是在好的初始化和学习率调度方案的情况下,结果更可靠。
3、如果在意更快的收敛,并且需要训练较深较复杂的网络时,推荐使用学习率自适应的优化方法。
4、Adadelta,RMSprop,Adam是比较相近的算法,在相似的情况下表现差不多。
5、在想使用带动量的RMSprop,或者Adam的地方,大多可以使用Nadam取得更好的效果。
正则化拟合训练集太过于接近可能会降低模型的泛化能力。几种所谓的正则化技术通过约束拟合过程来减少这种过拟合效应。一个很自然的正则化参数是梯度提升的迭代次数M(即当基学习器是决策树时,模型中树的数目)。 增加M可减少训练误差,但将其设置得太高可能导致过拟合。 通常通过在单独的验证集上监测误差来选择M的最优值。 除了控制M之外,还可以使用其他一些正则化技术:收缩;随机梯度提升等方法。2
本词条内容贡献者为:
王沛 - 副教授、副研究员 - 中国科学院工程热物理研究所