机器学习-梯度下降的优化
在回归中,我们需要解决下面的优化问题,即使得Loss函数尽可能的小
$$
\theta^*=arg\min L(\theta),L:loss function,\theta:parameters
$$
假设一共有两个参数$\theta_1,\theta_2$,使得$\theta^0= \begin{bmatrix}\theta^0\\theta^1\end{bmatrix}$,便有梯度如下
$$\nabla L(\theta)=\begin{bmatrix} \partial L(\theta_1)/ \partial \theta_1\\ \partial L(\theta_2)/ \partial \theta_2\end{bmatrix}$$
那么参数的更新便可通过向量的形式进行
$$
\begin{bmatrix}\theta^1_1\\theta^1_2\end{bmatrix}=\begin{bmatrix}\theta^0_1\\theta^0_2\end{bmatrix}-\eta\begin{bmatrix} \partial L(\theta^0_1)/ \partial \theta_1\\ \partial L(\theta^0_2)/ \partial \theta_2\end{bmatrix}
$$
但是其中,$\eta$是一直不变的,但是我们知道,经过迭代之后,在越来约接近目标的时候,我们需要将学习率降低,使其能够愈发趋近目的地。故,我们对$eta$进行改进,使其经过一定的迭代后越来越小。
$$
\eta^t=\eta/\sqrt{t+1}
$$
但是学习率不能一刀切,对于参数,我们也需要给予其一定的改变。一般我们的参数的改变为
$$
w^{t+1}=w^t-\eta^tg^t
$$
w是一个参数,我们设置$\eta^t$ 为参数w之前导数的均方根,使其成为一个参数依赖型的学习率。也就是说
$$
w^1=w^0-\frac{\eta^0}{\sigma^0}g^0,\sigma^0=\sqrt{(g^0)^2}\
w^2=w^1-\frac{\eta^1}{\sigma^1}g^1,\sigma^1=\sqrt{\frac{1}{2}[(g^0)^2+(g^1)^2]}\
$$
如此迭代,直到
$$
w^{t+1}=w^t-\frac{\eta^t}{\sigma^t}g^t,\sigma^t=\sqrt{\frac{1}{t+1}\sum^t_{i=0}(g^i)^2}
$$
从上面的式子中,我们可以看到$\eta^t$是一个时间相关的学习率,$\sigma^t$是一个参数相关的学习率,且
$$
\eta^t=\frac{\eta}{\sqrt{t+1}},\sigma^t=\sqrt{\frac{1}{t+1}\sum^t_{i=0}(g^i)^2}
$$
故相除之后得到下列的公式
$$
w^{t+1}=w^t-\frac{\eta}{\sqrt{\sum^t_{i=0}(g^i)^2}}g^t
$$
梯度改进之后的对比如下: