博客
关于我
矩阵 向量求导法则
阅读量:306 次
发布时间:2019-03-03

本文共 3778 字,大约阅读时间需要 12 分钟。

矩阵与向量微分运算规则

1. 行向量对元素求导

行向量对元素求导是线性代数中的基本操作,用于描述如何微分一个行向量中的元素。假设有一个行向量 ( \mathbf{u} = [u_1, u_2, ..., u_n]^T ),其中 ( u_i ) 表示第 ( i ) 个元素。行向量对第 ( i ) 个元素求导的结果为一个标量,表示该元素对整体行向量的变化率。数学表达式为:

[\frac{\partial \mathbf{u}}{\partial u_i} = 1]

这个结果表明,行向量对其任意一个元素求导的结果都为1。


2. 列向量对元素求导

列向量对元素求导的过程类似于行向量,但求导的结果是一个列向量。假设有一个列向量 ( \mathbf{v} = [v_1; v_2; ...; v_n] ),其中 ( v_i ) 表示第 ( i ) 个元素。列向量对第 ( i ) 个元素求导的结果为:

[\frac{\partial \mathbf{v}}{\partial v_i} = \mathbf{e}_i]

其中 ( \mathbf{e}_i ) 是第 ( i ) 个基向量,表示仅第 ( i ) 个位置为1,其余位置为0。


3. 矩阵对元素求导

矩阵对元素求导是一个扩展的概念,适用于矩阵 ( A ) 中的每一个元素 ( a_{ij} )。假设矩阵 ( A ) 的大小为 ( m \times n ),则矩阵对第 ( (i,j) ) 个元素求导的结果仍然是标量:

[\frac{\partial A}{\partial a_{ij}} = 1]

这个结果表明,矩阵对其任意一个元素求导的结果都为1。


4. 元素对行向量求导

当元素 ( x ) 对行向量 ( \mathbf{u} = [u_1, u_2, ..., u_n]^T ) 求导时,结果是一个行向量,其中只有与 ( x ) 相关联的位置为1,其余位置为0。例如,假设 ( x = u_2 ),则:

[\frac{\partial \mathbf{u}}{\partial x} = [0, 1, 0, ..., 0]^T]


5. 元素对列向量求导

元素对列向量 ( \mathbf{v} = [v_1; v_2; ...; v_n] ) 求导的结果是一个列向量。同样,只有与元素 ( x ) 相关联的位置为1,其余位置为0。例如,假设 ( x = v_3 ),则:

[\frac{\partial \mathbf{v}}{\partial x} = [0; 0; 1; 0, ..., 0]^T]


6. 矩阵对行向量求导

矩阵对行向量求导的结果是一个行向量。假设矩阵 ( A ) 是 ( m \times n ) 的矩阵,行向量 ( \mathbf{u} = [u_1, u_2, ..., u_n]^T ),则:

[\frac{\partial \mathbf{u}}{\partial A} = \mathbf{A}^T]

其中 ( \mathbf{A}^T ) 是矩阵 ( A ) 的转置。


7. 行向量对列向量求导

行向量对列向量求导的结果是一个标量矩阵(即一个矩阵),其中只有与行向量和列向量相关联的位置为1,其余位置为0。假设行向量 ( \mathbf{u} = [u_1, u_2, ..., u_n]^T ) 和列向量 ( \mathbf{v} = [v_1; v_2; ...; v_m]^T ),则:

[\frac{\partial \mathbf{v}}{\partial \mathbf{u}} = \mathbf{I}_{m \times n}]

其中 ( \mathbf{I}_{m \times n} ) 是一个 ( m \times n ) 的单位矩阵。


8. 列向量对行向量求导

列向量对行向量求导的结果是一个标量矩阵(即一个矩阵),其中只有与列向量和行向量相关联的位置为1,其余位置为0。假设列向量 ( \mathbf{v} = [v_1; v_2; ...; v_m]^T ) 和行向量 ( \mathbf{u} = [u_1, u_2, ..., u_n]^T ),则:

[\frac{\partial \mathbf{u}}{\partial \mathbf{v}} = \mathbf{I}_{n \times m}]

其中 ( \mathbf{I}_{n \times m} ) 是一个 ( n \times m ) 的单位矩阵。


9. 行向量对行向量求导

行向量对行向量求导的结果是一个标量矩阵(即一个矩阵),其中只有与行向量相关联的位置为1,其余位置为0。假设行向量 ( \mathbf{u} = [u_1, u_2, ..., u_n]^T ) 和行向量 ( \mathbf{w} = [w_1, w_2, ..., w_n]^T ),则:

[\frac{\partial \mathbf{w}}{\partial \mathbf{u}} = \mathbf{I}_{n \times n}]

其中 ( \mathbf{I}_{n \times n} ) 是一个 ( n \times n ) 的单位矩阵。


10. 列向量对列向量求导

列向量对列向量求导的结果是一个标量矩阵(即一个矩阵),其中只有与列向量相关联的位置为1,其余位置为0。假设列向量 ( \mathbf{v} = [v_1; v_2; ...; v_m]^T ) 和列向量 ( \mathbf{w} = [w_1; w_2; ...; w_m]^T ),则:

[\frac{\partial \mathbf{w}}{\partial \mathbf{v}} = \mathbf{I}_{m \times m}]

其中 ( \mathbf{I}_{m \times m} ) 是一个 ( m \times m ) 的单位矩阵。


11. 矩阵对行向量求导

矩阵对行向量求导的结果是一个行向量。假设矩阵 ( A ) 是 ( m \times n ) 的矩阵,行向量 ( \mathbf{u} = [u_1, u_2, ..., u_n]^T ),则:

[\frac{\partial \mathbf{u}}{\partial A} = \mathbf{A}^T]

其中 ( \mathbf{A}^T ) 是矩阵 ( A ) 的转置。


12. 矩阵对列向量求导

矩阵对列向量求导的结果是一个列向量。假设矩阵 ( A ) 是 ( m \times n ) 的矩阵,列向量 ( \mathbf{v} = [v_1; v_2; ...; v_n]^T ),则:

[\frac{\partial \mathbf{v}}{\partial A} = \mathbf{A}^T]

其中 ( \mathbf{A}^T ) 是矩阵 ( A ) 的转置。


例一

考虑矩阵微分的一种常见应用:误差传播。假设有一个函数 ( f(\mathbf{x}) = \mathbf{A}\mathbf{x} + \mathbf{b} ),其中 ( \mathbf{x} ) 是一个列向量,( \mathbf{A} ) 是一个矩阵,( \mathbf{b} ) 是一个行向量。假设误差 ( \Delta \mathbf{x} ) 在 ( \mathbf{x} ) 上的变化率为:

[\frac{\partial \mathbf{x}}{\partial \Delta \mathbf{x}} = \mathbf{I}]

则误差 ( \Delta f ) 在 ( \mathbf{x} ) 上的变化率为:

[\frac{\partial f}{\partial \mathbf{x}} = \mathbf{A}^T]

因此,误差 ( \Delta f ) 在 ( \mathbf{A} ) 上的变化率为:

[\frac{\partial f}{\partial \mathbf{A}} = \mathbf{A}^T \Delta f]


例二

考虑行向量微分的实际应用。假设有一个函数 ( f(\mathbf{u}) = \mathbf{A}\mathbf{u} ),其中 ( \mathbf{u} ) 是一个行向量,( \mathbf{A} ) 是一个矩阵。假设误差 ( \Delta \mathbf{u} ) 在 ( \mathbf{u} ) 上的变化率为:

[\frac{\partial \mathbf{u}}{\partial \Delta \mathbf{u}} = \mathbf{I}]

则误差 ( \Delta f ) 在 ( \mathbf{u} ) 上的变化率为:

[\frac{\partial f}{\partial \mathbf{u}} = \mathbf{A}^T]

因此,误差 ( \Delta f ) 在 ( \mathbf{A} ) 上的变化率为:

[\frac{\partial f}{\partial \mathbf{A}} = \mathbf{A}^T \Delta f]

转载地址:http://jasm.baihongyu.com/

你可能感兴趣的文章
python中execute是啥_python – 为什么“c.execute(…)”打破循环?
查看>>
python中exit和break区别_Python中exit()和sys.exit()之间的区别
查看>>
python中h5的用法
查看>>
python中http协议编程_HTTP编程
查看>>
python中if的效率_python中关于if-else使用性能的一点感悟
查看>>
python中import os_Python:相对导入与绝对导入(import)、os.path、__file__
查看>>
python中is和==操作符
查看>>
Python中range对象的使用以及打印九九乘法表
查看>>
Python中set.discard和set.remove方法之间的运行时差异?
查看>>
python中tkinter中value_输入字段中的python Tkinter get()值
查看>>
Python中wx.FlexGridSizer
查看>>
Python中xPath技术和BeautifulSoup的使用
查看>>
python中yield的用法详解——最简单,最清晰的解释
查看>>
python中‘set.intersection()‘的算法是什么?
查看>>
Python中一个图形中的多个绘图
查看>>
python中一个好的持久同步队列
查看>>
Python中不准确的对数
查看>>
python中什么是实例方法_在Python中创建实例方法对象的不同方法
查看>>
Python中使用cutecharts实现简单的手绘风格的图表
查看>>
python中使用dxfgrabber,解析dxf文件信息生成obj文件
查看>>