泰勒展开式

定义:泰勒公式是一个用函数在某点的信息描述其附近取值的公式。具有局部有效性。

基本形式:泰勒及Jacobian、Hessian - 图1

一阶泰勒展开:泰勒及Jacobian、Hessian - 图2

二阶泰勒展开:泰勒及Jacobian、Hessian - 图3

迭代形式:假设泰勒及Jacobian、Hessian - 图4,将泰勒及Jacobian、Hessian - 图5泰勒及Jacobian、Hessian - 图6处进行二阶泰勒展开:

泰勒及Jacobian、Hessian - 图7

举个例子,例如函数泰勒及Jacobian、Hessian - 图8,当自变量有变化时,即泰勒及Jacobian、Hessian - 图9,就有:

泰勒及Jacobian、Hessian - 图10

泰勒及Jacobian、Hessian - 图11时,上式的后两项是泰勒及Jacobian、Hessian - 图12的高阶无穷小舍去的话上式就变成了泰勒及Jacobian、Hessian - 图13。也就是说当自变量泰勒及Jacobian、Hessian - 图14足够小的时候,也就是在某点的很小的邻域内,泰勒及Jacobian、Hessian - 图15是可以表示成泰勒及Jacobian、Hessian - 图16的线性函数的。线性函数计算起来,求导起来会很方便,若进行n次近似,就得到了泰勒展开的基本形式。

Jacobian与Hessian

Jacobian

有时我们需要计算输入和输出都为向量的函数的所有偏导数。包含所有这样的偏导数的矩阵被称为Jacobian矩阵。具体来说,如果我们有一个函数:泰勒及Jacobian、Hessian - 图17泰勒及Jacobian、Hessian - 图18的Jacobian矩阵泰勒及Jacobian、Hessian - 图19定义为泰勒及Jacobian、Hessian - 图20

有时,我们也对导数的导数感兴趣,即二阶导数(second derivative)。例如,有一个函数泰勒及Jacobian、Hessian - 图21泰勒及Jacobian、Hessian - 图22的一阶导数(关于泰勒及Jacobian、Hessian - 图23)关于泰勒及Jacobian、Hessian - 图24的导数记为泰勒及Jacobian、Hessian - 图25。在一维的情况下,我们可以将泰勒及Jacobian、Hessian - 图26泰勒及Jacobian、Hessian - 图27。二阶导数告诉我们,一阶导数将如何随着输入的变化而变化。它表示只基于梯度信息的梯度下降步骤是否会产生如我们预期的那样大的改善,因此它是重要的。我们可以认为,二阶导数是对曲率的衡量。假设我们有一个二次函数(虽然很多实践中的函数都不是二次的,但至少在局部可以很好地用二次近似)。如果这样的函数具有零二阶导数,那就没有曲率。也就是一条完全平坦的线,仅用梯度就可以预测它的值。我们使用沿负梯度方向大小为泰勒及Jacobian、Hessian - 图28的下降步,当该梯度是1时,代价函数将下降泰勒及Jacobian、Hessian - 图29。如果二阶导数是负的,函数曲线向下凹陷(向上凸出),因此代价函数将下降的比泰勒及Jacobian、Hessian - 图30多。如果二阶导数是正的,函数曲线是向上凹陷(向下凸出),因此代价函数将下降的比泰勒及Jacobian、Hessian - 图31少。从下图可以看出不同形式的曲率如何影响基于梯度的预测值与真实的代价函数值的关系。

jacobian.png

Hessian

当我们的函数具有多维输入时,二阶导数也有很多。我们可以将这些导数合并成一个矩阵,称为Hessian矩阵。Hessian矩阵泰勒及Jacobian、Hessian - 图33定义为:

泰勒及Jacobian、Hessian - 图34

Hessian等价于梯度的Jacobian矩阵。

微分算子在任何二阶偏导连续的点处可交换,也就是它们的顺序可以互换:

泰勒及Jacobian、Hessian - 图35

这意味着泰勒及Jacobian、Hessian - 图36,因此Hessian矩阵在这些点上是对称的。在深度学习背景下,我们遇到的大多数函数的Hessian几乎处处都是对称的。因为Hessian矩阵是实对称的,我们可以将其分解成一组实特征值和一组特征向量的正交基。在特定方向泰勒及Jacobian、Hessian - 图37上的二阶导数可以写成泰勒及Jacobian、Hessian - 图38。当泰勒及Jacobian、Hessian - 图39泰勒及Jacobian、Hessian - 图40的一个特征向量时,这个方向的二阶导数就是对应的特征值。对于其他的方向泰勒及Jacobian、Hessian - 图41,方向二阶导数是所有特征值的加权平均,权重在0和1之间,且与泰勒及Jacobian、Hessian - 图42夹角越小的特征向量的权重越大。最大特征值确定最大二阶导数,最小特征值确定最小二阶导数。

我们可以通过(方向)二阶导数预期一个梯度下降步骤能表现得多好。

我们在当前点泰勒及Jacobian、Hessian - 图43处作函数泰勒及Jacobian、Hessian - 图44的近似二阶泰勒级数:

泰勒及Jacobian、Hessian - 图45

其中泰勒及Jacobian、Hessian - 图46是梯度,泰勒及Jacobian、Hessian - 图47泰勒及Jacobian、Hessian - 图48点的Hessian。如果我们使用学习率泰勒及Jacobian、Hessian - 图49,那么新的点泰勒及Jacobian、Hessian - 图50将会是泰勒及Jacobian、Hessian - 图51。代入上述的近似,可得

泰勒及Jacobian、Hessian - 图52

其中有3项:函数的原始值、函数斜率导致的预期改善、函数曲率导致的矫正。当最后一项太大时,梯度下降实际上式可能向上移动的。当泰勒及Jacobian、Hessian - 图53为零或负时,近似的泰勒级数表明增加泰勒及Jacobian、Hessian - 图54将永远使泰勒及Jacobian、Hessian - 图55下降。在实践中,泰勒级数不会在泰勒及Jacobian、Hessian - 图56大的时候也保持准确,因此在这种情况下我们必须采取更启发式的选择。当泰勒及Jacobian、Hessian - 图57为正时,通过计算可得,使近似泰勒级数下降最多的最优步长为

泰勒及Jacobian、Hessian - 图58

最坏的情况下,泰勒及Jacobian、Hessian - 图59泰勒及Jacobian、Hessian - 图60最大特征值泰勒及Jacobian、Hessian - 图61对应的特征向量对齐,则最优步长是泰勒及Jacobian、Hessian - 图62。我们要最小化的函数能用二次函数很好地近似的情况下,Hessian的特征值决定了学习率的量级。

二阶导数还可以被用于确定一个临界点是否是局部极大点、局部极小点或鞍点。

回想一下,在临界点处泰勒及Jacobian、Hessian - 图63。而泰勒及Jacobian、Hessian - 图64意味着泰勒及Jacobian、Hessian - 图65会随着我们移向右边而增加,移向左边而减小,也就是泰勒及Jacobian、Hessian - 图66泰勒及Jacobian、Hessian - 图67对足够小的泰勒及Jacobian、Hessian - 图68成立。换句话说,当我们移向右边,斜率开始指向右边的上坡,当我们移向左边,斜率开始指向左边的上坡。因此我们得出结论,当泰勒及Jacobian、Hessian - 图69泰勒及Jacobian、Hessian - 图70时,泰勒及Jacobian、Hessian - 图71是一个局部极小点。同样,当泰勒及Jacobian、Hessian - 图72泰勒及Jacobian、Hessian - 图73时,泰勒及Jacobian、Hessian - 图74是一个局部极大点。这就是所谓的二阶导数测试。不幸的是,当泰勒及Jacobian、Hessian - 图75时测试是不准确的。在这种情况下,泰勒及Jacobian、Hessian - 图76可以是一个鞍点或平坦区域的一部分。

在多维情况下,我们需要检测函数的所有二阶导数。利用Hessian的特征值分解,我们可以将二阶导数测试扩展到多维情况。在临界点处泰勒及Jacobian、Hessian - 图77,我们通过检测Hessian的特征值来判断该临界点是一个局部极大点、局部极小点还是鞍点。当Hessian是正定的(所有特征值都是正的),则该临界点是局部极小点。同样,当Hessian是负定的(所有特征值都是负的),这个点就是局部极大点。在多维情况下,实际上我们可以找到确定该点是否为鞍点的积极迹象(某些情况下)。如果Hessian的特征值中至少一个是正的且至少一个是负的,那么泰勒及Jacobian、Hessian - 图78泰勒及Jacobian、Hessian - 图79某个横截面的局部极大点,却是另一个横截面的局部极小点,如下图例子。最后,多维二阶导数测试可能像单变量版本那样是不确定的。当所有非零特征值是同号的且至少有一个特征值是0时,这个检测就是不确定的。这是因为单变量的二阶导数测试在零特征值对应的横截面上是不确定的。

Hessian.png

上图既有正曲率又有负曲率的鞍点。示例中的函数是泰勒及Jacobian、Hessian - 图81。函数沿泰勒及Jacobian、Hessian - 图82轴向上弯曲。泰勒及Jacobian、Hessian - 图83轴是Hessian的一个特征向量,并且具有正特征值。函数沿泰勒及Jacobian、Hessian - 图84轴向下弯曲。该方向对应于Hessian负特征值的特征向量。名称“鞍点”源自该处函数的鞍状形状。这是具有鞍点函数的典型示例。维度多于一个时,鞍点不一定要具有0特征值:仅需要同时具有正特征值和负特征值。我们可以想象这样一个鞍点(具有正负特征值)在一个横截面内是局部极大点,而在另一个横截面内是局部极小点。