3.5 对梯度下降中学习率的探讨
其中 α-----学习率或者步长。
假设现在的损失函数如图所示,定点
沿B的方向走一步。
则:
所以说,a控制水平方向的改变大小,当a越大时,BC的长度就越大,水平方向就大;越小时,BC的长度就越小。可以类似的理解为水平方向上跨了多大一步,并且a不是什么距离长度或者单位啥的,只能说是梯度大小值得比例,影响着参数得每一次迭代得改变部分。
因此可以很清楚的看到a的大小值对梯度的影响:
(1).a很大时,水平方向垮了一大步,损失函数下降太快,导致无法获取最优值。
(2).a很小时,水平方向跨了一小步,迭代速度慢,更新次数多。
因此,只有合适的a值才能有效的保障迭代进行,就好比如马克思主义哲学中的观点一样,任何事物都有度,超过这个度就会发生量变到质变。
3.6 最大化似然函数的另一种方法----牛顿法(Newton’smethod)
牛顿法的主要应用时求解方程的根,具体的做法为:
(几何直观解释)
则:
……
因此,回到刚才的逻辑回归中:
由基本的微积分知识得到:
此时的更新参数的公式为:
通过简单的案例看出牛顿法的基本原理:
求解方程的根:
牛顿迭代公式:
其中
故有
…
因此很快的达到了收敛。
故此时的f(0.5614)= 0.
这里的计算用了Python代码:
3.6.1 牛顿法的一般形式
(1).海塞矩阵(Hesse)
对于n元函数y= f(x)而言,有:
第一眼看可能有点吓人,仔细理解下可以发现不都是偏导吗,而且还是对称矩阵。
还是通过简单的例子来理解海塞矩阵。
多元函数
先看对角线上发现都是函数f对各个变量的偏导:
再看对角线右侧的部分可以看到每行都是f先对x求两次偏导,然后下个元素就是先对x求偏导,在对其他变量求偏导。
故此时的海塞矩阵为:
即为:
(2).泰勒公式
泰勒展开公式:
还是通过简单的例子来说明它的具体用法:
求出点
处的搜索方向。
先求出海塞矩阵:
具体的Python运算过程为
3.6.2 总结
学习了梯度下降法和牛顿法,它两的过程如图:
可以清楚的看到红色线(牛顿法)的收敛速度比梯度下降法快,但是随着特征维数的增加,牛顿法中需要计算海塞矩阵,比较繁琐,于是会有其他改进的方法诞生,拟牛顿法(quasiNewtonmethod),不再直接计算海塞矩阵,而是每一步的时候使用梯度向量更新hessian矩阵的近似。这些都属于《最优化理论》的内容,以后学到在回来补充完整。
Tuesday,May 21, 2019
校园宽带小王子