内容
- 多元函数的导(雅克比);
- 多元函数的方向导;
- 多元函数的二阶导(赫森);
- 牛顿法;
- 共轭方向法。
(本文粗体小写字母表示向量。粗体大写字母表示矩阵,有必要时用下标注明矩阵维度。细体小写希腊字母表示标量——实数)。
一、多元函数的导
如果我们有函数:
是
的映射。说
在点
可导是指能够用一个仿射函数(affine function) 在
附近的小区域内很好地拟合
。这里提到“仿射函数”和“很好地拟合”,这两个概念需要解释。
如果函数
满足:
其中
和
是标量。则
是一个线性函数。如果
是线性的,那么可以找到一个矩阵
来表示它。即存在一个矩阵
使:
为什么线性函数有此特性?任何一个
元向量
都可以被
维线性空间
的标准基线性表出:
是第
个元素为
其余元素为
的列向量。
构成
的标准基。其中
是向量
的
个元素。因为
是线性的,有:
其中
是
元向量,是对标准基的第
个向量
施加
的结果。
是以
为系数对
的线性组合。将
作为列组成一个
的矩阵
,显然有:
所以一切线性函数
都可以用一个矩阵
表示。
的列是对自变量空间的标准基施加
的结果。对
施加
等于用
左乘
。
如果
是
的线性函数,那么
的矩阵就是一个
矩阵,也就是一个行向量
。有:
的图形是
维空间中一张超平面(hyperplane)。如果自变量是
维则
的图形是
维空间中一张平面。线性函数一定过原点,因为:
把一个线性函数加上一个常向量
就形成了一个仿射函数:
如果仿射函数
是
的,则它的图形是
维空间中一个(
不一定过原点的)平面。
上面说
在
可导是指
在
附近可以被一个仿射函数很好地近似,这个“很好”是在极限的意义上说的。即:
随着
向
靠近(即
),
与仿射函数
之间的差距消失得更快。为满足这个极限必须有:
于是这个近似仿射函数是:
和
在
相等。在其他点可以不相等。但随着向
靠近,它们之间的差距消失,且消失得比自变量点靠近得要快。还差一个问题:矩阵
是什么?
选取某一个坐标轴
。让自变量点沿着坐标轴
靠近
。由可导的定义,有:
只要将 [1.10] 中的
替换为
容易得到 [1.13] 。随着
取值变化,自变量
沿着坐标轴
运动。
是矩阵
的第
列。[1.13] 表明:
的第
列是
的各个分量
对第
个自变量
的在
的偏导数组成的列向量:
于是
就由
的各个分量
对
的个分量
的偏导数组成:
矩阵称作
在
的雅克比矩阵(jacobi matrix)。它就是多元函数的导“数”。由于各个偏导数在
是唯一的,所以雅克比矩阵是唯一的。如果
是
的,那么它的雅克比矩阵是只有一行的矩阵,或者说行向量。这个行向量的转置称为
在
的梯度(gradient)。
多元复合函数的求导链式法则与一元函数相同,仍是将多个函数的导“数”连乘 —— 多元情况下是将雅克比矩阵连乘。例如有两个函数
,其雅克比矩阵为
,
,其雅克比矩阵为
。则复合函数
的雅克比矩阵为
。
接下来的小节只讨论
的函数。这样的函数的雅克比矩阵是
的行向量,其转置是梯度。梯度与函数的方向导数有关。下文详述。
二、方向导数
函数
的自变量
有
个分量
。
对
在
点的偏导数是
。用文字来说就是当把除
外的其他分量视作常数时,
在
点对
的瞬时变化率。用数学语言表述就是:
对
个分量的偏导数是
分别沿
个坐标轴的变化率。标准基向量
是指向第
坐标轴正方向的单位向量。
中方向无数,不拘于坐标轴方向。取指向任一方向的单位向量
替换进 [2.1] ,得到:
这个极限是,以单位向量
指向的方向为正方向(
可以想象相当于指定了一个新的坐标轴)时
的变化率。也可以这样看待 [2.2] : 以
为自变量的函数
在
的导数。将这个函数视作复合函数:
其中
是
。它的雅克比是
矩阵(
元列向量)。容易看出这个雅克比矩阵就是向量
。根据链式法则,有:
所以
对
在
点的导数,也就是
在
点沿
方向的方向导数,是
在
的梯度
向
方向做投影的长度。梯度向某方向的投影的长度等于函数沿着该方向的方向导数。如果梯度向坐标轴
做投影,得到的是梯度的第
个元素,就是函数对第
个自变量的偏导数,也是函数沿着坐标轴
的方向导数。
注意:
注意这里省略了梯度的下标,表示可以是任一点的梯度。第二个等号是因为
是单位向量,长度(
模)为 1 。
是梯度与
之间的夹角。可见当夹角为
,即
与梯度同方向时
方向导数最大(
正),增速最高。在与梯度相反的方向上
的方向导数最小(
负),下降最快。这也就是梯度下降法的依据。在与梯度垂直的方向上
的方向导数为
,即增速为
(
注意这是瞬时性质)。如果
在某一点的梯度本身是
向量,那么
沿任何方向的方向导数(
瞬时增速)都为
。梯度为
的点是
点的驻点(stationary point ,
又叫 critical point 。
不是拐点,虽然现在新闻中有很多误用)。局部极小 / 极大点、鞍点都是驻点。
总结一下:
-
在某点的导,是一个
的矩阵(
雅克比矩阵),该矩阵的转置是一个
元向量,是
在该点的梯度。
-
在某点沿着某个方向的瞬时变化率是
在该方向的方向导数,
在某点的各个偏导数是沿着各个坐标轴方向的方向导数。
-
在某点沿某方向的方向导数等于
在该点的梯度向那个方向的投影长度,沿着梯度本身方向,方向导数最大。沿着梯度相反方向,方向导数最小。垂直于梯度方向,方向导数为
。
三、二阶导
二阶导是导函数的导函数。函数
的导函数是将
映射到
的函数。不必在乎因变量是横排还是竖排,总之是
个数。也就是说
的导函数是一个
的函数。
的二阶导应该是一个
的矩阵,其第
列由
的各分量对
的偏导构成:
称为
在
的赫森矩阵。
表示
对
的偏导数再对
做偏导。有一个结论:如果
和
都在
是连续的,那么它们相等。也就是说在满足连续性的前提下,二阶偏导不依赖求偏导的次序。以下我们都假设满足连续性。如此
是对称矩阵:
。
的方向导数是
在某方向的变化率。那么如何求得
在某方向上的二阶变化率 —— 二阶导呢?
[3.2] 极限的分子上相减的两项是
在
和
两个点上的沿
方向的方向导数。该极限就是
方向上的二阶导。同时这个式子也是
作为
的函数,在
的导数。仍将其视为一个复合函数:
这是一个
的函数。对这个函数运用链式法则求导,得到:
所以函数
在某点沿着
方向的二阶导数是
在该点的赫森矩阵
的一个二次型
。
刚才说
是一个对称矩阵。对称矩阵可以进行谱分解(spectrum decomposition):
是一个
的对角阵,对角线元素是
的
个特征值
。
是正交矩阵
。它的列是
的
个特征值对应的
个特征向量。它们构成
维空间的一组基。对于任意一个方向
,其方向上
的二阶导是:
如果:
-
半正定(
特征值都非负),那么在
朝任何方向
的二阶导数都是非负;
-
正定(
特征值都为正),那么在
朝任何方向
的二阶导数都是正数;
-
负定或半负定与正定或半正定情况下类似;
-
不定,有些方向上
二阶导为正,有些方向上
二阶导为负。
梯度和赫森矩阵是分析函数直到二阶的特性的工具。看一个二次函数:
的梯度是
,赫森矩阵在所有点都是
。假设
是正定的。
的唯一驻点是
。
在任何一点朝任何方向的二阶导数都为正,方向导数都要变大。所以
是唯一的驻点,是
唯一的全局最小点。
二次型
有这样的性质:
使
达到最大的单位向量是
的最大特征值
对应的单位特征向量
。在与
正交的前提下使
达到最大的单位向量是
的第二大特征值
对应的单位特征向量
。依此类推。
看以下这个二次函数:
图 1
它的式子是:
原点是它的唯一驻点(全局最小点)。它的赫森矩阵是
。
的最大特征值是
,特征方向是
轴;最小特征值是
,特征方向是
轴。所以在原点可以看到:沿
轴方向图形向上弯曲最强烈;沿
方向图形向上弯曲最平缓。
梯度下降法只基于函数一阶信息,有时候做不出最佳选择。因为梯度反方向虽然是函数下降最快的方向,但是如果这个方向上二阶导数很大,方向导将很快上升。沿着该方向前进一小步也许函数值不降反升。接下来我们看一看利用了函数二阶信息的优化算法。
四、牛顿法
在某一点
可以对函数
进行二阶泰勒展开(taylor expansion):
上式最后的余项
是
的高阶无穷小,在极靠近
的区域可将其忽略。也就是说在极其靠近
的区域内可以用一个二次函数近似表示
。如果这个二次函数的赫森矩阵
是正定的,那么该二次函数具有唯一全局最小点,也就是它唯一的驻点:
在这个新的点
上重复这个过程。这就是寻找函数最优点的牛顿法。用语言描述就是:在任意起始点附近用二次函数拟合原函数。计算该二次函数的最小点。再以这个最小点为起始点重复此过程。牛顿法迭代公式如下:
如果
本身就是一个凸二次函数(
赫森矩阵正定),那么在任何一点对
进行二阶泰勒展开得到的就是
本身。在这种情况下牛顿法一步就能找到
的全局最小点。
注意,对于二次函数,只有当赫森矩阵正定时,才存在唯一全局最小点,故上述讨论,都是在赫森矩阵正定的前提下。运用牛顿法需要求赫森矩阵的逆,其计算量有时是不可承受的。人们提出了一些拟牛顿法,例如 BFGS ,LBFGS 等,本文不做介绍。
五、共轭方向法
对于一个二次函数
,其赫森矩阵为
。选一个随机的起始点
和一个随机的起始方向
(
,
用一个单位向量来指示方向)。令自变量沿着
变化:
将
代入
在
处的二阶泰勒展开。因为
是二次函数,该展开就是
本身,所以第二个等号成立。
是关于
的二次函数。它有全局最小点:
因为
是
沿着
方向的最小点,所以在
点
沿
方向的导数为
。即:
现在假设有另一方向
满足:
称
与
关于
共轭(conjugate)。我们看当自变量从任一点出发沿
运动时
沿着
方向的导数的变化率(
二阶导)如何:
上式第一步对一个三层的复合函数运用了链式法则。[5.4] 表明自变量沿着
方向运动时,
沿
方向的二阶导为
。也就是
沿着
方向的导数无变化。那么如果从 [5.2] 中的
出发沿着
运动,则在此运动过程中
沿着
方向的导数保持为
。也就是运动过程中,沿着
方向
保持是最小点。所以可以首先沿着
使
达到该方向的最小,之后沿着
寻找最小,同时能保持
沿
方向是最小。
之后可以再寻找一个方向
与
和
关于
都共轭。那么
沿着
运动时,在
和
方向上二阶导都为
。如果之前已经沿着
和
方向找到了
在相应方向的最小,则沿着
寻找时在
和
方向
仍保持最小。
如果有
个方向
关于
是两两共轭的,那么它们是线性无关的。因为假如存在一组系数
满足:
那么对任何一个
有:
正定,则
。于是必有
。这对所有
都成立,所以
线性独立。它们构成
的一组基。
当沿上述
个共轭方向依次完成最小值搜索,就沿着
的所有方向搜索到了
的全局最小点。这就是共轭方向法。对于凸二次函数(
赫森矩阵正定),共轭方向法用
步找到全局最小点。对于图 1 中的二次函数,若选择
轴作为第一个方向,将沿着
轴运动到
轴上。 然后以
轴为第二个共轭方向运动到原点 —— 全局最小点。
如果
是
的标准正交基,任取其中两个,有:
所以
就是一组关于
的共轭方向。
对非二次函数
仍然可以运用共轭方向法。计算某一点
的赫森矩阵得到
个共轭方向(
赫森矩阵的特征向量),进行
次线性搜索,找到一个新的点
,就是
在
点的近似二次函数的全局最小点(
牛顿法可以一步找到它)。然后以
为初始点重复本过程。
共轭方向法可以选择任意
个共轭方向,不一定是
的
个特征向量。比如可以从任一点选择该点的梯度反方向。这就是共轭梯度法,本文不详述。
可见,基于二阶的优化算法利用了函数局部的二阶特性。相比梯度下降法,它们参考了更多的信息。但是计算赫森矩阵的计算量是巨大的。虽然有一些二阶方法避免了赫森矩阵的计算,但是对于像神经网络训练这样的复杂非凸优化问题,二阶方法并不能保证有更好的优化性能。目前在深度学习中基于梯度的方法仍是主流。
六、参考书目
最优化导论 (豆瓣)book.douban.com
深度学习 (豆瓣)book.douban.com