LR和GBDT在处理多分类问题时的梯度推导和算法更新过程

LR+GBDT二分类和多分类梯度计算和更新过程

梯度推导

SIGMOID 函数分类(LR+GBDT)

sigmoid函数通常将结果映射到[0,1]之间,先推导通过后向传播求其梯度,假设非映射结果为($F_m(x)$):

应该注意的是$\hat y$是预测结果,并且$\hat y = h(x;\theta)$,交叉熵作为损失函数是为了评估实际值(标签)$y_i$与预测值的相似程度。先求其梯度,且暂时不考虑使用什么函数拟合。

求一阶导数的时候不需要一下把所有的的函数都代入,这样会比较复杂,链式求导一般会较少计算错误率。上式若拟合函数是多元线性组合形式,则为LR的梯度求导过程,只需要代入$F_m(x) = w^Tx$:

LR采用梯度下降时,更新方法为:

LR更新方法-梯度下降法

第一步:初始化$[w_1,w_2,…,w_n]^T$;

第二步:计算梯度Jacobian矩阵。

$g_t =[g_1,g_2,…,g_i]^T= [(\hat y_1-y_1)x_i,(\hat y_2-y_2)x_2,…,(\hat y_i-y_i)x_i]$;

第三步:$[w_1,w_2,…,w_n]^T:=[w_1,w_2,…,w_n]^T-\alpha g_t$;

第四步:$w^* = arg \min_wLoss $;

第五步:算法结束

和LR中用线性模型拟合有些不同,GBDT或者XGBOOST中采用回归树进行建模,即拟合函数$F_m(x)=w_{q(x)}$为回归树(Regression Tree),处理二分类问题时,可计算其梯度:

GBDT具有自己的特点:1)梯度提升(每棵树都是前m-1棵树的负梯度方向);2)加性模型(预测结果为m棵树的累加)。

GBDT采用梯度下降法进行更新步骤:

//GBDT更新方法-梯度下降法

第一步:初始化第一棵树$f_0=log\frac{p_1}{1-p_1}$,其中$p_1$是训练样本中y=1的比例,利用先验知识初始化。

第二步:计算梯度。$g_i = \hat y - y$,并使用训练集$\{(x_i,-g_i)\}^n_{i=1}$训练一棵树$f_m(x)$,其中$\hat y = \frac{1}{1+e^{F_{m-1}(x)}}$

第三步:通过line search方法找到每棵树的最佳权重(Shrinkage):$\gamma_m =arg min_{\gamma_m}L(y_i,F_{m-1}(x)+\gamma_mf_m(x)) $

第四步:累加所有树,得到模型:$F_m(x) = \sum_{i=0}^m \alpha \gamma_mf_m(x)$

SOFTMAX分类问题(LR+GBDT)

处理多分类的时候,一般会选用SOFTMAX函数作为映射函数:

多分类的输出是One-hot,也就说,只有一个为标签为1,分类问题交叉熵作为损失函数,则有:

先举例说明计算时梯度如何计算,不管是LR还是GBDT:

//举例说明如何更新梯度(对$F_m(x)$的梯度)

第一步:获取得分$F^j_m(x)$,比如三分类输出$[2,1,0.3]^T$

第二步:计算预测结果,即SoftMax输出结果$[0.64,0.23,0.13]$

第三步:计算梯度。假设第二类为正确预测的结果,由上面梯度计算结果可知:

$[0.64,0.23-1,0.13] = [0.64,-0.77,0.13] $

梯度计算完毕

先给出LR-MULTICLASSIFIER迭代过程:

//LR-MultiClassifer-StochasticGradient

第一步:初始化线性拟合部分模型参数$[w_1,w_2,w_3,…,w_n]$

第二步:计算梯度,Jacobian矩阵。计算$g_t=(\hat y_j -y_j)x_i=[g_1,g_2,…,g_j]$,输入$\{(x_i,y_i,-g_t)\}$,其中$j$为输出的维度(分类的类别数)且$\hat y_j = softmax_j$

第三步:更新参数。$[w_1,w_2,…,w_n]^T:=[w_1,w_2,…,w_n]^T-\alpha g_t$;

第四步:达到最优。$w^* = argmin_w L(y_i,\hat y)$

结束算法。

GBDT的算法迭代方式和二分类非常的类似,这里就不在累述。

总结

不管是LR还是树模型,计算梯度都可使用后向传输(链式求导)的方法求其梯度。并且不管是二分类还是多分类,其损失函数对$F_m(x)$(拟合输出得分,对于LR就是线性拟合结果,对于树模型就是叶子节点的得分),都是$g_t = \hat y - y$。但是应该注意的是,GBDT在更新的过程中,是对$F_{m-1}(x)$的导数,这个应该注意。

参考文献

[1] Jerome H. Friedman. Greedy Function Approximation: A Gradient Boosting Machine[J]. Annals of Statistics, 29(5):1189-1232.

[2] http://willwolf.io/2017/05/18/minimizing_the_negative_log_likelihood_in_english/

0%