• 矩阵微分基础(一)


    这篇文章将介绍向量和矩阵微分相关基础,他是它将是后面学习的基础。

    一、梯度

    假设函数(f:R^{m imes n} mapsto R),它的函数变量为一个大小为(m imes n)的矩阵,函数值为实数,则​(f(A))关于​(A)的梯度是一个由偏导数组成的矩阵

    [ abla_Af(A) in R^{m imes n} = left [ egin{matrix} frac{partial f}{partial A_{11}} & frac{partial f}{partial A_{12}} & ... &frac{partial f}{partial A_{1n}} \ frac{partial f}{partial A_{21}} & frac{partial f}{partial A_{22}} & ... & frac{partial f}{partial A_{2n}}\ vdots & vdots & vdots &vdots & \ frac{partial f}{partial A_{m1}} & frac{partial f}{partial A_{m2} } &... & frac{partial f}{partial A_{mn}} end{matrix} ight ] ]

    请注意,$ abla_Af(A) (和)A(的大小总是一样的。特别的,当)A(是一个向量)x in R^n$时,则

    [ abla_xf(x) in R^{n} = left [ egin{matrix} frac{partial f}{partial x_1} \ frac{partial f}{partial x_2} \ vdots \ frac{partial f}{partial x_n} end{matrix} ight ] ]

    特别需要注意的是:只有当函数(f)是实数值时,它的梯度才会被定义,也就是说(f)必须返回一个标量值。例如我们不能求(Ax)的梯度((A)(m imes n)矩阵,(x)(n imes 1)向量),因为(Ax)结果是一个向量。由偏导数性质很容易得到下面事实

    • ( abla_x(f(x)+g(x))= abla_xf(x)+ abla_xg(x))
    • 对任意的(t in R)( abla_xtf(x)=t abla_xf(x))

    原则上,梯度是向量函数偏微分的扩展,但是在现实使用中,由于符号的原因可能会变得很棘手。下面来看这样一个例子,设(f(z)=z^Tz,zin R^n),显然( abla_zf(z)=2z),现在我们考虑下面式子

    [ abla f(Ax) ]

    我们该如何解释这个表达式呢?在这里至少有2中解释。

    • 第一种解释。对比第一个式子( abla_zf(z)=2z)中,我们认为上面式子是求点(Ax)处的梯度,这样结果是( abla f(Ax)=2Ax).
    • 第二种解释。我们认为上面(f(Ax)=g(x))是关于向量(x)的函数,所以是求点(x)处的梯度,( abla f(Ax)= abla g(x))

    上面两个解释的结果完全不同。根本原因是没有明确我们到底对谁进行微分,第一种解释其实对应为

    [ abla_{Ax}f(Ax) ]

    第二种解释对应为

    [ abla_xf(Ax) ]

    所以在梯度表达中,符号一定要清楚,避免产生歧义。

    二、海森(Hessian)矩阵

    设函数(f:R^n mapsto R),它的函数变量是一个(n)维向量(x),则(Hessian)矩阵是(f)(x)二阶偏导数组成的矩阵

    [ abla_x^2f(A) in R^{n imes n} = left [ egin{matrix} frac{partial f}{partial^2 x_1} & frac{partial f}{partial x_1partial x_2} & ... &frac{partial f}{partial x_1partial x_n} \ frac{partial f}{partial x_2partial x_1} & frac{partial f}{partial^2 x_2} & ... & frac{partial f}{partial x_2partial x_n}\ vdots & vdots & vdots &vdots & \ frac{partial f}{partial x_npartial x_1} & frac{partial f}{partial x_npartial x_2} & ... &frac{partial f}{partial^2 x_n} \ end{matrix} ight ] ]

    ( abla^2_xf(x) in R^{n imes n}),注意(Hessian)矩阵是一个对称矩阵

    [ abla_x^2f(A) _{ij}= abla_x^2f(A)_{ji} ]

    和梯度一样,(Hessian)矩阵只在函数(f)函数值是实数时才被定义。梯度可以看作向量函数的一阶导数,(Hessian)矩阵看作是向量函数的二阶导数。虽然这样的直觉没有错,但是还是需要注意下面的问题。

    ​ 如果(f:R mapsto R),则(f)(x)的二阶导数可以认为是(f)(x)一阶导数的导数。但是在向量函数中,如果(f:R^n mapsto R),则( abla_xf(x))是一个(n)维向量,前面说过多值函数的梯度没有意义,所以说对(f)的梯度再求梯度得到(f)的Hessian矩阵是错误的。但是事实上我们可以对( abla_xf(x)_i)求梯度,它得到的是(Hessian)矩阵的第(i)列。因此不能表示为( abla_x abla_xf(x)),而应该表示为

    [ abla^2_xf(x)=[ abla_x( abla_xf(x))_1, abla_x( abla_xf(x))_2,…, abla_x( abla_xf(x))_n] ]

    三、线性和二次向量函数的梯度和Hessian矩阵

    令线性函数(f(x)=b^Tx),其中(bin R^n)

    [f(x)=b^Tx=sum_{i=1}^nb_ix_i ]

    (frac{partial f(x)}{partial x_i}=b_i),所以( abla_x f(x)=b).现在考虑二次向量函数

    [f(x)=x^TAx=sum_{i=1}^nsum_{j=1}^nA_{ij}x_ix_j ]

    从而

    [frac{partial}{partial x_k}f(x)=frac{partial}{partial x_k}(sum_{i=1, i ot = k}^nA_{ik}x_ix_k+sum_{j=1, j ot = k}^nA_{kj}x_kx_j+A_{kk}x_k^2) \ =sum_{i=1, i ot = k}^nA_{ik}x_i+sum_{j=1, j ot = k}^nA_{kj}x_j+2A_{kk}x_k \ = sum^{n}_{i=1}A_{ik}x_i+sum^n_{j=1}A_{kj}x_j=2sum^n_{j=1}A_{kj}x_j ]

    我们假设(A)为对称矩阵,所以最后一步能化简。注意到( abla_xf(x)_k)(A)的第(k)行与(x)内积的两倍。因此( abla_x x^TAx = 2Ax).

    接下来再看看(f(x)=x^TAx)(Hessian)矩阵

    [ abla_x^2f(x)=frac{partial}{partial x_k partial x_l}f(x)=frac{partial}{partial x_k}[frac{partial f(x)}{partial x_l}]=frac{partial}{partial x_k}[2sum^n_{j=1}A_{lj}x_j]=2A_{kl} ]

    总结一下:

    • ( abla_xb^Tx=b)
    • ( abla_xx^TAx=2Ax) 其中(A^T=A)
    • ( abla_x^2x^TAx=2A) 其中(A^T=A)

    四、最小二乘法矩阵推导

    假设我们有一个矩阵(A in R^{m imes n})和一个向量(b in R^m),这种情况下我们不能找到(x in R^n)满足(Ax=b),但是我们可以找找到(x)使得(Ax)尽可能的接近(b),于是我们需要最小化

    [J(x)=||Ax-b||^2 ]

    我们考虑求( abla_xJ(x))然后令梯度等于0即可解出(x),这时候得到的(x)使得(J( heta))达到最小。

    [ abla_xJ(x)= abla_x(Ax-b)^T(Ax-b)quad quad quad quadquad quad quad \ = abla_x(x^TA^TAx-2b^TAx+b^Tb) \ =2A^TAx-2A^Tb quad quad quad quad quadquad ]

    (J(x)=0)即可得最小二乘法的解为(x=(A^TA)^{-1}A^Tb).

    五、行列式的梯度

    这里我们来考虑行列式的梯度,回忆行列式计算方法

    [|A|=sum_{i=1}^n(-1)^{i+j}A_{ij}M_{ij} quad for ; any ; j =1,2,...,n ]

    其中(M_{ij})((i,j))处的代数余子式。

    [frac{partial}{partial A_{kl}}|A|=frac{partial}{partial A_{kl}}sum_{i=1}^n(-1)^{i+l}A_{il}M_{il}=(-1)^{k+l}A_{kl}M_{kl}=A^{*}_{lk} ]

    其中(A^*)(A)的伴随矩阵。从而

    [ abla_A|A|=(A^*)^T=|A|(A^{-1})^T ]

    以上均假设(A)是可逆矩阵。行列式的梯度等于它的伴随矩阵的转置。例如(f(A)=ln(|A|),|A|>0),求( abla_Af(A))

    [ abla_Aln(|A|)=frac{1}{|A|}frac{partial |A|}{partial A}=A^{-1} ]

    上面默认(A)是对称矩阵。

    六、用特征值来做最优化

    考虑下面的优化问题

    [max_{x in R^n}quad x^TAx quad where ;x^Tx=1 ]

    上式中(A)是一个对称矩阵。先将使用等式约束的目标函数写成拉格朗日形式,然后求解最优值

    [L(x,lambda)=x^TAx-lambda (x^Tx-1) ]

    其中(lambda)称为拉格朗日因子,设(x^*)是函数(L(x,lambda))取得最大值的点,则在(x^*)函数的梯度为0

    [ abla_xL(x,lambda)=2Ax-2lambda x = 0 ]

    再化简可以得到等式(Ax=lambda x),而且(x)是单位向量,于是解就是(A)的特征向量。

  • 相关阅读:
    CTR预估(3)--正则,交叉验证、特征提取、变量分类
    CTR预估(1)--CTR基础
    svm支持向量机系列(4) --软间隔支持向量机
    机器为什么可以学习(4)---错误和噪声
    svm支持向量机系列(3) -- kernel支持向量机
    svm支持向量机系列(2) -- 对偶支持向量机
    svm支持向量机系列(1) -- 线性支持向量机
    机器为什么可以学习(3)----vc维
    机器为什么可以学习(2)---一般化理论
    GitLab 数据库
  • 原文地址:https://www.cnblogs.com/tandier/p/8549807.html
Copyright © 2020-2023  润新知