微积分-极限、导数、偏导数

本文从极限入手,一步步讲解到导数、偏导数、梯度,是神经网络反向传播的核心,后续在此基础上进一步展开讲解到泰勒公式,泰勒公式其实就是使用多阶导数去接近原始函数,就是韩式表达式的分解表示,类似与神经网络向不同层进行后向传播

什么是极限?

  • 微积分的基础概念,数学中的“极限”指:某一个函数中的某一个变量,此变量在变大(或者变小)的永远变化的过程中,逐渐向某一个确定的数值 A 不断地逼近而“永远不能够重合到 A”(“永远不能够等于 A,但是取等于 A‘已经足够取得高精度计算结果)的过程中

    ε>0,δ>0,x[0<xx0<δf(x)A<ε]\forall \varepsilon>0, \quad \exists \delta>0, \quad \forall x\left[0<\left|x-x_{0}\right|<\delta \Rightarrow|f(x)-A|<\varepsilon\right]

  • 给定一个正数ε\varepsilon,它可以取任意大也可以取任意小;存在一个正数δ\delta ;当xxx0x_0的距离小于δ\delta时;f(x)f(x)的值与数AA之间的距离将始终小于ε\varepsilon,无论它取多么小。这时候,我们称当xx趋向于x0x_0时,函数f(x)f(x)趋向于AA,即称函数f(x)f(x)x0x_0处的极限为AA
  • 无穷小:无穷小最早指的是比零大,但绝对值小于任意正实数的“数”。 在极限被定义的情况下,无穷小的精确定义终于出现了,满足limxx0f(x)=0\lim _{x \rightarrow x_{0}} f(x)=0 f(x)f(x) xx0x \rightarrow x_0 的无穷小
  • 导数(derivative) : 在无穷小的基础上,我们定义出了导数,f(x)=limΔx0f(x+Δx)f(x)Δxf^{\prime}(x)=\lim _{\Delta x \rightarrow 0} \frac{f(x+\Delta x)-f(x)}{\Delta x}
  • 连续性: 在无穷小的基础上,定义函数的连续性,limxx0f(x)=f(x0)\lim _{x \rightarrow x_{0}} f(x)=f\left(x_{0}\right)

什么是上确界与下确界?

  • 上/下确界,数列最小的上界或最大下界
  • An=1n,nZnA_{n}=\frac{1}{n}, n \in \mathbb{Z}_{n} ,数列限制在(0,1](0,1],因此大于等于 1 的数都是AnA_n的上界,但是最小的上界为 1,也即上确界为 1;小于等于 0 的所有实数都是AnA_n的下界,但是最大的下界是 0,也即下确界为 0。上下确界是为了确定整个数列所有元素的界限

什么是积分?

  • 积分是微积分学与数学分析里的一个核心概念。通常分为定积分和不定积分两种。直观地说,对于一个给定的正实值函数 f (x), f (x)在一个实数区间[a, b]上的定积分为

    abf(x)dx\int_{a}^{b} f(x) \mathrm{d} x

  • 可以在数值上理解为在OxyO_{xy}坐标平面上,由曲线(x,f(x)),直线 x=a、x=b 以及 x 轴围成的曲边梯形的面积值

什么是导数(derivative)?

  • 导数 f′(x)解释为 f(x)相对于 x 的瞬时(instantaneous)变化率。所谓的瞬时变化率是基于 x 中的变化 h,且 h 接近 0
  • f 的导数被定义为

    f(x)=limn>0f(x+h)f(x)hf'(x)=lim_{n->0}\frac{f(x+h)-f(x)}{h}

  • 如果这个极限存在。如果 f′(a)存在,则称 f 在 a 处是可微(differentiable)的。如果 f 在一个区间内的每个数上都是可微的,则此函数在此区间中是可微的

什么是偏导数?

  • 多变量函数相对于某个变量的导数(derivative)
  • 设 y=f(x1,x2,…,xn)是一个具有 n 个变量的函数。y 关于第 i 个参数 xi 的偏导数(partialderivative)为

    yxi=limh>0f(x1,,xi+h,,xn)f(x1,,xi,,xn)h\frac {\partial y}{\partial x_i}=lim_{h->0}\frac{f(x_1,…,x_i+h,…,x_n)-f(x_1,…,x_i,…,x_n)}{h}

  • 为了计算 ∂y/∂xi,我们可以简单地将 x1,…,xi−1,xi+1,…,xn 看作常数,并计算 y 关于 xi 的导数

导数和偏导数有什么区别?

  • 导数和偏导没有本质区别,如果极限存在,都是当自变量的变化量趋于 0 时,函数值的变化量与自变量变化量比值的极限
  • 一元函数,一个yy对应一个xx,导数只有一个
  • 二元函数,一个zz对应一个xx和一个yy,有两个导数:一个是zzxx的导数,一个是zzyy的导数,称之为偏导
  • 求偏导时要注意,对一个变量求导,则视另一个变量为常数,只对改变量求导,从而将偏导的求解转化成了一元函数的求导

什么是梯度(gradient)?

  • 梯度是一个向量,其分量是多变量函数相对于其所有变量的偏导数 ,梯度指向最高速上升的方向
  • 设函数f:Rnf:R_n的输入是一个 n 维向量x=[x1,x2,,xn]x=[x1,x2,…,xn]^⊤,并且输出是一个标量。函数 f(x)相对于 x 的梯度是一个包含 n 个偏导数的向量

    xf(x)=[yx1,yx2,,yxi]\nabla_xf(x)=[\frac {\partial y}{\partial x_1},\frac {\partial y}{\partial x_2},…,\frac {\partial y}{\partial x_i}]

什么是复合函数?

  • 函数z=(2y)2z=(2-y)^2 是函数u=2yu=2-y 和函数 z=u2z=u^2 的复合函数

什么是链式法则?

  • 复合函数的求导公式也称为链式法则

    dydx=dydududx\frac{dy}{dx}=\frac{dy}{du}\frac{du}{dx}

单变量函数链式法则?

  • 例子: 对 sigmoid 与 wx+b 的复合函数进行求导
    • 前向推导

      u=wx+by=11+eu\begin{array}{ll}\quad u=w x+b \\ y=\frac{1}{1+e^{-u}}\end{array}

    • sigmoid 函数对 u 求导

      yu=y(1y)\frac{\partial y}{\partial u}=y(1-y)

    • wx+b 求导

      ux=w\frac{\partial u}{\partial x}=w

    • 链式法则

      yx=yuux=y(1y)w=11+e(wx+b)(111+e(wx+b))\frac{\partial y}{\partial x}=\frac{\partial y}{\partial u} \frac{\partial u}{\partial x}=y(1-y) w=\frac{1}{1+e^{-(w x+b)}}\left(1-\frac{1}{1+e^{-(w x+b)}}\right)

多变量函数链式法则?

  • 在多变量函数的情况下,链式法则的思想也同样适用。只要像处理分数一样对导数的式子进行变形就行了

什么是泰勒公式?

  • 如果函数满足一定的条件,泰勒公式可以用函数在某一点的各阶导数值做系数构建一个多项式来近似表达这个函数
  • 例子:拟合复杂函数y=exy=e^x ,当 x=0 时,ex=1e^x=1 ,所以所以不妨拿一个"当 x=0 时, y 值也为 1 的函数"来近似试试, 比如说: y = 1
  • 在 x=0 这一点上, 两个函数的值都是 1, 但在 x=0 的邻域, 这两个函数的图像一点都不相似, 所以这个近似效果一般。 导数可以反应函数在某一点的变化率, 如果两个函数在 x=0 处, 除了 y 值相同, 变化率也相同, 那两个函数应该会更相似一些,(ex)=ex(e^x)'=e^x ,当 x=0 时,导数为 1,新的近似函数在 x=0 处的导数也为 1, 比如说这个函数: y = 1 + x
  • 两个函数的图像更接近了, 看来这个思路是正确的, 那沿着这个思路, 如果让近似函数在 x=0 处的二阶导, 和exe^x在 x=0 处的二阶导也相同呢…即在 x=0 处, 两个函数变化率的变化率也相同。exe^x 在 x=0 处的导数也为 1,选定近似函数y=1+x+x2/2y=1+x+x^{2} / 2
  • 按照这个思路, 来试试三阶导,选择近似函数y=1+x+x2/2+x3/6y=1+x+x^{2} / 2+x^{3} / 6
  • 总结,使用多项式近似原始函数的形式为

    f(x)f(θ)+f(θ)x+f(θ)2!x2++f(n)(θ)n!xnf(x) \approx f(\theta)+f^{\prime}(\theta) x+\frac{f^{\prime \prime}(\theta)}{2 !} x^{2}+\ldots+\frac{f^{(n)}(\theta)}{n !} x^{n}

  • 麦克劳林公式: 以上公式加上佩亚诺余项, 左右就相等了,这就是完整的麦克劳林公式

    f(x)=f(θ)+f(θ)x+f(θ)2!x2++f(n)(θ)n!xn+(xn)f(x)=f(\theta)+f^{\prime}(\theta) x+\frac{f^{\prime \prime}(\theta)}{2 !} x^{2}+\ldots+\frac{f^{(n)}(\theta)}{n !} x^{n}+\circ\left(x^{n}\right)

  • 佩亚诺余项: 在麦克劳林公式中, 佩亚诺余项(xn)\circ\left(x^{n}\right)是个x0\mathbf{x} \rightarrow \mathbf{0}xnx^{n}高阶的无穷小, 这也就说明, 在 x=0 附近, 用麦克劳林公式产生的多项式函数(不含余项部分)去近似原始函数时, x 离 0 越近的地方, 近似的误差越小, 近似效果越好, x 离 0 越远的地方, 近似的误差越大, 近似效果越坏)
  • 泰勒公式:如果函数f(x)f(x)x0x_0 处具有 n 阶导数,那么x0x_0存在一个邻域,对于该邻域内的任一 x,有

    f(x)=f(x0)+f(x0)(xx0)+f(x0)2!(xx0)2++f(n)(x0)n!(xx0)n+Rn(x),Rn(x)=o((xx0)n).\begin{array}{} f(x)=f\left(x_{0}\right)+f^{\prime}\left(x_{0}\right)\left(x-x_{0}\right)+\frac{f^{\prime \prime}\left(x_{0}\right)}{2 !}\left(x-x_{0}\right)^{2}+\cdots+\frac{f^{(n)}\left(x_{0}\right)}{n !}\left(x-x_{0}\right)^{n}+R_{n}(x), \\ R_{n}(x)=o\left(\left(x-x_{0}\right)^{n}\right) . \end{array}

  • 麦克劳林公式只是泰勒公式在x0=0x_0=0时的特殊情况, 现在抛开x0=0x_0=0, 让x0x_0可以是函数定义域中的任意值(只要在x0x_0处 n 阶可导就行), 就变成了泰勒公式

什么是 Hessian 矩阵(黑塞矩阵) ?

  • 黑塞矩阵(Hessian Matrix),又译作海森矩阵、海瑟矩阵、海塞矩阵等,是一个多元函数的二阶偏导数构成的方阵,描述了函数的局部曲率,由矩阵形式的泰勒公式
  • 黑塞矩阵常用于牛顿法解决优化问题,利用黑塞矩阵可判定多元函数的极值问题
  • 一元函数的泰勒展开:

    f(x)=f(x(0))+f(x(0))Δx+12f(x(0))(Δx)2+,where Δx=xx(0),Δx2=(xx(0))2f(x)=f\left(x^{(0)}\right)+f^{\prime}\left(x^{(0)}\right) \Delta x+\frac{1}{2} f^{\prime \prime}\left(x^{(0)}\right)(\Delta x)^{2}+\cdots \text{,where } \Delta x=x-x^{(0)}, \Delta x^{2}=\left(x-x^{(0)}\right)^{2}

  • 二元函数的泰勒展开:f(x1,x2)f(x_1,x_2)X(0)(x1(0),x2(0))X^{(0)}\left(x_{1}^{(0)}, x_{2}^{(0)}\right) 处的泰勒展开
    • 展开如下,其中Δx1=x1x1(0),Δx2==x2x2(0)\Delta x_{1}=x_{1}-x_{1}^{(0)}, \Delta x_{2}==x_{2}-x_{2}^{(0)}
    • f(X)=f(X(0))+(fx1,fx2)X(0)(Δx1Δx2)+12(Δx1,Δx2)(2fx122fx1x22fx2x12fx22)X(0)(Δx1Δx2)+f(X)=f\left(X^{(0)}\right)+\left(\frac{\partial f}{\partial x_{1}}, \frac{\partial f}{\partial x_{2}}\right)_{X^{(0)}}\left(\begin{array}{c} \Delta x_{1} \\ \Delta x_{2} \end{array}\right)+\left.\frac{1}{2}\left(\Delta x_{1}, \Delta x_{2}\right)\left(\begin{array}{cc} \frac{\partial^{2} f}{\partial x_{1}^{2}} & \frac{\partial^{2} f}{\partial x_{1} \partial x_{2}} \\ \frac{\partial^{2} f}{\partial x_{2} \partial x_{1}} & \frac{\partial^{2} f}{\partial x_{2}^{2}} \end{array}\right)\right|_{X^{(0)}}\left(\begin{array}{l} \Delta x_{1} \\ \Delta x_{2} \end{array}\right)+\cdots

    • 也即是

      f(X)=f(X(0))+f(X(0))TΔX+12ΔXTG(X(0))ΔX+\\ f(X)=f\left(X^{(0)}\right)+\nabla f\left(X^{(0)}\right)^{T} \Delta X+\frac{1}{2} \Delta X^{T} G\left(X^{(0)}\right) \Delta X+\cdots

    • 黑塞矩阵:G(X(0))G\left(X^{(0)}\right)f(x1,x2)f(x_1,x_2)X(0)X^{(0)} 点处的黑塞矩阵。它是由函数f(x1,x2)f(x_1,x_2)X(0)X^{(0)} 点处的二阶偏导数所组成的方阵

      G(X(0))=(2fx122fx1x22fx2x12fx22)X(0),ΔX=(Δx1Δx2)G\left(X^{(0)}\right)=\left.\left(\begin{array}{cc} \frac{\partial^{2} f}{\partial x_{1}^{2}} & \frac{\partial^{2} f}{\partial x_{1} \partial x_{2}} \\ \frac{\partial^{2} f}{\partial x_{2} \partial x_{1}} & \frac{\partial^{2} f}{\partial x_{2}^{2}} \end{array}\right)\right|_{X^{(0)}}, \Delta X=\left(\begin{array}{c} \Delta x_{1} \\ \Delta x_{2} \end{array}\right)

  • 多元函数的黑塞矩阵:将以上二元函数的黑塞矩阵扩展到多元

    G(X(0))=[2fx122fx1x22fx1xn2fx2x12fx222fx2xn2fxnx12fxnx22fxn2]X(0)G\left(X^{(0)}\right)=\left[\begin{array}{cccc} \frac{\partial^{2} f}{\partial x_{1}^{2}} & \frac{\partial^{2} f}{\partial x_{1} \partial x_{2}} & \cdots & \frac{\partial^{2} f}{\partial x_{1} \partial x_{n}} \\ \frac{\partial^{2} f}{\partial x_{2} \partial x_{1}} & \frac{\partial^{2} f}{\partial x_{2}^{2}} & \cdots & \frac{\partial^{2} f}{\partial x_{2} \partial x_{n}} \\ \vdots & \vdots & \ddots & \vdots \\ \frac{\partial^{2} f}{\partial x_{n} \partial x_{1}} & \frac{\partial^{2} f}{\partial x_{n} \partial x_{2}} & \cdots & \frac{\partial^{2} f}{\partial x_{n}^{2}} \end{array}\right]_{X^{(0)}}

什么是 Jacobian 矩阵(雅可比矩阵)?

  • 雅可比矩阵是一阶偏导数以一定方式排列成的矩阵,其行列式称为雅可比行列式。雅可比矩阵的重要性在于它体现了一个可微方程与给出点的最优线性逼近
  • 例子:现有以下行列式

    {y1=f1(x1,,xn)y2=f2(x1,,xn)ym=fm(x1,,xn)\left\{\begin{array}{l} y_{1}=f_{1}\left(x_{1}, \ldots, x_{n}\right) \\ y_{2}=f_{2}\left(x_{1}, \ldots, x_{n}\right) \\ \cdots \\ y_{m}=f_{m}\left(x_{1}, \ldots, x_{n}\right) \end{array}\right.

  • 雅可比矩阵是一个 m×n 矩阵

    J=[fx1fxn]=[f1x1f1xnfmx1fmxn]\mathbf{J}=\left[\begin{array}{ccc} \frac{\partial \mathbf{f}}{\partial x_{1}} & \cdots & \frac{\partial \mathbf{f}}{\partial x_{n}} \end{array}\right]=\left[\begin{array}{ccc} \frac{\partial f_{1}}{\partial x_{1}} & \cdots & \frac{\partial f_{1}}{\partial x_{n}} \\ \vdots & \ddots & \vdots \\ \frac{\partial f_{m}}{\partial x_{1}} & \cdots & \frac{\partial f_{m}}{\partial x_{n}} \end{array}\right]

什么是雅可比行列式?

  • 在向量分析中,它是以 n 个 n 元函数的偏导数为元素的行列式
  • 在雅可比矩阵 中,如果 m = n, 可以定义雅可比矩阵J\mathbf{J}的行列式,也就是雅可比行列式(Jacobian determinant)

Hessian 矩阵(黑塞矩阵)和 Jacobian 矩阵(雅可比矩阵) 的差异?

  • 雅可比矩阵是一阶导数,告诉我们函数如何变化,如果 f 是标量的话,Jacobian 就是一个矢量,指向 f 增大最快的方向。Jacobian 为零的点叫临界点,可能是最大、最小或者鞍点
  • Hessian 矩阵(黑塞矩阵) 是二阶导数,相当于曲率,告诉我们函数的凹凸性质,详细查看:什么是驻点、极值?

Hessian 矩阵(黑塞矩阵)的特征值的含义?

  • 形容其在该点附近特征向量方向的凹凸性,特征值越大,凸性越强

什么是费马定理?

  • 对于可导函数,在极值点处导数必定为 0f(x)=0f'(x)=0
  • 对于多元函数,则是梯度为 0 f(x)=0\nabla f(x)=0

什么是驻点、极值?

  • 导数(derivative) 为 0 的点称为驻点。需要注意的是,导数为 0 只是函数取得极值的必要条件而不是充分条件,它只是疑似极值点,是不是极值,是极大值还是极小值,还需要看更高阶导数
  • 对于一元函数,假设 x 是驻点
    • 如果 f(x)>0f''(x)>0,则在该点处取极小值
    • 如果 f(x)<0f''(x)<0,则在该点处取极大值
    • 如果f(x)=0f''(x)=0,还要看更高阶导数
  • 对于多元函数,假设 x 是驻点
    • 当 Hessian 矩阵(黑塞矩阵) 的特征值全部为正值时(正定),有该函数的局部最小值
    • 当 Hessian 矩阵(黑塞矩阵) 的特征值全部为负值时(负定),有该函数的局部最大值
    • 当 Hessian 矩阵(黑塞矩阵) 的特征值为负值和正值时,有函数有一个鞍点

如何求解驻点?

  • 对于一元函数,先求导数,然后解导数为 0 的方程即可找到所有驻点
  • 对于多元函数,对各个自变量求偏导数,令它们为 0,解方程组,即可达到所有驻点

什么是鞍点?

  • 指函数的所有梯度都消失但既不是全局最小值也不是局部最小值的任何位置

什么是拉格朗日乘数法?

  • 费马定理给出的不带约束条件下的函数极值的必要条件。对于一些实际应用问题,一般还带有等式或者不等式约束条件。对于带等式约束的极值问题,经典的解决方案是拉格朗日乘数法
  • 机器学习中用到拉格朗日乘数法的地方有:1)主成份分析(PCA)算法;2)线性判别分析(LinearDiscriminantAnalysis,LDA);3)Isomap 算法;4) 隐马尔可夫模型