标题取得有点宽泛,本次主要探讨:在梯度下降中雅可比矩阵是用来干嘛的以及我们为什么要在反向传播里使用雅可比矩阵
雅可比矩阵与线性近似
一元函数的线性近似
现在有一个共识:函数在某一点处的导数是它在这一点处的切线的斜率
设有一点x*,在x *附近构造函数f(x)的一个近似:
其中,f\'(x*)是函数在x * 处的导数。
该近似函数其实是以f\'(x*)为斜率的直线,直线在x *处于原函数重合,具有相同的斜率,故称其是原函数在x *处的线性近似
当离开x *这点时,线性近似就与原函数不完全吻合了。那么离开之后的变化形式是什么样的呢?
这里直接说结果(跳过格式整理和推导):
线性近似的误差与自变量之差的比值随着x趋近于x * 而趋近于0。
即:随着自变量向x *靠近,线性近似与原函数的误差趋近于0。你可能已经看出来了,线性近似的误差就是自变量之差在x趋近于x *时的高阶无穷小
那么我们现在可以知道,一元函数在某位置可导的定义:该一元函数在某位置可被直线‘很好的’近似
多元函数的线性近似
对应到多元函数,我们有以下式子:
多元函数在w *处的梯度▽f(w *)的对应概念是一元函数f(x)在x *处的导数 f\'(x *),同样表示对于原函数的线性近似。
对多元函数来说,
若自变量是二维向量,那么近似函数的图像就是三维空间(以函数值作为第三维)中的平面;
若自变量是n维向量,则近似函数就是n+1维空间中的超平面;
我们可以做如下的想象:
在一个类似于山谷的图形上,有一个点w *,由二维向量表示,在这个位置时,“山谷”函数可以被平面很好的拟合,这个平面就是原函数的线性近似。
当我们远离w *时,线性近似与原函数的误差就开始变大。换句话说,离w *越近线性近似误差越小,平面越能拟合原函数。
假设我们现在在w1处,此时该处的线性近似肯定没有w *处的线性近似误差小,因此我们要向w * 靠近
怎么靠近?在w1处求原函数的方向导数,此时因为原函数是三维的,那么方向导数的结果会指向三个方向,我们知道在方向导数最大的方向上函数变化最快。此时变化最快的方向一定是指向w * 方向的。
其余方向的梯度可以类比理解为泰勒展开中的次要项,它们虽然有值但很小,不能决定总体的变化(因此一般会舍去),因此线性近似只能是近似而不能是拟合,它有一个学名:仿射变换
再进一步,如果此时因变量也变成多个值(即向量),我们仍可以在w * 附近构建原函数的近似
此时我们对每个因变量在w * 处都求一个方向导数,这些方向导数会构成一个矩阵,这个矩阵就是雅可比矩阵
雅可比矩阵的每一行是原函数的分量的梯度,即
因此之前构建的映射是一个多对多的线性映射,其与原函数的误差是一个向量,这个误差向量的每个分量都是自变量之差的高阶无穷小。
总之,我们有了一个可以近似拟合多元函数的方法,而这个方法的实现依赖于雅克比矩阵的应用,因此我们可以说:雅可比矩阵蕴含着映射的局部线性近似特征(信息)。
雅可比矩阵与反向传播
有了之前的基础,我们似乎可以讨论为什么要在梯度下降的过程中使用雅可比矩阵了
简述一下损失函数的优化过程:
首先,梯度下降的过程是在寻找一个最优点,也就是“山谷函数的最低点”,这要使用梯度实现,而在寻找的过程中,更新更靠近最优点的位置点这件事是由反向传播实现的。
下面以计算图的反向传播过程作为举例进行说明
从计算图中作为结果节点的节点开始,该节点是由正向传播计算得到的,我们计算该节点对于自己的雅克比矩阵,(结果是一个单位矩阵)
然后再计算出结果节点对它的父节点(也就是上一个或者多个节点)的雅可比矩阵。
将这两个矩阵传给父节点,父节点用这两个矩阵相乘得到自己对于结果节点的雅可比矩阵,
我们把父节点的上一个节点称为祖父节点,
然后父节点在计算自己与祖父节点的雅可比矩阵,
将这两个矩阵传给祖父节点,重复上述过程。这就是计算图中反向传播的过程。
由之前关于雅可比矩阵与线性近似的讨论我们可以进一步理解计算图中反向传播的过程:
因为携带了对多元函数(也就是损失函数)做线性近似的局部特征,因此可以由雅克比矩阵作为依据来更新参与训练的参数节点的值以达到让其更加拟合原函数的目的(这个原函数就是损失函数)
说白了,雅克比矩阵就是告诉模型要如何更新并且更新多少参数值的一个工具