为了清晰理解,先对这几个术语对应的具体内容形式做了一个总结,如下:
导数:函数(因变量对应实数值)
偏导数:函数(因变量对应实数值)
梯度:向量(向量的每一维对应偏导数)
方向导数:函数(因变量对应实数值)
梯度下降:一种优化方法
二阶导数:函数(因变量对应实数值)
二阶方向导数:函数(因变量对应实数值)
然后开始对这几个术语进行详细解释~
导数
假设函数 ,其中
和
都是实数。(此时函数只有一个输入)
那么这个函数的导数记做 或者
。
偏导数
如果函数有多个输入,就需要引入偏导数的概念。
假设函数 ,其中
是实数,
是向量。(此时函数有多个输入)
那么 就是偏导数。
有多少维,函数
就有多少个偏导数。
梯度
梯度是所有偏导数拼接成的一个向量。
假设函数 ,其中
是实数,
是向量。(此时函数有多个输入)
那么 就是偏导数。
有多少维,函数
就有多少个偏导数。 所有的偏导数拼起来形成一个向量,就是梯度,记做
。
方向导数
在计算偏导数(自变量是多维时)时,实际上是固定自变量其他坐标轴不变,计算沿着某个自变量坐标轴的方向的导数,即偏导数。假设函数 ,固定坐标轴
不变,
在坐标轴
方向上的导数就是
。
那么函数沿着自变量维度空间内任意方向的导数,就是方向导数。我们可用数学表达式的形式表示一下方向导数的概念:
假设用 表示任意方向(
设为单位向量,并且
的维度和自变量的维度相等)。根据导数的定义,函数
在
方向上的方向导数为
,其中
是梯度。(推导可参考:方向导数公式的证明)
梯度下降
假设函数 。为了最小化
,需要找到一个方向,使得沿着这个方向
下降的最快。
当某个方向的方向导数为正时,沿着这个方向前进, 会增大。方向导数越大,
增大越快。
当某个方向的方向导数为负时,沿着这个方向前进, 会减小。 方向导数越小,
减小越快。
当某个方向的方向导数为 0 时,沿着这个方向前进, 不变。
使得 下降的方向是方向导数为负的方向。方向导数为负的方向中使得
下降的最快的方向是方向导数最小的方向。下式为方向导数的计算:
式中的 为
和
之间的夹角,将
为
时,方向导数达到最小。此时
和
反方向,即沿着与梯度相反的方向,
下降的最快。
几何解释(穿插)
自变量维度为一维情况下:
假设函数 ,并且此时位于 A (1,1)点,有两个方向可供选择,
和
。沿着
方向移动的话
变大,沿着
方向移动的话
变小。为使
下降的最快,需沿着
方向移动。
自变量维度为二维情况下:
假设函数 ,并且此时位于 A (2,1,3)点,有二维平面内无数个方向可供选择。其中
是梯度的方向,沿着
也就是图中的
的方向移动,使得
下降的最快。
图中, 是梯度向量,
是与梯度向量方向相反的向量。粉色的平面是梯度向量的垂面,荧光绿色的线是粉色平面和蓝色平面相交的线。A点顺着荧光绿色的线往
方向走,A点走一步,就会使得
下降。A点走一步迈的步子的大小,是学习率,学习率大,迈的步子大,学习率小,迈的步子小。
二阶导数/偏导数
当函数的自变量是一维时,二阶导数是导数的导数,函数只有一个二阶导。假设函数 ,其中
和
都是实数。(此时函数只有一个输入)。那么这个函数的导数记做
或者
,二阶导数记做
或者
。
当函数的自变量是 维时,二阶导数是偏导数的偏导数,函数有
个偏导数。假设函数
,其中
是实数,
是向量。(此时函数有多个输入)。那么
就是偏导数。
有多少维,函数
就有多少个偏导数。二阶偏导数记做
。二阶偏导数可以组成一个
的方阵(Hessian矩阵)。
二阶方向导数
函数沿着自变量维度空间内任意方向的二阶导数,就是二阶方向导数,我们可以根据一阶方向导数推导出二阶方向导数。
假设用 表示任意方向(
设为单位向量,并且
的维度和自变量的维度相等)。我们知道,函数
在
方向上的一阶方向导数为
,其中
是梯度。此时假设自变量的维度是2,假设
为
,
为
。那么可把
展开为
,这个式子就是一阶方向导数,可简化为
。接着求一阶方向导数的方向导数就是二阶方向导数:
二阶方向导数可用矩阵的形式表示为 ,其中
为函数
的 Hessian 矩阵。
如有不正确的地方欢迎各位大佬留言吖~