zoukankan      html  css  js  c++  java
  • 向量对向量求导

    设两个向量 $x,y$ 分别为

    $$x = (x_{1},x_{2},cdots, x_{m})^{T}$$

    $$y = (y_{1},y_{2},cdots, y_{n})^{T}$$

    虽然是多变量对多变量求偏导,但最终都是归结于一个单变量对另一个单变量求偏导,只是函数和自变量都写成了向量形式。

    我们要做的就是找到求偏导的结果所对应的形式。

    形状规则:向量 $y$ 对向量 $x$ 求导,分两步:

       1)向量 $y$ 的每个元素是标量,先做 $y$ 的每个元素对向量 $x$ 求导,这里按照标量对向量的求导规则进行。

       2)第一步做好后,将求导结果按 $y$ 的形状排列。

    观察下面这个图,向量对向量求导就只有这四种情况,求导结果其实是个多维数组(张量)。

       

    1. 行向量对列向量求导

       向量 $y^{T}$ 是一个 $1 imes n$ 的行向量,现在它对自变量 $x$ 求导,其中 $x$ 是一个 $ m imes 1$ 的列向量,向量 $y^{T}$ 中的每个元素都是向量 $x$ 的函数。

       那这个结果会是什么形式呢?每个元素 $y_{j}$ 对向量 $x$ 都有 $m$ 个偏导数,而向量 $y^{T}$ 有 $n$ 个元素,所以结果必然有 $mn$ 个元素。

       标量对向量求偏导,结果是个列向量,所以每个元素标量 $y_{j}$ 对向量 $x$ 的导数为

    $$frac{d y_{j}}{d x} = egin{bmatrix}
    frac{partial y_{j}}{partial x_{1}} \
    frac{partial y_{j}}{partial x_{2}} \
    cdots \
    frac{partial y_{j}}{partial x_{m}}
    end{bmatrix}$$

       所以

    $$frac{d y^{T}}{d x} = egin{bmatrix}
    frac{d y_{1}}{d x} & frac{d y_{2}}{d x} & cdots & frac{d y_{n}}{d x}
    end{bmatrix} =
    egin{bmatrix}
    frac{partial y_{1}}{partial x_{1}} & frac{partial y_{2}}{partial x_{1}} & cdots & frac{partial y_{n}}{partial x_{1}} \
    frac{partial y_{1}}{partial x_{2}} & frac{partial y_{2}}{partial x_{2}} & cdots  & frac{partial y_{n}}{partial x_{2}}\
    cdots  & cdots  & cdots  & cdots \
    frac{partial y_{1}}{partial x_{m}} & frac{partial y_{2}}{partial x_{m}} & cdots  & frac{partial y_{n}}{partial x_{m}}
    end{bmatrix}$$

       所以结果就是一个 $m imes n$ 矩阵。

       进一步地:行向量 $(Ax)^{T}$ 对列向量 $x$ 的导数为

    $$frac{d (Ax)^{T}}{d x} = A^{T}$$

       推导:设 $A = (a_{ij})_{n imes m}$,$Ax = c$,则 $c$ 的第 $k$ 个元素的值为

    $$c_{k} = sum_{j = 1}^{m}a_{kj}x_{j}$$

             $c_{k}$ 对列向量 $x$ 求偏导有

    $$frac{d c_{k}}{d x} = egin{bmatrix}
    frac{partial c_{k}}{partial x_{1}} \
    frac{partial c_{k}}{partial x_{2}} \
    cdots \
    frac{partial c_{k}}{partial x_{m}}
    end{bmatrix} = egin{bmatrix}
    a_{k1} \
    a_{k2} \
    cdots \
    a_{km}
    end{bmatrix}$$

             所以

    $$frac{d c^{T}}{d x} = A^{T}$$

     

    2. 列向量对行向量求导

       向量 $y$ 是一个 $n imes 1$ 的矩阵,现在它对向量 $x^{T}$ 求导,其中 $x^{T}$ 是一个 $1 imes m$ 的矩阵,向量 $y$ 中的每一个元素都是向量 $x^{T}$ 的函数。

       同上分析,这结果也有 $mn$ 个偏导数。标量对行向量求导,结果是个行向量,所以每个元素标量 $y_{j}$ 对向量 $x^{T}$ 的导数为

    $$frac{d y_{j}}{d x^{T}} = egin{bmatrix}
    frac{partial y_{j}}{partial x_{1}} & frac{partial y_{j}}{partial x_{2}} & cdots  & frac{partial y_{j}}{partial x_{m}}
    end{bmatrix}$$

       所以

    $$frac{d y}{d x^{T}} = egin{bmatrix}
    frac{partial y_{1}}{partial x_{1}} & frac{partial y_{1}}{partial x_{2}} & cdots  & frac{partial y_{1}}{partial x_{m}}\
    frac{partial y_{2}}{partial x_{1}} & frac{partial y_{2}}{partial x_{2}} & cdots  & frac{partial y_{2}}{partial x_{m}}\
    cdots  & cdots  & cdots  & cdots \
    frac{partial y_{n}}{partial x_{1}} & frac{partial y_{n}}{partial x_{2}} & cdots  & frac{partial y_{n}}{partial x_{m}}
    end{bmatrix}$$

       显然有

    $$frac{d y}{d x^{T}} = left ( frac{d y^{T}}{d x} ight )^{T}$$

       进一步地:列向量 $Ax$ 对行向量 $x^{T}$ 的导数为

    $$frac{d (Ax)}{d x^{T}} = A$$

       推导:设 $A = (a_{ij})_{n imes m}$,$Ax = c$,则 $c$ 的第 $k$ 个元素的值为

    $$c_{k} = sum_{j = 1}^{m}a_{kj}x_{j}$$

             $c_{k}$ 对行向量 $x^{T}$ 求偏导有

    $$frac{d c_{k}}{d x^{T}} = egin{bmatrix}
    frac{partial c_{k}}{partial x_{1}} & frac{partial c_{k}}{partial x_{2}} & cdots & frac{partial c_{k}}{partial x_{m}}
    end{bmatrix} = egin{bmatrix}
    a_{k1} & a_{k2} & cdots  & a_{km}
    end{bmatrix}$$

             显然有

    $$frac{d c}{d x^{T}} = A$$

  • 相关阅读:
    python json 和 pickle的补充 hashlib configparser logging
    go 流程语句 if goto for swich
    go array slice map make new操作
    go 基础
    块级元素 行内元素 空元素
    咽炎就医用药(慢性肥厚性咽炎)
    春季感冒是风寒还是风热(转的文章)
    秋季感冒 咳嗽 怎么选药
    解决IE浏览器“无法显示此网页”的问题
    常用的 css 样式 记录
  • 原文地址:https://www.cnblogs.com/yanghh/p/13758243.html
Copyright © 2011-2022 走看看