GrowNet:梯度提升神经网络
介绍
GrowNet是一个新颖的梯度提升框架,它使用梯度提升技术从浅层深度神经网络构建复杂的深度神经网络。浅层深度神经网络用作弱学习器。如今,GrowNet正在各个领域和行业中得到应用。
梯度提升算法的简要回顾。
梯度提升是一种按顺序构建模型的技术,这些模型试图减少先前模型产生的误差。这是通过对先前模型产生的残差或误差构建模型来完成的。它可以使用数值方法的优化来估计函数。最常见的梯度提升函数类型是决策树,其中每个决策都是通过拟合先前树的负梯度来建模的。
梯度提升可以是用于回归任务的梯度提升回归器,也可以是用于分类任务的梯度提升分类器。
GrowNet——应用于神经网络的新型提升思想
梯度提升算法背后的主要概念或思想是,它使用较低级别的简单模型作为构建块来构建更强大且功能更强大的模型(通常是更高阶的模型),方法是使用一阶和二阶梯度导数进行顺序梯度提升。在这些模型中,弱学习器提高了高阶模型的性能。
在每个提升步骤中,初始输入特征是
原始输入特征扩展到当前迭代的先前层输出。此合并的特征集用作输入,用于使用基于提升的机制(使用当前残差)训练下一组弱学习器。所有来自顺序训练的模型的输出都经过加权并组合以给出最终输出。
假设一个数据集有m个特征,每个特征有d维,则
$$ \mathrm{T = {{(xi, yi)|xi ∈ R^d,yi ∈ R,|T| = m}}} $$
假设Grownet进行N次迭代,
$$ \mathrm{ŷ_i\:=\:∅(x_i)\:=\:\displaystyle\sum\limits_{n=0}^N α_n\:Fk(x_i), \: n ∈ F} $$
其中F = 空间中的乘数,αn = 步长大小。Fn表示每个具有输出层的浅层神经网络。
如果l是可微的损失函数,则要最小化的目标函数为以下等式
$$ \mathrm{L(\epsilon)\:=\:\sum_{i=0}^nl(y_i,\hat{y}_{i})} $$
我们可以进一步添加正则化。
设$\mathrm{\hat{y}_{i}^{(t-1)}\:=\:\sum_{k=0}^{t-1}\alpha_kf_k(x_i)}$是xi样本在t−1阶段的Grownet输出,则
$$ \mathrm{L^{(t)}\:=\:\sum_{i=0}^nl(y_i,\hat{y}_{i}^{(t-1)}+f_i(x_i))} $$
弱学习器的目标函数将给出为。
$$ \mathrm{L^{(t)}\:=\:\sum_{i=0}^n(\tilde{y_{i}}\:-\:f_i(x_i))^2} $$
其中,
$$ \mathrm{\tilde{y_{i}}\:=\:-gi/hi} $$
引入校正步骤。
在每个步骤(提升阶段)t,都会更新第t个弱学习器的参数,并且所有先前的(t−1)弱学习器都不会更改。在这个过程中,模型可能会在学习过程中陷入局部最小值,这可以通过αn来缓解。因此,我们引入一个校正步骤,在每个校正步骤中,允许每个t−1学习器通过反向传播更新参数。
GrowNet的应用
GrowNet可用于回归和分类。
对于回归。
对于回归任务,采用MSE损失函数。如果l是均方损失,则用一阶和二阶以及t个阶段获得yi为
$$ \mathrm{g_i\:=\:2(\hat{y}^{(t-1)}\:-\:y_i), \:\:\:h_i\:=\:2} $$
$$ \mathrm{\tilde{y}_{i}\:=\:y_i\:-\:\hat{y}^{(t-1)}} $$
然后,通过对每个xi,yi(i = 1,2…)进行最小二乘回归来训练即将到来的弱学习器,并且在校正状态下,使用MSE损失再次更新GrowNet中的所有模型参数。
对于分类
在二元交叉熵示例的情况下,交叉熵损失函数是可微的。取标签yi ∈ {−1, +1},在任何点t,一阶梯度给出为
$$ \mathrm{g_i\:=\:-\frac{-2y_i}{1\:+\:e^{2y_i\hat{y_i}^{(t-1)}}},\: \: h_i\:=\:\frac{4y_i^{}2e^{2y_i\hat{y_i}^{(t-1)}}}{(1\:+\:e^{-2y_i\hat{y_i}^{(t-1)}})^2}} $$
$$ \mathrm{\tilde{y}_i\:=\:-g_i/h_i\:=\:y_i(1\:+\:e^{-2y_i\hat{y_i}^{(t-1)}})/2} $$
使用最小二乘法使用二阶导数拟合即将到来的弱学习器。最终使用二元交叉熵损失更新所有函数的参数。
结论
GrowNet是一种应用于深度神经网络的梯度提升技术的新方法,我们可以使用一个框架中的机器学习来完成许多任务。它是简单深度神经网络的更好替代方案,因为它提供了更好的性能并且训练时间更短。