美文网首页
矩阵求导入门

矩阵求导入门

作者: Paycation | 来源:发表于2019-04-04 00:09 被阅读0次

    机器学习中,往往是对整个数据集操作,“原子化”的运算过于繁琐,将其抽象成矩阵,使得思路更加清晰,也更便于转换成具体的代码。

    基本定义

    矩阵求导的本质就是普通的求导写成了矩阵的形式,因此我们约定一些规则在下文。这里用粗体小写表示向量,粗体大写表示矩阵。

    向量→标量函数求导

    向量→标量函数即输入为向量,输出为标量的函数。有函数f:\mathbb{R}^n\to\mathbb{R},输入一个n维列向量\textbf{x},输出一个实数。对其求导的定义式:
    \dfrac{\partial f(\textbf{x})}{\partial{\textbf{x}}}=\begin{bmatrix} \dfrac{\partial f(\textbf{x})}{\partial{x_1}}\\ \dfrac{\partial f(\textbf{x})}{\partial{x_2}}\\ ...\\ \dfrac{\partial f(\textbf{x})}{\partial{x_n}} \end{bmatrix}=\nabla f
    这个定义式正好和梯度相符合。

    向量→向量函数求导

    向量→向量函数即输入输出都是向量的函数。有函数f:\mathbb{R}^n\to\mathbb{R}^m,输入一个n维列向量\textbf{x},输出一个m维列向量。可以视为多个标量函数放到一个列向量中构成这个向量函数,即f(\textbf{x})=\begin{bmatrix}f_1(\textbf{x})&f_2(\textbf{x})&...&f_m (\textbf{x})\end{bmatrix}^T。如果只是对一个标量函数求导,那么就和上面一样:
    \dfrac{\partial f_i(\textbf{x})}{\partial{\textbf{x}}}=\begin{bmatrix} \dfrac{\partial f_i(\textbf{x})}{\partial{x_1}}\\ \dfrac{\partial f_i(\textbf{x})}{\partial{x_2}}\\ ...\\ \dfrac{\partial f_i(\textbf{x})}{\partial{x_n}} \end{bmatrix}=\nabla f_i
    现在,把上面的式子“展开”成一个梯度构成的矩阵里,才能完整表达这个向量函数所有的求导结果:
    \dfrac{\partial f(\textbf{x})}{\partial{\textbf{x}}}=\begin{bmatrix} \dfrac{\partial f_1(\textbf{x})}{\partial{x_1}} &\dfrac{\partial f_2(\textbf{x})}{\partial{x_1}} &... &\dfrac{\partial f_m(\textbf{x})}{\partial{x_1}}\\ \dfrac{\partial f_1(\textbf{x})}{\partial{x_2}} &\dfrac{\partial f_2 (\textbf{x})}{\partial{x_2}} &... &\dfrac{\partial f_m(\textbf{x})}{\partial{x_2}}\\ ...&...&...&...\\ \dfrac{\partial f_1(\textbf{x})}{\partial{x_n}} &\dfrac{\partial f_2(\textbf{x})}{\partial{x_n}} &... &\dfrac{\partial f_m(\textbf{x})}{\partial{x_n}} \end{bmatrix}=\begin{bmatrix} \nabla f_1 & \nabla f_2 &...&\nabla f_m \end{bmatrix}
    函数 f 求导后输出了一个n\times m的矩阵。第i列是 f 的第i行的标量函数的梯度。它其实也是Jacobian矩阵的转置。

    上面是普遍情况,而很多时候这里的f(\textbf{x})是由同一个函数组成,比如是一列\ln函数,那么有\dfrac{\partial f(\textbf{x})}{\partial{\textbf{x}}}=\dfrac{1}{\textbf{x}},表示向量的每一个元素都取倒数。
    也可以这样写:\ln\textbf{x}=\dfrac{1}{\textbf{x}},看起来就和单变量的函数一样。
    如果复杂一点 -\textbf{y}\ln(\textbf{1-x})求导,其中\textbf{y}是维度和\textbf{x}维度相同的常数列向量。
    先说一个前提,接下来会使用这样的表示方法:a^Tb=[a_1b_1+a_2b_2],而ab=\begin{bmatrix}a_1b_1\\a_2b_2\end{bmatrix},带转置的表示点乘,否则就是元素相乘,不改变原来两个向量的维度。
    那么上式只看其中一行的情况:f(x_i) = -y_i\ln (1-x_i),求导得\dfrac{y_i}{1-x_i},每行都如此,因此最终的结果写成\dfrac{\textbf{y}}{1-\textbf{x}}。这样一来,向量之间的运算看起来就像实数之间的运算。

    矩阵→标量函数求导

    即输入为矩阵,输出为标量的函数的求导。有函数f: \mathbb{R}^{m\times n}\to\mathbb{R},其参数是m\times n矩阵\textbf{X}。这和上面向量→标量函数求导相似,其相当于是n\times 1矩阵为参数。我们只需要把它展开即可:

    \dfrac{\partial f(\textbf{X})}{\partial{\textbf{X}}}=\begin{bmatrix} \dfrac{\partial f(\textbf{X})}{\partial{\textbf{X}_{11}}}& \dfrac{\partial f(\textbf{X})}{\partial{\textbf{X}_{12}}}& ...& \dfrac{\partial f(\textbf{X})}{\partial{\textbf{X}_{1n}}}\\ \dfrac{\partial f(\textbf{X})}{\partial{\textbf{X}_{21}}}& \dfrac{\partial f(\textbf{X})}{\partial{\textbf{X}_{22}}}& ...& \dfrac{\partial f(\textbf{X})}{\partial{\textbf{X}_{2n}}}\\ ...&...&...&...\\ \dfrac{\partial f(\textbf{X})}{\partial{\textbf{X}_{m1}}}& \dfrac{\partial f(\textbf{X})}{\partial{\textbf{X}_{m2}}}& ...& \dfrac{\partial f(\textbf{X})}{\partial{\textbf{X}_{mn}}} \end{bmatrix}
    相当于是把\partial f(\textbf{X})丢到矩阵的每一个元素上面构成一个新的矩阵。而且这些元素的位置不变。

    举一个具体的例子:\dfrac{\partial{\textbf{Ax}}}{\partial{\textbf{x}}},其中\textbf{A}=\begin{bmatrix}a_{11}&a_{12}&a_{13}\\a_{21}&a_{22}&a_{23}\end{bmatrix}\textbf{x}=\begin{bmatrix}x_1\\x_2\\x_3\end{bmatrix}
    不难看出\textbf{Ax}本质是一个向量→向量函数,且满足f: \mathbb{R}^3\to\mathbb{R}^2。因此输出的应该是一个3\times 2矩阵。我们记f_1(\textbf{x})=a_{11}x_1+a_{12}x_2+a_{13}x_3f_2(\textbf{x})=a_{21}x_1+a_{22}x_2+a_{23}x_3
    \dfrac{\partial{\textbf{Ax}}}{\partial{\textbf{x}}}=\begin{bmatrix} \nabla f_1 & \nabla f_2\end{bmatrix}=\begin{bmatrix}a_{11}&a_{21}\\a_{12}&a_{22}\\a_{13} &a_{23}\end{bmatrix}=\textbf{A}^T

    这样一来,整个式子就紧凑了很多,看起来非常清爽。
    .
    .
    .
    .
    .


    参考文献

    [1] Herman Kamper. Vector and Matrix Calculus: https://www.kamperh.com/notes/kamper_matrixcalculus13.pdf

    相关文章

      网友评论

          本文标题:矩阵求导入门

          本文链接:https://www.haomeiwen.com/subject/nyribqtx.html