矩阵求导公式【转】

基本公式:今天推导公式,发现居然有对矩阵的求导,狂汗--完全不会。不过还好网上有人总结了。吼吼,赶紧搬过来收藏备份。

Y = A * X --> DY/DX = A'
Y = X * A --> DY/DX = A
Y = A' * X * B --> DY/DX = A * B'
Y = A' * X' * B --> DY/DX = B * A'

1. 矩阵Y对标量x求导:

相当于每个元素求导数后转置一下,注意M×N矩阵求导后变成N×M了

Y = [y(ij)] --> dY/dx = [dy(ji)/dx]

2. 标量y对列向量X求导:

注意与上面不同,这次括号内是求偏导,不转置,对N×1向量求导后还是N×1向量

y = f(x1,x2,..,xn) --> dy/dX = (Dy/Dx1,Dy/Dx2,..,Dy/Dxn)'

3. 行向量Y'对列向量X求导:

注意1×M向量对N×1向量求导后是N×M矩阵。

将Y的每一列对X求偏导,将各列构成一个矩阵。

重要结论:

dX'/dX = I

d(AX)'/dX = A'

4. 列向量Y对行向量X’求导:

转化为行向量Y’对列向量X的导数,然后转置。

注意M×1向量对1×N向量求导结果为M×N矩阵。

dY/dX' = (dY'/dX)'

5. 向量积对列向量X求导运算法则:

注意与标量求导有点不同。

d(UV')/dX = (dU/dX)V' + U(dV'/dX)

d(U'V)/dX = (dU'/dX)V + (dV'/dX)U'

重要结论:

d(X'A)/dX = (dX'/dX)A + (dA/dX)X' = IA + 0X' = A

d(AX)/dX' = (d(X'A')/dX)' = (A')' = A

d(X'AX)/dX = (dX'/dX)AX + (d(AX)'/dX)X = AX + A'X

6. 矩阵Y对列向量X求导:

将Y对X的每一个分量求偏导,构成一个超向量。

注意该向量的每一个元素都是一个矩阵。

7. 矩阵积对列向量求导法则:

d(uV)/dX = (du/dX)V + u(dV/dX)

d(UV)/dX = (dU/dX)V + U(dV/dX)

重要结论:

d(X'A)/dX = (dX'/dX)A + X'(dA/dX) = IA + X'0 = A

8. 标量y对矩阵X的导数:

类似标量y对列向量X的导数,

把y对每个X的元素求偏导,不用转置。

dy/dX = [ Dy/Dx(ij) ]

重要结论:

y = U'XV = ΣΣu(i)x(ij)v(j) 于是 dy/dX = [u(i)v(j)] = UV'

y = U'X'XU 则 dy/dX = 2XUU'

y = (XU-V)'(XU-V) 则 dy/dX = d(U'X'XU - 2V'XU + V'V)/dX = 2XUU' - 2VU' + 0 = 2(XU-V)U'

9. 矩阵Y对矩阵X的导数:

将Y的每个元素对X求导,然后排在一起形成超级矩阵。

 

10.乘积的导数

d(f*g)/dx=(df'/dx)g+(dg/dx)f'

结论

d(x'Ax)=(d(x'')/dx)Ax+(d(Ax)/dx)(x'')=Ax+A'x   (注意:''是表示两次转置)

 

 

比较详细点的如下:

 

 矩阵求导公式【转】


矩阵求导公式【转】

矩阵求导公式【转】

矩阵求导公式【转】

矩阵求导公式【转】

 

http://lzh21cen.blog.163.com/blog/static/145880136201051113615571/

http://hi.baidu.com/wangwen926/blog/item/eb189bf6b0fb702b720eec94.html

### 矩阵求导公式的概述 在深度学习和机器学习领域,矩阵求导是一种重要的工具,用于优化模型参数并计算梯度。以下是几个常见的矩阵求导公式及其解释: #### 1. 向量对标量的求导 假设 $\mathbf{y} = [y_1, y_2, \dots, y_n]^T$ 是一个 $n$ 维列向量,而 $x$ 是一个标量,则按照分子布局定义: $$ \frac{\partial \mathbf{y}}{\partial x} = \begin{bmatrix} \frac{\partial y_1}{\partial x} \\ \frac{\partial y_2}{\partial x} \\ \vdots \\ \frac{\partial y_n}{\partial x} \end{bmatrix}. $$ 这表示向量中的每个元素分别对 $x$ 进行求导[^2]。 --- #### 2. 标量对向量的求导 设 $f(\mathbf{x})$ 是一个关于向量 $\mathbf{x}$ 的标量函数,则其梯度为: $$ \nabla_{\mathbf{x}} f(\mathbf{x}) = \begin{bmatrix} \frac{\partial f}{\partial x_1}, & \frac{\partial f}{\partial x_2}, & \cdots, & \frac{\partial f}{\partial x_n} \end{bmatrix}, $$ 其中每一项是对应变量的偏导数[^3]。 --- #### 3. 矩阵乘法的求导 对于两个矩阵 $\mathbf{A} \in \mathbb{R}^{m \times n}$ 和 $\mathbf{B} \in \mathbb{R}^{n \times p}$,它们的乘积记作 $\mathbf{C} = \mathbf{AB}$。则有如下关系成立: $$ \frac{\partial (\text{tr}(\mathbf{ABC}))}{\partial \mathbf{X}} = \mathbf{B}^\top \mathbf{A}^\top, $$ 这里 tr 表示迹运算 (trace),$\mathbf{X}$ 可以是任意参与该表达式的矩阵之一[^1]。 --- #### 4. 函数复合规则下的链式法则应用实例 考虑损失函数形式如 $L(w)=h(g(f(x;w)))$, 需要通过反向传播算法依次计算各层贡献时会频繁遇到类似结构: $$ \frac {d L }{ d w}= \sum _ k {\Bigg(}\underbrace {{\bigg(}{\frac {\partial h_k}{\partial g_k}}{\cdot }\,{\frac {\partial g_k}{\partial f_k}}{\bigg)}}_{{\text{(中间激活)} }}{\cdot }\,\underbrace {{\frac {\partial f_k}{\partial w}}} _{{\text {(权重影响)}}}{\Bigg)}, $$ 此过程体现了复杂的嵌套依赖如何分解成简单局部变化率组合[^3]. --- ```python import numpy as np def gradient_vector_scalar(y, x): """ 计算向量 y 对标量 x 的导数 """ grad = np.array([np.gradient(y_i, x) for y_i in y]) return grad.reshape(-1, 1) # 示例输入 y = np.array([[1], [2], [3]]) x = np.linspace(0, 1, len(y)) result = gradient_vector_scalar(y, x) print(result) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值