前言
Logistic模型常用的参数优化方法有,梯度下降法,牛顿法,拟牛顿法,坐标轴下降法等。
Logistic回归模型可以表示如下:
y
=
1
1
+
e
−
(
w
T
x
+
b
)
y=\frac{1}{1+e^{-(w^Tx+b)}}
y=1+e−(wTx+b)1
令y=h(x),则有下式:
P
(
y
∣
x
;
w
)
=
(
h
(
x
)
)
y
(
1
−
h
(
x
)
)
1
−
y
P(y|x;w)=(h(x))^y(1-h(x))^{1-y}
P(y∣x;w)=(h(x))y(1−h(x))1−y
其中,y取值0或1,构造似然函数如下:
L
(
w
)
=
∏
i
=
1
n
P
(
y
i
∣
x
i
;
w
)
=
∏
i
=
1
n
(
h
(
x
i
)
)
i
y
(
1
−
h
(
x
i
)
)
1
−
y
i
L(w)=\prod^n_{i=1} P(y_i|x_i;w)=\prod^n_{i=1}(h(x_i))^y_i(1-h(x_i))^{1-y_i}
L(w)=i=1∏nP(yi∣xi;w)=i=1∏n(h(xi))iy(1−h(xi))1−yi
则交叉熵损失函数如下:
J
(
w
)
=
−
l
o
g
(
L
(
w
)
)
=
−
∑
i
=
1
n
y
i
log
(
h
(
x
i
)
)
+
(
1
−
y
i
)
log
(
1
−
h
(
x
i
)
)
J(w)=-log(L(w))=-\sum _{i=1}^ny_i\log(h(x_i))+(1-y_i)\log(1-h(x_i))
J(w)=−log(L(w))=−i=1∑nyilog(h(xi))+(1−yi)log(1−h(xi))
1、梯度下降法
对损失函数求w的一阶偏导数如下:
∂
J
(
w
)
∂
w
=
−
∑
i
=
1
n
(
y
i
h
(
x
i
)
−
1
−
y
i
1
−
h
(
x
i
)
)
h
′
(
x
i
)
=
−
∑
i
=
1
n
(
y
i
h
(
x
i
)
−
1
−
y
i
1
−
h
(
x
i
)
)
h
(
x
)
(
1
−
h
(
x
)
)
∂
w
T
x
i
∂
w
=
−
∑
i
=
1
n
(
y
i
−
h
(
x
i
)
)
x
i
\begin{aligned} \frac{\partial J(w)}{\partial w}&=-\sum_{i=1}^n(\frac{y_i}{h(x_i)}-\frac{1-y_i}{1-h(x_i)})h'(x_i)\\ &=-\sum_{i=1}^n(\frac{y_i}{h(x_i)}-\frac{1-y_i}{1-h(x_i)})h(x)(1-h(x))\frac{\partial w^Tx_i}{\partial w}\\ &=-\sum_{i=1}^n(y_i-h(x_i))x_i \end{aligned}
∂w∂J(w)=−i=1∑n(h(xi)yi−1−h(xi)1−yi)h′(xi)=−i=1∑n(h(xi)yi−1−h(xi)1−yi)h(x)(1−h(x))∂w∂wTxi=−i=1∑n(yi−h(xi))xi
采用梯度下降法对参数进行更新,经过多次迭代即可求得最优参数w。
w
t
+
1
=
w
t
−
γ
∂
J
(
w
)
∂
w
w_{t+1}=w_t-\gamma \frac{\partial J(w)}{\partial w}
wt+1=wt−γ∂w∂J(w)
梯度优化方法又分为:随机梯度下降,批量梯度下降。
2、牛顿法
梯度下降法是一阶优化方法,而牛顿法则是一种二阶优化方法。牛顿法是求解函数值为0时的自变量取值的方法。
利用牛顿法求解目标函数的最小值其实是转化成求使目标函数的一阶导为0的参数值。这一转换的理论依据是,函数的极值点处的一阶导数为0.
其迭代过程是在当前位置x0求该函数的切线,该切线和x轴的交点x1,作为新的x0,重复这个过程,直到交点和函数的零点重合。此时的参数值就是使得目标函数取得极值的参数值。迭代过程如下图所示:
迭代公式为:
w
t
+
1
=
w
t
−
l
′
(
w
)
l
′
′
(
w
)
w_{t+1}=w_t - \frac {l'(w)}{l''(w)}
wt+1=wt−l′′(w)l′(w)
当θ是向量时,牛顿法可以使用下面式子表示:
w
t
+
1
=
w
t
−
H
−
1
⋅
δ
w
⋅
l
(
w
)
w_{t+1}=w_t - H^{-1}·\delta w·l(w)
wt+1=wt−H−1⋅δw⋅l(w)
其中H叫做海森矩阵,其实就是目标函数对参数w的二阶导数。
梯度下降法与牛顿法对比:
- 分别使用目标函数的一阶近似和二阶近似来优化,如果目标函数比较复杂,那么求得的最优解可能是局部最优解(极值)。
- 牛顿法收敛速度更快,因为二阶近似比一阶近似更接近原函数,而近似成二次函数后,可以一步到位得到(近似函数的)最优解,所以优化方向 d d d较梯度下降优化方向更准确。海森矩阵的逆在迭代过程中不断减小,可以起到逐步减小步长的效果。缺点:海森矩阵的逆计算复杂,代价比较大,因此有了拟牛顿法。
- 牛顿法使用的限制条件是 H H H必须是正定矩阵,所以初始点的选择很重要。梯度下降法可以将初始点选在全局任意一处,均能得到极小值,虽然不一定是全局范围内的最小值。
3、拟牛顿法
牛顿法中计算 H H H 的开销太大,所以引入另一种方法:拟牛顿法,顾名思义,此方法来源于牛顿法,或者说跟牛顿法很相似。拟牛顿法仅需要计算目标函数的梯度,不需要计算二阶导。使用 Hessian的近似矩阵 B B B,优化过程大体跟牛顿法一样,关键区别在于使用 B B B代替了 H H H 。
4、坐标下降法
坐标上升与坐标下降可以看做是一对,坐标上升是用来求解max最优化问题,坐标下降用于求min最优化问题,但是两者的执行步骤类似,执行原理相同。
例如要求接一个max_f(x1,x2,…,xn)的问题,其中各个xi是自变量,如果应用坐标上升法求解,其执行步骤就是:
1)首先给定一个初始点,如 X_0=(x1,x2,…,xn);
2) for dim=1:n
固定xi;(其中i是除dim以外的其他维度)
以x_dim为自变量求取使得f取得最大值的x_dim;
end
3) 循环执行步骤2,直到f的值不再变化或变化很小。
总结:其关键点就是每次只变换一个维度xi,而其他维度都用当前值进行固定,如此循环迭代,最后得到最优解。坐标下降法与上述过程类似,不过在第2步求取最优x_dim的值时,变为使得f最小的x_dim;
当维度很高时,梯度下降的优势就要比坐标下降明显很多。