精华内容
下载资源
问答
  • 如果函数足够平滑的话,在已知函数在某一点的各阶数值的情况之下,泰勒公式可以用这些数值做系数构建一个多项式来近似函数在这一点的邻域中的值。泰勒公式还给出了这个多项式和实际的函数值之间的偏差泰勒公式,...

    今天带大家玩下数学中的编程,难度可能有点大,数学不好的人请离开。

    泰勒公式

    大家知道泰勒公式吗?对它的理解有多深呢?数学中,泰勒公式是一个用函数在某点的信息描述其附近取值的公式。如果函数足够平滑的话,在已知函数在某一点的各阶导数值的情况之下,泰勒公式可以用这些导数值做系数构建一个多项式来近似函数在这一点的邻域中的值。泰勒公式还给出了这个多项式和实际的函数值之间的偏差

    泰勒公式,也称泰勒展开式。是用一个函数在某点的信息,描述其附近取值的公式。如果函数足够平滑,在已知函数在某一点的各阶导数值的情况下,泰勒公式可以利用这些导数值来做系数,构建一个多项式近似函数,求得在这一点的邻域中的值。

    就是我不知道那函数表达式,我想通过泰勒公式来计算值。

    公式

    其中,

    表示f(x)的n阶导数,等号后的多项式称为函数f(x)在x0处的泰勒展开式,剩余的

    是泰勒公式的余项,是

    的高阶无穷小。

    有名的泰勒级数:

    下面咱们来用泰勒公式模拟

    函数

    代码编写import numpy as np

    import math

    import matplotlib as mpl

    import matplotlib.pyplot as plt

    def calc_e_small(x):

    '''

    计算前10个

    :param x:

    :return:

    '''

    n = 10

    f = np.arange(1, n+1).cumprod() #阶乘

    b = np.array([x]*n).cumprod() # 算的是x的n次方

    # 这个就是公式

    return np.sum(b / f) + 1

    大家可能对np.cumprod()函数不知道,就是计算阶乘的

    但是这有个问题,如果x是负数,不就完了吗?可是

    有数的,虽然很小。那怎么算?

    下面用matplotlib来绘制出来t1 = np.linspace(-2, 0, 10, endpoint=False)

    t2 = np.linspace(0, 4, 20)

    t = np.concatenate((t1, t2))

    print(t) # 横轴数据

    y = np.empty_like(t)

    for i, x in enumerate(t):

    y[i] = calc_e(x)

    print('e^', x, ' = ', y[i], '(近似值)\t', math.exp(x), '(真实值)')

    plt.figure(facecolor='w')

    mpl.rcParams['font.sans-serif'] = ['SimHei']

    mpl.rcParams['axes.unicode_minus'] = False

    plt.plot(t, y, 'r-', t, y, 'go', linewidth=2, markeredgecolor='k')

    plt.title('Taylor展式的应用 - 指数函数', fontsize=18)

    plt.xlabel('X', fontsize=15)

    plt.ylabel('exp(X)', fontsize=15)

    plt.grid(True, ls=':')

    plt.show()

    图像如下

    绘制正正弦函数import numpy as np

    import math

    import matplotlib as mpl

    import matplotlib.pyplot as plt

    def calc_sin_small(x):

    x2 = -x ** 2

    t = x

    f = 1

    sum = 0

    for i in range(10):

    sum += t / f

    t *= x2

    f *= ((2*i+2)*(2*i+3))

    return sum

    def calc_sin(x):

    a = x / (2*np.pi)

    k = np.floor(a)

    a = x - k*2*np.pi

    return calc_sin_small(a)

    if __name__ == "__main__":

    t = np.linspace(-2*np.pi, 2*np.pi, 100, endpoint=False)

    print(t) # 横轴数据

    y = np.empty_like(t)

    for i, x in enumerate(t):

    y[i] = calc_sin(x)

    print('sin(', x, ') = ', y[i], '(近似值)\t', math.sin(x), '(真实值)')

    print('误差:', y[i] - math.sin(x))

    mpl.rcParams['font.sans-serif'] = ['SimHei']

    mpl.rcParams['axes.unicode_minus'] = False

    plt.figure(facecolor='w')

    plt.plot(t, y, 'bo', t, y, 'r-', linewidth=2)

    plt.title('Taylor展式的应用 - 正弦函数', fontsize=18)

    plt.xlabel('X', fontsize=15)

    plt.ylabel('sin(X)', fontsize=15)

    plt.xlim((-7, 7))

    plt.ylim((-1.1, 1.1))

    plt.grid(True)

    plt.show()

    Gamma函数

    伽玛函数(Gamma函数),也叫欧拉第二积分,是阶乘函数在实数与复数上扩展的一类函数。该函数在分析学、概率论、偏微分方程和组合数学中有重要的应用。与之有密切联系的函数是贝塔函数,也叫第一类欧拉积分。可以用来快速计算同伽马函数形式相类似的积分。

    阶乘对于有数学基础的人来说都不陌生,简单理解就是数的累乘。10的阶乘10!=1098765432*1。但是我们有没有思考过,如分数的阶乘是如何运算的?有没有方法估算一个数的阶乘?

    Γ函数是阶乘在实数上的推广import numpy as np

    import matplotlib as mpl

    import matplotlib.pyplot as plt

    from scipy.special import gamma

    from scipy.special import factorial

    mpl.rcParams['axes.unicode_minus'] = False

    mpl.rcParams['font.sans-serif'] = 'SimHei'

    if __name__ == '__main__':

    N = 5

    x = np.linspace(0, N, 50)

    y = gamma(x+1)

    plt.figure(facecolor='w')

    plt.plot(x, y, 'r-', x, y, 'mo', lw=2, ms=7)

    z = np.arange(0, N+1)

    f = factorial(z, exact=True) # 阶乘

    print(f)

    plt.plot(z, f, 'go', markersize=9)

    plt.grid(b=True)

    plt.xlim(-0.1,N+0.1)

    plt.ylim(0.5, np.max(y)*1.05)

    plt.xlabel('X', fontsize=15)

    plt.ylabel('Gamma(X) - 阶乘', fontsize=15)

    plt.title('阶乘和Gamma函数', fontsize=16)

    plt.show()

    最后,祝有所学习,有所成长

    展开全文
  • 泰勒公式

    千次阅读 2016-06-12 14:57:14
    如果函数足够平滑的话,在已知函数在某一点的各阶数值的情况之下,泰勒公式可以用这些数值做系数构建一个多项式来近似函数在这一点的邻域中的值。泰勒公式还给出了这个多项式和实际的函数值之间的偏差。 泰勒...
    

    泰勒公式

    编辑 锁定
    在数学中, 泰勒公式是一个用 函数在某点的信息描述其附近取值的公式。如果函数足够 平滑的话,在已知函数在某一点的各阶 导数值的情况之下,泰勒公式可以用这些导数值做系数构建一个多项式来近似函数在这一点的邻域中的值。泰勒公式还给出了这个多项式和实际的函数值之间的偏差。
    泰勒公式得名于英国数学家布鲁克·泰勒。他在1712年的一封信里首次叙述了这个公式,尽管1671年詹姆斯·格雷高里已经发现了它的特例。
    拉格朗日在1797年之前,最先提出了带有余项的现在形式的 泰勒定理
    中文名
    泰勒展开
    外文名
    Taylor's formula
    提出者
    泰勒
    提出时间
    1712年
    应用学科
    数学、物理
    适用领域范围
    数学分析、物理量子力学固体物理等
    特    例
    麦克劳林级数、 拉格朗日定理

    泰勒公式公式形式

    编辑

    泰勒公式展开式

    泰勒公式可以用(无限或者 有限)若干项连加式(- 级数)来表示一个函数,这些相加的项由函数在某一点(或者加上在临近的一个点的
    次导数)的 导数求得。
    对于正整数n,若函数
    在闭区间
    阶连续可导,且在
    阶可导。任取
    是一定点,则对任意
    成立下式:
    其中,
    表示
    的n阶导数,多项式称为函数
    在a处的泰勒展开式,剩余的
    是泰勒公式的余项,是
    的高阶无穷小。

    泰勒公式余项

    泰勒公式的余项
    可以写成以下几种不同的形式:
    1、佩亚诺(Peano)余项:
    这里只需要n阶导数存在
    2、施勒米尔希-罗什(Schlomilch-Roche)余项:
    其中θ∈(0,1),p为任意正实数。(注意到p=n+1与p=1分别对应拉格朗日余项与柯西余项) [1]  
    3、拉格朗日(Lagrange)余项:
    其中θ∈(0,1)。
    4、柯西(Cauchy)余项:
    其中θ∈(0,1)。
    5、积分余项:
    以上诸多余项事实上很多是等价的。

    泰勒公式公式推广

    编辑

    泰勒公式麦克劳林展开

    函数的麦克劳林展开指上面泰勒公式中a取0的情况,即是泰勒公式的特殊形式,若
    在x=0处n阶连续可导,则下式成立:
    其中
    表示
    的n阶导数。
    近似表达正弦函数 近似表达正弦函数

    泰勒公式泰勒中值定理

    在包含
    的某开区间(a,b)内具有直到n+1阶的导数,则当x∈(a,b)时,有
    其中
    是n阶泰勒公式的拉格朗日余项:

    泰勒公式多元泰勒公式

    对于多元函数,也有类似的泰勒公式。设 B( a, r) 是 欧几里得空间 R N中的开球,ƒ 是定义在 B( a, r) 的 闭包上的实值函数,并在每一点都存在所有的 n+1 次 偏导数。这时的泰勒公式为:
    对所有

    泰勒公式验证推导

    编辑
    我们知道,根据 拉格朗日中值定理导出的有限增量定理有:
    于是:
    其中误差α是在Δx→0 即x→x 0的前提下才趋向于0,所以在近似计算中往往不够精确;于是我们需要一个能够足够精确的且能估计出误差的多项式:
    来近似地表示函数f(x)且要写出其误差f(x)-P(x)的具体表达式。设函数P(x)满足 :
    于是可以依次求出A 0、A 1、A 2、……、A n,显然有:
    ,所以
    ,所以
    ,所以
    ,所以
    至此,多项的各项系数都已求出,得:
    以上就是函数
    的泰勒展开式。
    接下来就要求误差的具体表达式了。设
    ,令
    得到:
    进而:
    根据 柯西中值定理
    其中
    继续使用柯西中值定理得到:
    其中
    连续使用n+1次后得到:
    其中;
    同时:
    而:
    进而:
    综上可得:
    一般来说展开函数时都是为了计算的需要,故x往往要取一个定值,此时也可把Rn(x)写为Rn。

    泰勒公式发展简史

    编辑
    希腊哲学家 芝诺在考虑利用 无穷级数求和来得到有限结果的问题时,得出不可能的结论- 芝诺悖论,这些悖论中最著名的两个是“ 阿喀琉斯追乌龟”和“ 飞矢不动”。
    后来, 亚里士多德对芝诺悖论在哲学上进行了反驳,直到 德谟克利特以及后来的 阿基米德进行研究,此部分数学内容才得到解决。阿基米德应用 穷举法使得一个无穷级数能够被逐步的细分,得到了有限的结果。
    14世纪,玛达瓦发现了一些特殊函数,包括 正弦余弦正切、反正切等 三角函数的泰勒级数。
    17世纪,詹姆斯·格雷果里同样继续着这方面的研究,并且发表了若干 麦克劳林级数。直到1712年,英国 牛顿学派最优秀代表人物之一的数学家泰勒提出了一个通用的方法,这就是为人们所熟知的泰勒级数; 爱丁堡大学科林·麦克劳林教授发现了泰勒级数的特例,称为 麦克劳林级数。

    泰勒公式公式应用

    编辑
    实际应用中,泰勒公式需要截断,只取有限项,一个函数的有限项的泰勒级数叫做泰勒展开式。泰勒公式的余项可以用于估算这种近似的误差。
    泰勒展开式的重要性体现在以下三个方面
    1. 幂级数的求导和积分可以逐项进行,因此求和函数相对比较容易。
    2. 一个解析函数可被延伸为一个定义在复平面上的一个开片上的解析函数,并使得复分析这种手法可行。
    3. 泰勒级数可以用来近似计算函数的值。
    实例
    1、展开三角函数
    解:根据导数表得:
    最后可得:
    其中
    为皮亚诺余项:
    或:
    其中
    类似地,可以展开y=cos(x)。
    2、计算近似值
    解:对指数函数
    运用 麦克劳林展开式并舍弃余项:
    当x=1时:
    取n=10,即可算出近似值e≈2.7182818。
    3、欧拉公式:
    (其中
    ,即一个 虚数单位)
    证明:这个公式把 复数写为了幂指数形式,其实它也是由麦克劳林展开式确切地说是麦克劳林级数证明的。证明思路是先展开指数函数e^z,然后把各项中的z写成ix。由于i的幂周期性,可已把系数中含有土i的项用乘法分配律写在一起,剩余的项写在一起,刚好是cosx,sinx的展开式。然后让sinx乘上提出的i,即可导出 欧拉公式。
    展开全文
  • 美好的目标函数求未知数的偏导数是一个漂亮表达式,会让你惊叹到数学如此婀娜多娇。    如果有人能够求得未知变量的解析表达式,那该是多么幸福的事情,现实是残酷的。(我知道你想说伪逆是最小二乘的解析表达式...

    前记

       无论是机器学习还是深度学习,都是构造目标函数,这个目标函数内部有很多未知变量,我们的目标就是求得这些未知变量。
       那么如何构造目标函数?这是一个非常优美的话题(本文未讲,先欠着)。美好的目标函数求未知数的偏导数是一个漂亮表达式,会让你惊叹到数学如此婀娜多娇。
       如果有人能够求得未知变量的解析表达式,那该是多么幸福的事情,现实是残酷的。(我知道你想说伪逆是最小二乘的解析表达式,然后呢……难道你就打算只学会一个最简单的最小二乘吗?)。为此大部分都是采用梯度下降(那些别的神奇的算法都是基于梯度下降),那何为梯度下降?
       如: L = f ( x ) L=f(x) L=f(x),采用泰勒(不认识泰勒,就假装不存在这两个字)一阶导数展开:
    f ( x ) = f ( x 0 ) + f ′ ( x 0 ) ( x − x 0 ) f(x) = f(x_0)+f^{'}(x_0)(x-x_0) f(x)=f(x0)+f(x0)(xx0)
       想求得 f ( x ) f(x) f(x)的最小值,我先蒙一个 x 0 x_0 x0,然后我就拼命的更新 x n e w x^{new} xnew,令每次更新的差值为 Δ x = x n e w − x 0 \Delta x = x^{new}-x_0 Δx=xnewx0,则:
    f ( x ) = f ( x 0 ) + f ′ ( x 0 ) ( x − x 0 ) = f ( x 0 ) + f ′ ( x 0 ) Δ x f(x) = f(x_0)+f^{'}(x_0)(x-x_0)= f(x_0)+f^{'}(x_0)\Delta x f(x)=f(x0)+f(x0)(xx0)=f(x0)+f(x0)Δx
    Δ x = − η ⋅ f ′ ( x 0 ) ( η > 0 ) \Delta x = -\eta \cdot f^{'}(x_0) (\eta>0) Δx=ηf(x0)η>0时,
    f ( x ) = f ( x 0 ) − η ⋅ f ′   2 ( x 0 ) f(x) = f(x_0) - \eta \cdot f^{'^~2}(x_0) f(x)=f(x0)ηf 2(x0)
       至少我每次 f ( x n e w ) f(x^{new}) f(xnew)总比我之前 f ( x 0 ) f(x_0) f(x0) 要减少一点点 η ⋅ f ′   2 ( x 0 ) \eta \cdot f^{'^~2}(x_0) ηf 2(x0)吧(此话不严谨,因为学习率很大的时候,你就会筐瓢)。那个 η \eta η就是梯度学习率。
       如果你觉得不够精确,我要在二阶泰勒展开,那就是“牛顿法”。
       本文通篇就是在围绕着如何求一阶导数展开。

    如何求解一阶导数

       学习数学,总是在学习的时候很痛苦,这个鬼画符得出的结论要表达什么?我学了有什么用?用起来的时候发现“数学真香”。所以本文尽量每讲一个知识点时都拼凑深度学习或者机器学习中的知识点。
       先刷一个链式法则:
       所谓的链式法则,其实就是把一个个好大巴大的函数当做一个整体,求全微分,然后逐步肢解一个个内部函数。
    在这里插入图片描述
       如图所示, J = F ( f ( x ) , g ( x ) ) J = F(f(x),g(x)) J=F(f(x),g(x));
       求全微分:
    Δ J = F f ′ ⋅ Δ f + F g ′ ⋅ Δ g \Delta J = F^{'}_{f}\cdot \Delta f + F^{'}_{g}\cdot \Delta g ΔJ=FfΔf+FgΔg
       又因为: Δ f = f ′ ⋅   Δ x ; Δ g = g ′ ⋅   Δ x \Delta f = f^{'}\cdot\ \Delta x;\Delta g = g^{'}\cdot\ \Delta x Δf=f ΔxΔg=g Δx从而:
    Δ J = F f ′ ⋅ f ′ ⋅   Δ x + F g ′ ⋅ g ′ ⋅   Δ x \Delta J = F^{'}_{f}\cdot f^{'}\cdot\ \Delta x+ F^{'}_{g}\cdot g^{'}\cdot\ \Delta x ΔJ=Fff Δx+Fgg Δx
    写成链式:
    ∂ J ∂ x = ∂ J ∂ f ⋅ ∂ f ∂ x + ∂ J ∂ g ⋅ ∂ g ∂ x \frac{\partial J}{\partial x} = \frac{\partial J}{\partial f}\cdot\frac{\partial f}{\partial x}+\frac{\partial J}{\partial g}\cdot\frac{\partial g}{\partial x} xJ=fJxf+gJxg
      总结一下链式法则,总是需要找到变量至目标的路径,然后依次从后往前展开。

    1.实数对向量求偏导

    f ( x ) = a T x = x T a f(x) = \bm{a}^T\bm{x}= \bm{x}^T\bm{a} f(x)=aTx=xTa
    其中 x = [ x 1 , x 2 , x i , . . .   , x n ] T , a = [ a 1 , a 2 , a i , . . .   , a n ] T \bm{x}=[x_1,x_2,x_i,...\ ,x_n]^T,\bm{a}=[a_1,a_2,a_i,...\ ,a_n]^T x=[x1,x2,xi,... ,xn]T,a=[a1,a2,ai,... ,an]T
    ∵ f ( x ) = ∑ i = 1 n a i x i \because f(x) = \sum\limits_{i=1}^n a_ix_i f(x)=i=1naixi
    ∂ f ∂ x i = a i \frac{\partial f}{\partial x_i} = a_i xif=ai
    ∴ ∂ f ∂ x = [ a 1 , a 2 , a i , . . .   , a n ] T = a \therefore\quad\frac{\partial f}{\partial \bm{x}} =[a_1,a_2,a_i,...\ ,a_n]^T=\bm{a} xf=[a1,a2,ai,... ,an]T=a
      一个实数对一个列向量求导数,结果还是一个列向量。其实记忆起来就按照 f ( x ) = a ⋅ x , ( a , x 为 实 数 ) f(x) =a\cdot x,(a,x为实数) f(x)=axa,x来记忆,只是结果必须要与维度对齐。
      个人建议所有的导数在不太熟悉的情况下,对向量以及矩阵求导都要带上维度
      比如 f ( x ) = x T a f(x) = \bm{x}^T\bm{a} f(x)=xTa, f ( x ) f(x) f(x)对x求导数立马想到 f ( x ) = a ⋅ x f(x)=a\cdot x f(x)=ax,这个肯定知道一元函数的导数: f ′ ( x ) = a f'(x)=a f(x)=a,但是还在犹豫当对向量求偏导数时,结果为 a a a还是 a T a^T aT ?显然对列向量偏导数应该还是为列向量,因此:
    f ′ ( x ) n × 1 = a n × 1 \mathop{f'(x)}\limits_{n\times1}=\mathop{\bm{a}}\limits_{n\times1} n×1f(x)=n×1a
      现在就可以轻松应对机器学习中的LR(逻辑斯蒂回归)分析(仅考虑一个样本样本,该样本的信息为 x \bm{x} x向量,标签为y取值等于0或者等于1)。
    z = ω T x z = \bm{\omega}^T\bm{x} z=ωTx
    a = f ( z ) = 1 1 + e − z a = f(z)=\frac{1}{1+e^{-z}} a=f(z)=1+ez1
    损 失 函 数 : J = − y l n ( a ) − ( 1 − y ) l n ( 1 − a ) 损失函数:J=-yln(a)-(1-y)ln(1-a) :J=yln(a)(1y)ln(1a)
    求得 ∂ J / ∂ z = ( ∂ J / ∂ a ) ⋅ ( ∂ a / ∂ z ) = ( a − y ) \partial J/\partial z =(∂J/∂a)\cdot(∂a/∂z)= (a-y) J/z=(J/a)(a/z)=(ay)
    由实数对向量求偏导的结论, ∂ z / ∂ ω = x \partial z/\partial\bm{\omega} = \bm{x} z/ω=x
    ∂ J / ∂ ω = ( ∂ J / ∂ z ) ⋅ ( ∂ z / ∂ ω ) = ( a − y ) ⋅   x \partial J/\partial \bm{\omega} =(∂J/∂z)\cdot(∂z/∂\bm{\omega})= (a-y)\cdot \ \bm{x} J/ω=(J/z)(z/ω)=(ay) x
      是不是发现 b b b不见了,将 x \bm{x} x扩展为 [ x ; 1 ] [\bm{x};1] [x1], ω \bm{\omega} ω扩展为 [ ω ; b ] [\bm{\omega};b] [ωb]即可。

    2.向量对向量、矩阵求偏导

      先给出多层全连接神经网络并经过 s o f t m a x softmax softmax进行m个分类的结构图。
    在这里插入图片描述
      目的是求得所有层之间的V和b参数,因为所有的 z i → a i z^i\to a^i ziai为非线性函数,且未含有任何需要辨识的参数。除了最后的 s o f t m a x softmax softmax,甚至所有的非线性函数都是单输入单输出函数。

    2.1从后往前递推,先求 ∂ J / ∂ z L \partial J/\partial z^L J/zL,其结论为:

    ∂ J / ∂ z L = a L − y \partial J/\partial z^L=a^L-\bm{y} J/zL=aLy
      似曾相识,和LR中 ∂ J / ∂ z = ( ∂ J / ∂ a ) ⋅ ( ∂ a / ∂ z ) = ( a − y ) \partial J/\partial z =(∂J/∂a)\cdot(∂a/∂z)= (a-y) J/z=(J/a)(a/z)=(ay)型式相同,这就是前记中描述的,构造较好的目标函数能够得到漂亮的数学型式。
      关于 s o f t m a x softmax softmax层的偏导数求法,本文不做进一步分析,搜索“softmax反向传播”,都有详细的推导。只说一下思路,以对 z i L z^L_i ziL一个元素求偏导为例,先要 J J J对所有的 a j L a^L_j ajL求偏导,因为 a L a^L aL层所有元素都与 z i L z^L_i ziL有关系,而且当 j ≠ i j \not= i j=i时, a j L a^L_j ajL仅有分母中含有 z i L z^L_i ziL j = i j=i j=i时, a j L a^L_j ajL分子、分母中含有 z i L z^L_i ziL(这就是上图中softmax层我将水平连接线画成了虚线,以与 j ≠ i j \not= i j=i区别开)。

    2.2继续求 ∂ J / ∂ a L − 1 \partial J/\partial a^{L-1} J/aL1

      上面已经求得 ∂ J / ∂ z L \partial J/\partial z^L J/zL,现在找其与 ∂ J / ∂ a L − 1 \partial J/\partial a^{L-1} J/aL1的关系。
    z L = V L ⋅   a L − 1 z^L = V^L\cdot \ a^{L-1} zL=VL aL1
    ∴ Δ z L ⟹ V L ⋅   Δ a L − 1 \therefore \Delta z^L \Longrightarrow V^L\cdot \ \Delta a^{L-1} ΔzLVL ΔaL1
    Δ J ⇒ ( ∂ J ∂ z L ) T ⋅ Δ z L ⇒ ( ∂ J ∂ z L ) T ⋅   ( V L ⋅   Δ a L − 1 ) ⇒ ( ∂ J ∂ z L ) T ⋅   V L ⋅ Δ a L − 1 ⇒ ( ( V L ) T ⋅ ∂ J ∂ z L ) T ⋅ Δ a L − 1 \begin{aligned} \Delta J & \Rightarrow (\frac{\partial J}{\partial z^L})^T\cdot\Delta z^L\\ & \Rightarrow (\frac{\partial J}{\partial z^L})^T\cdot\ (V^L\cdot \ \Delta a^{L-1}) \\ &\Rightarrow (\frac{\partial J}{\partial z^L})^T\cdot\ V^L\cdot\Delta a^{L-1}\\ &\Rightarrow ((V^{L})^T\cdot\frac{\partial J}{\partial z^L})^T\cdot\Delta a^{L-1}\\ \end{aligned} ΔJ(zLJ)TΔzL(zLJ)T (VL ΔaL1)(zLJ)T VLΔaL1((VL)TzLJ)TΔaL1
      同时:
    Δ J ⇒ ( ∂ J ∂ a L − 1 ) T ⋅ Δ a L − 1 \Delta J \Rightarrow (\frac{\partial J}{\partial a^{L-1}})^T\cdot\Delta a^{L-1} ΔJ(aL1J)TΔaL1
      与上面的“等式”对比可知:
    ∴ ∂ J ∂ a L − 1 = ( V L ) T ⋅ ∂ J ∂ z L (1) \therefore\frac{\partial J}{\partial a^{L-1}} = (V^{L})^T\cdot\frac{\partial J}{\partial z^L} \tag{1} aL1J=(VL)TzLJ(1)

       “ ⇒ ” “\Rightarrow” 这个符号在本文中意味着啥?先别急,你就当做一个等于号来看待最后再解释。

    2.3继续求 ∂ J / ∂ V L \partial J/\partial V^{L} J/VL

      这次打算从最基本的 V L V^L VL矩阵单个元素 V i j L V^L_{ij} VijL处理开始,然后逐步分析行 V i 行 L V^L_{i行} ViL,然得出整个矩阵的偏导数 ∂ J / ∂ V L \partial J/\partial V^{L} J/VL
    ∵ ∂ z i L ( z i L = V i 行 ⋅ a L − 1 ) ∂ V i j = a j L − 1 \because \frac{\partial z^L_i(z^L_i = V_{i行}\cdot a^{L-1})}{\partial V_{ij}} =a^{L-1}_j VijziL(ziL=ViaL1)=ajL1
    ∴ ∂ J ∂ V i j = ∂ J ∂ z i L ⋅ ∂ z i L ∂ V i j = ∂ J ∂ z i L ⋅ a j L − 1 (对单个元素求偏导) \therefore \frac{\partial J}{\partial V_{ij}} = \frac{\partial J}{\partial z^L_i} \cdot \frac{\partial z^L_i}{\partial V_{ij}} = \frac{\partial J}{\partial z^L_i}\cdot a^{L-1}_j \tag{对单个元素求偏导} VijJ=ziLJVijziL=ziLJajL1()
    ∴ ∂ J ∂ V i 行 = ∂ J ∂ z i L ⋅ ( a L − 1 ) T (对行求偏导) \therefore \frac{\partial J}{\partial V_{i行}} = \frac{\partial J}{\partial z^L_i}\cdot (a^{L-1})^T \tag{对行求偏导} ViJ=ziLJ(aL1)T()
      扩展至对矩阵求偏导:
    ∴ ∂ J ∂ V = [ ∂ J ∂ z 1 L ⋅ ( a L − 1 ) T ⋮ ∂ J ∂ z m L ⋅ ( a L − 1 ) T ] = ∂ J ∂ z L ⋅ ( a L − 1 ) T (2) \therefore \frac{\partial J}{\partial V} =\left[ \begin{matrix} \frac{\partial J}{\partial z^L_1}\cdot (a^{L-1})^T \\ \vdots \\ \frac{\partial J}{\partial z^L_m}\cdot (a^{L-1})^T \end{matrix} \right] = \frac{\partial J}{\partial z^L}\cdot (a^{L-1})^T \tag{2} VJ=z1LJ(aL1)TzmLJ(aL1)T=zLJ(aL1)T(2)
      关于对 V V V的偏导数求法是按照定义,一五一十一板一眼的求,后面在解释" ⇒ \Rightarrow "符号时,会进一步通过矩阵的方法来获得相同的表达式。

    继续求 ∂ J / ∂ z L − 1 \partial J/\partial z^{L-1} J/zL1

      以图中 a L − 1 = δ ( z L − 1 ) a^{L-1} = \delta(z^{L-1}) aL1=δ(zL1)为例,显然: ∂ a i L − 1 / ∂ z i L − 1 = δ ( z i L − 1 ) ⋅ ( 1 − δ ( z i L − 1 ) ) \partial a^{L-1}_i/\partial z^{L-1}_i = \delta(z^{L-1}_i)\cdot(1-\delta(z^{L-1}_i)) aiL1/ziL1=δ(ziL1)(1δ(ziL1))
    ∴ ∂ J / ∂ z = ∂ J ∂ a ⊙ ∂ a ∂ z = ∂ J ∂ a ⊙ δ ( z L − 1 ) ⊙ ( 1 − δ ( z L − 1 ) ) \therefore \partial J/\partial z =\frac{\partial J}{\partial a} \odot \frac{\partial a}{\partial z}= \frac{\partial J}{\partial a} \odot \delta(z^{L-1})\odot(1-\delta(z^{L-1})) J/z=aJza=aJδ(zL1)(1δ(zL1))
      检查一下这个表达式中,所有 ⊙ \odot 两边的表达式都为 k × 1 k\times1 k×1维的列向量。个人感觉上式凭直觉是显而易见的,下面开始推导:
    ∂ J ∂ a ⊙ Δ a ⇒ ∂ J ∂ a ⊙ [ δ ( z L − 1 ) ⊙ ( 1 − δ ( z L − 1 ) ) ⊙ Δ z ] ⇒ [ ∂ J ∂ a ⊙ δ ( z L − 1 ) ⊙ ( 1 − δ ( z L − 1 ) ) ] ⊙ Δ z \begin{aligned} \frac{\partial J}{\partial a} \odot \Delta a &\Rightarrow\frac{\partial J}{\partial a}\odot [\delta(z^{L-1})\odot(1-\delta(z^{L-1}))\odot \Delta z] \\ &\Rightarrow [\frac{\partial J}{\partial a} \odot\delta(z^{L-1})\odot(1-\delta(z^{L-1}))]\odot \Delta z\end{aligned} aJΔaaJ[δ(zL1)(1δ(zL1))Δz][aJδ(zL1)(1δ(zL1))]Δz
      上式为左右两个列向量"相等",代表 两个列向量所有元素对应相等,那两边向量元素和也必然相等
    Δ J ⇒ ( ∂ J ∂ a ) T ⋅ Δ a ⇒ [ ∂ J ∂ a ⊙ δ ( z L − 1 ) ⊙ ( 1 − δ ( z L − 1 ) ) ] T ⋅   Δ z \Delta J \Rightarrow(\frac{\partial J}{\partial a})^T \cdot \Delta a \Rightarrow [\frac{\partial J}{\partial a} \odot\delta(z^{L-1})\odot(1-\delta(z^{L-1}))]^T\cdot\ \Delta z ΔJ(aJ)TΔa[aJδ(zL1)(1δ(zL1))]T Δz
      同时: Δ J ⇒ ( ∂ J ∂ z L − 1 ) T ⋅ Δ z L − 1 \Delta J \Rightarrow(\frac{\partial J}{\partial z^{L-1}})^T\cdot\Delta z^{L-1} ΔJ(zL1J)TΔzL1
       ∴ ∂ J / ∂ z L − 1 = ∂ J ∂ a L − 1 ⊙ δ ( z L − 1 ) ⊙ ( 1 − δ ( z L − 1 ) ) (3) \therefore\partial J/\partial z^{L-1} =\frac{\partial J}{\partial a^{L-1}} \odot\delta(z^{L-1})\odot(1-\delta(z^{L-1})) \tag{3} J/zL1=aL1Jδ(zL1)(1δ(zL1))(3)
      老实说,公式(3)的推导我也不知道是不是在画蛇添足……
      先将第2节内容《向量对向量、矩阵求偏导》做个总结:
      公式1,对向量的偏导数传递至向量的偏导数;两个向量关系为矩阵相乘。
      公式2,对向量的偏导数传递至矩阵的偏导数;
      公式3,对向量的偏导数传递至向量的偏导数;两个向量之间元素为一一对应的函数关系。
      有了以上公式三联,就可以通过梯度下降实现全连接神经网络多分类的参数辨识。2.1节能够得到对 z L z^L zL的偏导数,然后通过公式(2)得到 L L L层的参数 V L V^L VL,结合公式(1)(3)即可往前推进一层至 L − 1 L-1 L1层,依次类推(本文没有考虑偏置项 b b b,原理类似)。

    3.Hadamard积求偏导

      其实上述2.3节里面就有hadamard积的微分,这里还是单独陈列出来。
      已知: z = x ⊙ y ; J = f ( z ) ; z=x \odot y;J=f(z); z=xy;J=f(z);各个变量的维度: z [ m × 1 ] , x [ m × 1 ] , y [ m × 1 ] , J [ 1 × 1 ] z[m\times1],x[m\times1],y[m\times1],J[1\times1] z[m×1],x[m×1],y[m×1],J[1×1]
    求: ∂ J / ∂ x ? \partial J/\partial x? J/x?
    ∂ J / ∂ x = [ ∂ J ∂ x 1   ⋮ ∂ J ∂ x m ] = [ ∂ J ∂ z 1 ⋅ y 1   ⋮ ∂ J ∂ z m ⋅ y m ] = ∂ J ∂ z ⊙ y = y ⊙ ∂ J ∂ z (4) \partial J/\partial x = \left[ \begin{matrix} \frac{\partial J}{\partial x_1}\ \\ \vdots \\ \frac{\partial J}{\partial x_m} \end{matrix} \right] =\left[ \begin{matrix} \frac{\partial J}{\partial z_1}\cdot y_1\ \\ \vdots \\ \frac{\partial J}{\partial z_m}\cdot y_m \end{matrix} \right]= \frac{\partial J}{\partial z}\odot y=y \odot \frac{\partial J}{\partial z}\tag{4} J/x=x1J xmJ=z1Jy1 zmJym=zJy=yzJ(4)
      可我还是喜欢上面画蛇添足的思路。

    4.所有偏导推导思路

      4.1当仅有华山一条道,且仅改变单个变量时,可以有如下表达式:
    Δ J = ( ∂ J / ∂ f ) T ⋅ Δ f = ( ∂ J / ∂ x ) T ⋅ Δ x (I) \Delta J = (\partial J/ \partial f)^T\cdot \Delta f= (\partial J/ \partial x)^T\cdot \Delta x \tag{I} ΔJ=(J/f)TΔf=(J/x)TΔx(I)
    其中维度: f [ m × 1 ] , x [ k × 1 ] , J [ 1 × 1 ] f[m\times1],x[k\times1],J[1\times1] f[m×1],x[k×1],J[1×1]
      何为华山一条道?以全微分图为例,你会发现上式是不对的,但是如果去掉 g g g路径则没有问题。
      何为仅改变单个变量?以 z L = V L ⋅   a L − 1 z^L = V^L\cdot \ a^{L-1} zL=VL aL1为例,实则:
    Δ z L = Δ V L ⋅   a L − 1 + V L ⋅ Δ a L − 1 \Delta z^L = \Delta V^L\cdot \ a^{L-1}+V^L\cdot \Delta a^{L-1} ΔzL=ΔVL aL1+VLΔaL1
      但是如果仅考虑对单个变量 a L − 1 a^{L-1} aL1求偏导(即认为别的变量为常量,如 V L V^L VL变量),是可以认为:
    Δ J = ( ∂ J / ∂ z L ) T ⋅ Δ z L ⇒ ( ∂ J / ∂ a L − 1 ) T ⋅ Δ a L − 1 \Delta J =(\partial J/ \partial z^L)^T\cdot \Delta z^L \Rightarrow (\partial J/ \partial a^{L-1})^T\cdot \Delta a^{L-1} ΔJ=(J/zL)TΔzL(J/aL1)TΔaL1
      这也是为什么之前说" ⇒ \Rightarrow “符号直接当作等号”="来看。有了4.1则公式(1)的推导手到擒来。
      在满足4.1的条件下,矩阵偏导数全微分表达式又是如何呢?
      4.2矩阵偏导数全微分表达式
      显然不是 Δ J = ( ∂ J / ∂ V ) T ⋅ Δ V \Delta J = (\partial J/ \partial V)^T\cdot \Delta V ΔJ=(J/V)TΔV,维度对不上,正确的表达式应该是:
    Δ J = T r ( ( ∂ J / ∂ V ) T ⋅ Δ V ) (II) \Delta J = Tr((\partial J/ \partial V)^T\cdot \Delta V)\tag{II} ΔJ=Tr((J/V)TΔV)(II)
      其中 T r ( ) Tr() Tr()为矩阵的迹,矩阵的迹有性质: T r ( A ⋅ B ) = T r ( B ⋅ A ) Tr(A\cdot B)=Tr(B\cdot A) Tr(AB)=Tr(BA)。公式(II)看起来很复杂实则就是两个表达式的对应元素相乘的和。
      为此,再把公式(2)用4.2的知识推导一遍:
    Δ J = ( ∂ J / ∂ z ) T ⋅ Δ z ( ∵ Δ z ⇒ Δ V ⋅ a ) = ( ∂ J / ∂ z ) T ⋅ ( Δ V ⋅ a ) ( ∵ 行 向 量 乘 以 列 向 量 等 于 列 向 量 乘 以 行 向 量 的 迹 ) = T r ( ( Δ V ⋅ a ) ⋅ ( ∂ J / ∂ z ) T ) = T r ( Δ V ⋅ a ⋅ ( ∂ J / ∂ z ) T ) = T r ( Δ V ⋅ ( ∂ J / ∂ z ⋅ a T ) T ) = T r ( ( ∂ J / ∂ z ⋅ a T ) T ⋅ Δ V ) \begin{aligned} \Delta J & =(\partial J/ \partial z)^T\cdot \Delta z \qquad (\because\Delta z \Rightarrow \Delta V \cdot a)\\ & = (\partial J/ \partial z)^T\cdot (\Delta V \cdot a)\\ & (\because 行向量乘以列向量等于列向量乘以行向量的迹)\\ & =Tr( (\Delta V \cdot a)\cdot (\partial J/ \partial z)^T) \\ & =Tr( \Delta V \cdot a\cdot (\partial J/ \partial z)^T) \\ & =Tr( \Delta V \cdot (\partial J/ \partial z\cdot a^T)^T)\\ & =Tr((\partial J/ \partial z\cdot a^T)^T \cdot \Delta V) \end{aligned} ΔJ=(J/z)TΔz(ΔzΔVa)=(J/z)T(ΔVa)()=Tr((ΔVa)(J/z)T)=Tr(ΔVa(J/z)T)=Tr(ΔV(J/zaT)T)=Tr((J/zaT)TΔV)
      与公式(II)对比便知: ∂ J / ∂ V = ∂ J / ∂ z ⋅ a T \partial J/ \partial V = \partial J/ \partial z\cdot a^T J/V=J/zaT,可见利用4.1以及4.2的知识,可以相对较为轻松的完成公式(1)(2)的推导。
      关于hadamard积的微分求导,也可以利用4.1,4.2的知识(再次重复公式(3))。
    ∂ J / ∂ z ⊙ Δ z = ∂ J / ∂ z ⊙ ( y ⊙ Δ x ) = ( ∂ J / ∂ z ⊙ y ) ⊙ Δ x \partial J/ \partial z\odot\Delta z = \partial J/ \partial z\odot (y\odot\Delta x)=(\partial J/ \partial z\odot y)\odot\Delta x J/zΔz=J/z(yΔx)=(J/zy)Δx
      等式左右两个向量相等则其所有元素之和相等。
    ( ∂ J / ∂ z ) T ⋅ Δ z = ( ∂ J / ∂ z ⊙ y ) T ⋅ Δ x (\partial J/ \partial z)^T\cdot\Delta z =(\partial J/ \partial z\odot y)^T\cdot\Delta x (J/z)TΔz=(J/zy)TΔx
    ∴ ∂ J / ∂ x = ∂ J / ∂ z ⊙ y \therefore \partial J/ \partial x = \partial J/ \partial z\odot y J/x=J/zy
      实际上, a T ⋅ ( b ⊙ c ) = ( a ⊙ b ) T ⋅ c a^T\cdot(b\odot c) = (a\odot b)^T\cdot c aT(bc)=(ab)Tc(凭直觉该式应该是没错的, 到底有没有这个性质我也没去查)
    ( ∂ J / ∂ z ) T ⋅ Δ z = ( ∂ J / ∂ z ) T ⋅ ( y ⊙ Δ x ) = ( ∂ J / ∂ z ⊙ y ) T ⋅ Δ x (\partial J/ \partial z)^T\cdot\Delta z = (\partial J/ \partial z)^T\cdot (y\odot\Delta x)=(\partial J/ \partial z\odot y)^T\cdot\Delta x (J/z)TΔz=(J/z)T(yΔx)=(J/zy)TΔx
      通过总结再回过来看偏微分的链式表达式,似乎能够闭卷了,可是如果纯粹靠推导难免有点容易出错。此时想起来高中数学的对联“奇变偶不变,符号看象限”。如果用这种型式描述偏微分就是:“型式由原式决定,左右转置看维度”。"型式由原式决定”:比如hadamard积的微分传递还是hadamard积的形式; z = V ⋅ a z=V\cdot a z=Va微分传递后还是矩阵相乘的形式,“左右转置看维度”: ∂ J / ∂ a \partial J/\partial a J/a ∂ J / ∂ z \partial J/\partial z J/z定相差一个 V T V^T VT,,至于该转置应该左乘还是右乘 ∂ J / ∂ z \partial J/\partial z J/z则看维度匹配。 ∂ J / ∂ a \partial J/\partial a J/a维度为 [ k × 1 ] [k\times 1] [k×1], ∂ J / ∂ z \partial J/\partial z J/z维度为 [ m × 1 ] [m\times 1] [m×1], V V V维度为 [ m × k ] [m\times k] [m×k],在维度匹配上, [ k × 1 ] = [ m × k ] T ⋅ [ m × 1 ] [k\times 1] = [m\times k]^T\cdot [m\times 1] [k×1]=[m×k]T[m×1]
    ∴ ∂ J / ∂ a = V T ⋅ ∂ J / ∂ z \therefore \partial J/\partial a=V^T\cdot\partial J/\partial z J/a=VTJ/z

    5.展望

      这篇文章写完也算给自己对反向传播的一个总结吧,也是对自己的一个交代。还有卷积神经网络中对卷积内核的偏导数求导和层之间偏导链式没有写,也不晓得要哪天才会再来写,毕竟敲公式太遭罪了,还是一笔一纸的流畅。
      真理总是越辩越明,如果觉得以上博文有任何问题欢迎留言。

    展开全文
  • 泰勒公式与极值

    2019-10-23 14:31:25
    n阶混合偏导类似,只需在某点存在到n阶的连续混合偏导数,那么在这点m阶混合偏导数都与求导顺序无关中值定理 混合偏导交换顺序 fxy(x,y),fyx(x,y)f_{xy}(x,y),f_{yx}(x,y)fxy​(x,y),fyx​(x,y)都在(x0,y0)(x_0,y_0...

    混合偏导交换顺序

    • f x y ( x , y ) , f y x ( x , y ) f_{xy}(x,y),f_{yx}(x,y) fxy(x,y),fyx(x,y)都在 ( x 0 , y 0 ) (x_0,y_0) (x0,y0)处连续
    • 则有 f x y ( x 0 , y 0 ) = f y x ( x 0 , y 0 ) f_{xy}(x_0,y_0)=f_{yx}(x_0,y_0) fxy(x0,y0)=fyx(x0,y0)

    证明(重要)

    • F ( △ x , △ y ) = f ( x 0 + △ x , y 0 + △ y ) − f ( x 0 + △ x , y 0 ) − f ( x 0 , y 0 + △ y ) + f ( x 0 , y 0 ) F(\triangle x,\triangle y)=f(x_0+\triangle x,y_0+\triangle y)-f(x_0+\triangle x,y_0)-f(x_0,y_0+\triangle y)+f(x_0,y_0) F(x,y)=f(x0+x,y0+y)f(x0+x,y0)f(x0,y0+y)+f(x0,y0) φ ( x ) = f ( x , y 0 + △ y ) − f ( x , y 0 ) \varphi(x)=f(x,y_0+\triangle y)-f(x,y_0) φ(x)=f(x,y0+y)f(x,y0)
    • 于是 F ( △ x , △ y ) = φ ( x 0 + △ x ) − φ ( x 0 ) F(\triangle x,\triangle y)=\varphi(x_0+\triangle x)-\varphi(x_0) F(x,y)=φ(x0+x)φ(x0)
    • 由于函数存在关于x的偏导,故 φ \varphi φ可导,由一元函数中值定理,得 φ ( x 0 + △ x ) − φ ( x 0 ) = φ ′ ( x 0 + θ 1 △ x ) △ x \varphi(x_0+\triangle x)-\varphi(x_0)=\varphi'(x_0+\theta_1\triangle x)\triangle x φ(x0+x)φ(x0)=φ(x0+θ1x)x = [ f x ( x 0 + θ 1 △ x , y 0 + △ y ) − f x ( x 0 + θ 1 △ x , y 0 ) ] △ x =[f_x(x_0+\theta_1\triangle x,y_0+\triangle y)-f_x(x_0+\theta_1\triangle x,y_0)]\triangle x =[fx(x0+θ1x,y0+y)fx(x0+θ1x,y0)]x 0 < θ 1 < 1 0<\theta_1<1 0<θ1<1
    • 又因为 f x f_x fx存在关于y的偏导数,于是再对 f x f_x fx应用中值定理,得 φ ( x 0 + △ x ) − φ ( x 0 ) \varphi(x_0+\triangle x)-\varphi(x_0) φ(x0+x)φ(x0) = f x y ( x 0 + θ 1 △ x , y 0 + θ 2 △ y ) △ x △ y =f_{xy}(x_0+\theta_1\triangle x,y_0+\theta_2\triangle y)\triangle x\triangle y =fxy(x0+θ1x,y0+θ2y)xy 0 < θ 1 , θ 2 < 1 0<\theta_1,\theta_2<1 0<θ1,θ2<1
    • 所以 F ( △ x , △ y ) = f x y ( x 0 + θ 1 △ x , y 0 + θ 2 △ y ) △ x △ y F(\triangle x,\triangle y)=f_{xy}(x_0+\theta_1\triangle x,y_0+\theta_2\triangle y)\triangle x\triangle y F(x,y)=fxy(x0+θ1x,y0+θ2y)xy所以要证 f x y ( x 0 , y 0 ) = f y x ( x 0 , y 0 ) f_{xy}(x_0,y_0)=f_{yx}(x_0,y_0) fxy(x0,y0)=fyx(x0,y0)只需再证明 F ( △ x , △ y ) = f y x ( x 0 + θ 3 △ x , y 0 + θ 4 △ y ) △ x △ y F(\triangle x,\triangle y)=f_{yx}(x_0+\theta_3\triangle x,y_0+\theta_4\triangle y)\triangle x\triangle y F(x,y)=fyx(x0+θ3x,y0+θ4y)xy再利用 f x y , f y x f_{xy},f_{yx} fxy,fyx连续的条件,让 △ → 0 \triangle\to0 0就得了。所以下面证明这个
    • 与上面类似,只需设 ψ ( y ) = f ( x 0 + △ x , y ) − f ( x 0 , y ) \psi(y)=f(x_0+\triangle x,y)-f(x_0,y) ψ(y)=f(x0+x,y)f(x0,y)

    注意!n阶混合偏导类似,只需在某点存在到n阶的连续混合偏导数,那么在这点m阶混合偏导数都与求导顺序无关

    ( m ≤ n ) (m\le n) (mn)

    中值定理

    先介绍一个概念:凸区域
    若D上任意两点的连线都含于D——称D为凸区域,即
    ∀ P 1 ( x 1 , y 1 ) , P 2 ( x 2 , y 2 ) ∈ D , ∀ λ ∈ [ 0 , 1 ] \forall P_1(x_1,y_1),P_2(x_2,y_2)\in D,\forall \lambda\in[0,1] P1(x1,y1),P2(x2,y2)D,λ[0,1],有 P ( x 1 + λ ( x 2 − x 1 ) , y 1 + λ ( y 2 − y 1 ) ) ∈ D P(x_1+\lambda(x_2-x_1),y_1+\lambda (y_2-y_1))\in D P(x1+λ(x2x1),y1+λ(y2y1))D
    定理:

    • f f f在凸开域D上连续,在D所有内点可微
    • 那么对 ∀ P ( a , b ) , Q ( a + h , b + k ) ∈ D , ∃ θ ∈ ( 0 , 1 ) \forall P(a,b),Q(a+h,b+k)\in D,\exist\theta\in(0,1) P(a,b),Q(a+h,b+k)D,θ(0,1),使得 f ( a + h , b + k ) − f ( a , b ) f(a+h,b+k)-f(a,b) f(a+h,b+k)f(a,b) = f x ( a + θ h , b + θ k ) h + f y ( a + θ h , b + θ k ) k =f_x(a+\theta h,b+\theta k)h+f_y(a+\theta h,b+\theta k)k =fx(a+θh,b+θk)h+fy(a+θh,b+θk)k

    证明

    这个定理的关键在于,对不同的 △ x , △ y \triangle x,\triangle y x,y,最后都是同一个 θ \theta θ

    • 这个证明有意思啦,通过把问题转化为一元函数的中值定理来解决,设 Φ ( t ) = f ( a + t h , b + t k ) \Phi(t)=f(a+th,b+tk) Φ(t)=f(a+th,b+tk)这是定义在 [ 0 , 1 ] [0,1] [0,1]上的一元,由条件知,该函数在 [ 0 , 1 ] [0,1] [0,1]上连续,在 ( 0 , 1 ) (0,1) (0,1)上可微
    • 由一元的中值定理,知,对于 Φ ( 1 ) − Φ ( 0 ) = f ( a + h , b + k ) − f ( a , b ) \Phi(1)-\Phi(0)=f(a+h,b+k)-f(a,b) Φ(1)Φ(0)=f(a+h,b+k)f(a,b)定存在 θ ∈ ( 0 , 1 ) \theta\in(0,1) θ(0,1),使得 Φ ( 1 ) − Φ ( 0 ) = Φ ′ ( θ ) \Phi(1)-\Phi(0)=\Phi'(\theta) Φ(1)Φ(0)=Φ(θ) = f x ( a + θ h , b + θ k ) h + f y ( a + θ h , b + θ k ) k =f_x(a+\theta h,b+\theta k)h+f_y(a+\theta h,b+\theta k)k =fx(a+θh,b+θk)h+fy(a+θh,b+θk)k

    注意!

    • 该定理对区域的要求是凸开域,其实闭开域也不是不行,只要满足!对D内任意两点 P 1 ( x 1 , y 1 ) , P 2 ( x 2 , y 2 ) , 以 及 任 意 λ ∈ ( 0 , 1 ) P_1(x_1,y_1),P_2(x_2,y_2),以及任意\lambda\in(0,1) P1(x1,y1),P2(x2,y2)λ(0,1),都有 P ( x 1 + λ ( x 2 − x 1 ) , y 1 + λ ( y 2 − y 1 ) ) ∈ i n t   D P(x_1+\lambda(x_2-x_1),y_1+\lambda (y_2-y_1))\in int\ D P(x1+λ(x2x1),y1+λ(y2y1))int D D 1 = : { ( x , y ) ∣ ( x − a ) 2 + ( y − b ) ≤ r 2 } D_1=:\{(x,y)|(x-a)^2+(y-b)\le r^2\} D1={(x,y)(xa)2+(yb)r2} D 2 = { ( x , y ) ∣ ( x , y ) ∈ [ a , b ] × [ c , d ] } D_2=\{(x,y)|(x,y)\in[a,b]×[c,d]\} D2={(x,y)(x,y)[a,b]×[c,d]}若函数 f f f D 1 , D 2 D_1,D_2 D1,D2上都连续,则在 D 1 D_1 D1上有上述定理成立,而在 D 2 D_2 D2上就不一定成立了,这是因为!在 D 2 D_2 D2上不一定满足 ∈ i n t   D \in int\ D int D的条件,函数在边界处可能没有偏导数,由可微的必要条件得,在边界处不可微
      • 偏导——例如 y = c y=c y=c △ x = 0 \triangle x=0 x=0 f x f_x fx的偏导怎么求??
    • 之前也有一个中值定理,这两者的区别当然就是 θ \theta θ啦!这里的中值点要求在 P Q PQ PQ连线上,之前那个只要在包含P,Q的区域内就行了

    推论

    • f f f在D上存在偏导
    • f x = f y ≡ 0 f_x=f_y\equiv0 fx=fy0
    • 那么, f f f在D上为常量函数

    泰勒定理

    • f f f P 0 P_0 P0的某邻域 U ( P 0 ) U(P_0) U(P0)有直到n+1阶的连续偏导数
    • 那么,对 ∀ ( x 0 + h , y 0 + k ) ∈ U ( P 0 ) , ∃ θ ∈ ( 0 , 1 ) \forall(x_0+h,y_0+k)\in U(P_0),\exist\theta\in(0,1) (x0+h,y0+k)U(P0),θ(0,1)使得 f ( x 0 + h , y 0 + k ) = f ( x 0 , y 0 ) + ( h ∂ ∂ x + k ∂ ∂ y ) f ( x 0 , y 0 ) f(x_0+h,y_0+k)=f(x_0,y_0)+(h\frac{\partial}{\partial x}+k\frac{\partial}{\partial y})f(x_0,y_0) f(x0+h,y0+k)=f(x0,y0)+(hx+ky)f(x0,y0) + 1 2 ! ( h ∂ ∂ x + k ∂ ∂ y ) 2 f ( x 0 , y 0 ) + . . . + 1 n ! ( h ∂ ∂ x + k ∂ ∂ y ) n f ( x 0 , y 0 ) + +\frac{1}{2!}(h\frac{\partial}{\partial x}+k\frac{\partial}{\partial y})^2f(x_0,y_0)+...+\frac{1}{n!}(h\frac{\partial}{\partial x}+k\frac{\partial}{\partial y})^nf(x_0,y_0)+ +2!1(hx+ky)2f(x0,y0)+...+n!1(hx+ky)nf(x0,y0)+ + 1 ( n + 1 ) ! ( h ∂ ∂ x + k ∂ ∂ y ) n + 1 f ( x 0 + θ h , y 0 + θ k ) +\frac{1}{(n+1)!}(h\frac{\partial}{\partial x}+k\frac{\partial}{\partial y})^{n+1}f(x_0+\theta h,y_0+\theta k) +(n+1)!1(hx+ky)n+1f(x0+θh,y0+θk)
    • 其中, ( h ∂ ∂ x + k ∂ ∂ y ) m = ∑ i = 0 m C m i ∂ m ∂ x i ∂ y m − i f ( x 0 , y 0 ) h i k m − i (h\frac{\partial}{\partial x}+k\frac{\partial}{\partial y})^m=\sum\limits_{i=0}^mC_m^i\frac{\partial^m}{\partial {x}^i\partial{y^{m-i}}}f(x_0,y_0)h^ik^{m-i} (hx+ky)m=i=0mCmixiymimf(x0,y0)hikmi
    • 余项也可写作 o ( ρ n ) o(\rho^n) o(ρn),此时只需 f 在 U ( P 0 ) f在U(P_0) fU(P0)上存在直到n阶的连续偏导数

    极值定义

    • f f f P 0 ( x 0 , y 0 ) P_0(x_0,y_0) P0(x0,y0)得到某邻域 U ( P 0 ) U(P_0) U(P0)上有定义
    • ∀ P ( x , y ) ∈ U ( p 0 ) \forall P(x,y)\in U(p_0) P(x,y)U(p0),成立 f ( P ) ≤ f ( P 0 ) f(P)\le f(P_0) f(P)f(P0)极大值
    • 这里的极值点仅限于D的内点

    极值必要

    • f 在 P 0 f在P_0 fP0处存在偏导
    • 且在 P 0 P_0 P0取得极值,则 f x ( x 0 , y 0 ) = f y ( x 0 , y 0 ) = 0 (1) f_x(x_0,y_0)=f_y(x_0,y_0)=0\tag{1} fx(x0,y0)=fy(x0,y0)=0(1)
    • 满足(1)——稳定点

    极值充分(Hesse矩阵)

    • f f f P 0 P_0 P0某领域 U ( P 0 ) U(P_0) U(P0)有二阶连续偏导
    • P 0 P_0 P0是稳定点
    • Hesse矩阵: H ( f ) ∣ P 0 ( f x x f x y f y x f y y ) P 0 H(f)|_{P_0}\begin{pmatrix}f_{xx}&f_{xy}\\f_{yx}&f_{yy}\end{pmatrix}_{P_0} H(f)P0(fxxfyxfxyfyy)P0
    • f x x > 0 , ∣ ∣ > 0 ⇒ P 0 极 小 值 f_{xx}>0,||>0\Rightarrow P_0极小值 fxx>0,>0P0,矩阵正定
    • f x x > 0 , ∣ ∣ < 0 ⇒ P 0 极 大 值 f_{xx}>0,||<0\Rightarrow P_0极大值 fxx>0,<0P0,负定
    • ∣ ∣ < 0 ⇒ 在 P 0 取 不 到 极 值 ||<0\Rightarrow在P_0取不到极值 <0P0,不定
    • ∣ ∣ = 0 ⇒ 不 能 判 断 ||=0\Rightarrow不能判断 =0
    展开全文
  • 泰勒公式和海森矩阵(Hessian-matrix)

    千次阅读 2019-11-06 18:02:05
    这个公式来自于微积分的泰勒定理(Taylor’s theorem),泰勒定理描述了一个可微函数,如果函数足够光滑的话,在已知函数在某一点的各阶数值的情况之下,泰勒公式可以用这些数值做系数构建一个多项式来近似函数...
  • 我们接触到的很多数学公式涉及到偏导数,那么图像的偏导数怎么求呢? 我们可以认为:图像就是一个复杂的曲面,我们要想得到曲面点的梯度,就需要对该点求偏导。 求偏导的输入:附近点的灰度值 求偏导的输出:一个数 ...
  • 一元泰勒公式的几个变体很重要
  • 泰勒公式是一个在函数上取某点的近似值,如果函数足够平滑的话,在已知函数在某一点的各阶数值的情况之下,泰勒公式可以用这些数值做系数构建一个多项式来近似函数在这一点的近似值。泰勒公式还给出了这个多项式...
  • 深度学习的基础 - 偏导数、方向导数、梯度 flyfish 柯西将极限的定义引入了微积分,很创新。因为微积分的创造者们没有把一件事说明白,他用新的概念把这件事说明白了。问题变了,思维方式就变了,之前的人的问题是...
  • 偏导数 f x ( x 0 , y 0 ) f_x(x_0,y_0) fx​(x0​,y0​)就是曲面被平面 y = y 0 y=y_0 y=y0​所截的曲线在 M 0 M_0 M0​处切线 M 0 T x M_0T_x M0​Tx​对 x x x轴的斜率 偏导数 f y ( x 0 , y 0 ) f_y(x_0,y_0) ...
  • 泰勒公式与极值问题的知识点总结

    千次阅读 2020-05-10 22:11:46
    具体函数求所有二阶偏导数: 这个就很烦,一个比较靠谱的方法就是硬算,先求fx,fyf_x,f_yfx​,fy​,再求fxx,fxy,fyyf_{xx},f_{xy},f_{yy}fxx​,fxy​,fyy​ 注意了,fxy=fyxf_{xy}=f_{yx}fxy​=fyx​的条件是累次...
  • 写在前面:重温XGBoost的时候,发现很多基本的数学知识已经忘得差不多了。借温习XGBoost的机会,就重新走一遍与XGBoost...泰勒公式 定义:泰勒公式是一个用函数在某点的信息描述其附近取值的公式。 基本形式: ...
  • 二元函数二阶混合偏导数的近似计算式与误差阶推导 问题 引理一: 引理二: 引理三: 引理四: 命题 数值实验 函数一 函数二 结论 问题 假设 f(x,y)f(x,y)f(x,y)在全平面内存在且足够的光滑,求 fxy(x0,y0)f_{xy}(x_0...
  • 公式定义如下: 再强调一遍,导数f’(x)f’(x)f’(x)是函数f(x)f(x)f(x)在xxx轴上某一点处沿着xxx轴正方向的变化率。 直观地看,也就是在xxx轴上某一点处,如果f’(x)>0f’(x)>0f’(x)>0,说明f(x)f(x)f(x...
  • 数学分析 多元函数微分学(第17章)

    千次阅读 2020-08-15 02:08:33
    2.偏导数 3.可微性条件 4.可微性的几何意义及应用 二.复合函数微分法 1.复合函数求导法则 2.复合函数的全微分 三.方向导数与梯度 四.泰勒公式与极限问题 1.高阶偏导数 2.中值定理与泰勒公式 3.极值问题 ...
  • Hessian)是一个自变量为向量的实值函数的二阶偏导数组成的方块矩阵,此函数如下: 如果  f  所有的二阶导数都存在,那么  f  的海森矩阵即: H ( f ) ij ( x )  =  DiDjf ( x ) ...
  • 你可能会奇怪,讲自动驾驶怎么说起了数学,泰勒公式是我很喜欢的一个公式,自动驾驶中很多地方用到的是数学,只有把这些都弄明白,才能更好的理解自动驾驶,这也是我的探究过程。 泰勒公式一句话描述:就是用...
  • 《三体》读后思考-泰勒展开/维度打击/黑暗森林

    万次阅读 多人点赞 2017-07-22 16:35:48
    有了这个走势信息,我们就能预测在稍微理原点时,函数曲线的大致走向了,这就使得对整个 y = s i n ( x ) y=sin(x) 的画像向前又描了一笔。事实上, y = x y=x 这条直线就是 y = s i n ( x ) y=sin(x) 在原点处的...
  • 常用泰勒级数展开

    2021-01-25 15:37:16
    因为日常计算中经常需要做一些近似,而泰勒级数展开是其中最常用的一种,所以本篇整理了部分常见的(一元函数)泰勒公式展开
  • 一元函数的泰勒公式 或者可以写成: 二元函数的泰勒级数对 二元函数 f(x, y), 考虑在点 (a, b) 附近方向 (u, v) 有微小增量 f(a + tu, b + tv), 定义函数: 此时 是对 t 的单变量函数,利用上面的 一元函数的泰勒...
  • 高等数学(Calculus II)

    2019-05-03 20:31:28
    高等数学 多元函数 偏导数 全微分 重积分 曲线积分 曲面积分
  • 已更新内容:极限相关导数相关积分相关三角函数相关不等式相关多元函数其他公式复合函数相关二重积分隐藏条件一、极限相关泰勒公式 判断是否正负相间技巧:若图像爆炸式增长,则恒正,如 : 若图像上下波动或增长...
  • 00——数学知识清单

    2021-10-18 11:13:31
    偏导数 一阶偏导数 高阶偏导数 梯度 向量 向量运算 四则运算 数乘运算 向量求导 内积 向量运算性质 分配律 结合律 交换律 范数 一范数 二范数 无穷范数 通用范数 矩阵 基础矩阵 方阵 对阵矩阵...
  • 这节课主要介绍了偏导数,多元复合函数求导法则,方向导数与梯度,多元函数泰勒公式,多元函数的极值,矩阵的求导等知识点。 掌握目标: 1、了解偏导数的概念,掌握求法 2、掌握复合偏导数的求法 3、掌握方向导数和...
  • 泰勒级数展开

    千次阅读 2018-07-09 10:29:06
    1.1 雅各比矩阵 1.2 海森矩阵 1.3 变量为向量的泰勒级数展开
  • 考研高等数学公式(数学一)

    千次阅读 多人点赞 2019-08-16 11:48:57
    文章目录初等数学因式分解经典不等式数列等差等比三角倍角和差降阶平方面积、体积、弧长极限等价无穷小一元微分导数定义求导(7+10)高阶求导莱布尼茨公式泰勒公式麦克劳林公式中值定理介值定理零点定理费马定理罗尔...
  • 08 集成学习 - XGBoost概述 根据上面的知识对XGBoost公式推导 回顾: 第t次迭代后,模型的预测值= t-1次模型的预测值...即对原损失函数进行泰勒展开,yi是定值,y^t是变化量,即泰勒公式中的Δx。然后将yit展开: yit ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,944
精华内容 1,177
关键字:

偏导数的泰勒公式