数学准备
雅可比矩阵(Jacobian):向量对向量的偏导数所组成的矩阵,思量 函数从空间映射到另一个空间(),则雅可比矩阵形成一个m行n列的矩阵,矩阵元标志为。海森矩阵(Hessian):一阶导数的雅可比矩阵,由于 二阶偏导的一连 性,可以交流偏导的先后顺序,以是 海森矩阵也是实对称矩阵。偏向导数(direction derivative):某个标量对特定偏向d(单元向量)上的导数,怀抱了该标量沿着该偏向的转变 率,是一个向量。梯度(Gradient):转变 率最大的偏向导数。鞍点(saddle point):Hessian正定,对应局部极小值,Hessian负定,对应局部最大值,Hessian不定,对应鞍点(注重 ,这是充实非须要条件)直观来看,鞍点就是一个偏向上是极大值,另一偏向却是极小值。厄米矩阵(Hermitian):对称矩阵的复数域扩展,实对称矩阵是厄密矩阵的特例。厄米矩阵可以被对角化。特征值:矩阵做对角化变换前后,特征向量被缩放的比例。特征向量和特征值是矩阵的固有属性。在最先 深度学习之前,我们要对深度学习和统计学习的主要 工具——优化算法——做一个周全 深刻的剖析,首先我们要问:机械学习为什么要使用优化算法呢?举个例子,通俗 最小二乘的最佳参数表达为:
虽然我们可以获得剖析 表达,可是 当数据量变得很是重大 的时间 ,连盘算矩阵的逆都市变得很是慢。同时在许多情形 下,我们无法获得参数的剖析 表达,就需要接纳迭代的方式迫近最佳的参数值。
迭代的方式有许多种,好比坐标下降法(coordinate descent),它的想法很简朴,将变量分组然后针对每一组变量的坐标偏向最小化Loss,循环往复每一组变量,直到到达不再更新Loss的坐标点。但即便这样,坐标下降法仍然迭代的很是缓慢,很大一部门缘故原由 在于它的搜索偏向是牢靠 的,只能沿着坐标的偏向,而这样的偏向并不能保证是最快的。同时,坐标下降需要假设变量之间的影响很是微弱,一个变量的最优不会影响到另一个变量的更新,但这一条件往往很难知足 。
图为坐标下降应用到两个参数组成的Loss,我们可以发现,参数只在两个垂直的偏向上举行 更新,这是由于 我们看到的contour就处在两个参数组成的直角坐标系中,划分对应着坐标的偏向。
相较于坐标下降,基于梯度是所有偏向导数中转变 最快的,梯度下降(gradient descent)也被叫做最速下降,对机械学习有些许相识 的同砚 会很容易写出梯度下降的公式:
首先,Loss function一样平常 都是标量,它的雅可比矩阵就是一个列向量,其梯度指明晰 下降的偏向,说明沿Loss梯度偏向更新参数会获得最洪流平的改变,学习率是一个标量,与梯度相乘,指明晰 下降的幅度。
图为梯度下降在两参数组成的Loss,可以发现,参数会沿着垂直于contour的偏向举行 更新,垂直于contour的偏向正是梯度的偏向。
Hessian中包罗了Loss function的曲率信息,由于 Hessian可以明确 为梯度的雅可比,一个函数的导数权衡的是函数的转变 率,以是 Hessian权衡的就是梯度的转变 率。同时Hessian矩阵由于是厄米矩阵,可以被对角化,它的特征值和特征向量可以划分界说为:
若是 特征向量被正交归一化,那么特征向量d就是基,那么特征值就是该偏向上的二阶导数,双方 同时乘以特征向量的转置,就可以获得:
好比对于鞍点,某个特征向量所对应的特征值就是负的,就意味着是这个偏向上的极大值点,而另一特征向量所对应的特征值就是正的,意味着同时也是另一偏向上的极小值点。从数学上来说,鞍点的泉源 是极大值极小值都要通过导数为零获得,但差异的偏向导数界说在了差异的维度上。
如图,AB偏向和CD偏向,二阶导数的正负并纷歧致,发生了X这样一个鞍点。
其余的偏向的二阶导数就可以通过特征向量来盘算,由于 特征向量可以组成一组基(完整 正交),所有向量都可以用这组基举行 线性体现,恣意 偏向f可以被体现为:
以是 ,恣意 偏向的二阶导数都可以获得:
Hessian能够告诉我们很是主要 的一点,随着参数点的一直 更新,梯度会怎样 转变 。举个例子,在许多课本 上都市讲学习率的设定,学习率若是 过大,就会在很大的Loss周围 震荡,若是 太小,需要迭代的次数又太多。
如图,差异的学习率会对梯度下降的性能造成影响。
那么,多大的学习率才合适呢?详细 到这个例子上,这显着 是一个凸函数(特指向下凸),代表着梯度会变得越来越小,也就是说牢靠 勤学习率的条件 下,随着参数点的下降,我们下降的会越来越慢,我们将Loss function做泰勒睁开 :
假设从
到
,我们执行了一次梯度下降,那么就有关系:
将梯度
体现为g,其带入泰勒睁开 式,可以获得:
若是 我们将后面两项写作一项:
若是 中括号内里 的项大于零,那么Loss 总会减小,好比Hessian的特征值均为负,着实 对应着极大值点,那么无论学习率多小,Loss总会下降很大。可是 ,若是 Hessian特征值均为正,而且很是大,就意味着极小值周围 的曲率很是大,那么执行梯度下降反而会导致Loss的上升。若是 我们希望Loss能下降最多,着实 就是希望中括号项越大越好,在Hessian特征值为正的情形 下,在我们将看作变量,令其一阶导数为零,这样就求到了极大值(由于 在Hessian特征值为正的条件 下,二阶导数小于零):
就可以获得:
就给出了我们的最优步长。同时,我们可以将Loss function做泰勒睁开 ,睁开 到二阶:
思量 到一阶导数为零的点对应着极值点,我们对上式求一阶导数,并令其为零可得:
这样就获得了牛顿法(Newton method)的更新公式。牛顿法已经默认使用了一阶导数为零的信息,理想情形 下,它只需要从初始参数点迭代一次就可以找到极小值点。同时,它使用 了Hessian中的曲率信息,一样平常 而言也要比梯度更快,在下降偏向上并不是梯度的偏向,从数学上可以看出Hessian乘以梯度,本质上会获得Hessian特征向量的线性叠加,若是 梯度恰恰 作为了Hessian的特征向量,那么牛顿法和梯度下降的下降偏向才会一致。
如图,红线体现梯度下降的路径,绿线体现牛顿法的路径。
读芯君开扒
课堂TIPS
这里着重强调:优化算法的快慢和盘算价钱是两回事情。优化至局部最小值所需要的迭代次数越少,就可以说优化地越快。梯度下降比坐标下降快,牛顿法比梯度下降更快,但我们可以很是容易的看到,在每次迭代时,梯度下降需要盘算所有 样本的梯度,牛顿法甚至需要盘算所有 样本的Hessian,虽然迭代次数镌汰 了,但每次的盘算价钱却增添 了。
作者:唐僧不用海飞丝
如需转载,请后台留言,遵守转载规范