最近学到线性回归中要用到向量,矩阵求导,所以就搜集了下资料,总结如下:
矩阵求导有两种布局:
分子布局(numerator layout)
分母布局(denominator layout)

下面用向量y对标量x求导简单说明这两种布局的区别。
我们假定所有的向量都是列向量。

y=⎡⎣⎢⎢⎢⎢⎢⎢⎢y1y2y3⋮ym⎤⎦⎥⎥⎥⎥⎥⎥⎥

y=\begin{bmatrix} y_{1}\\ y_{2}\\ y_{3}\\ \vdots \\ y_{m} \end{bmatrix}
在分子布局下:

∂y∂x=⎡⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢∂y1∂x∂y2∂x⋮∂ym∂x⎤⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥

\frac{\partial y}{\partial x}=\begin{bmatrix} \frac{\partial y_{1}}{\partial x}\\ \frac{\partial y_{2}}{\partial x}\\ \vdots\\ \frac{\partial y_{m}}{\partial x}\\ \end{bmatrix}
在分母布局下:

∂y∂x=[∂y1∂x∂y2∂x⋯∂ym∂x]

\frac{\partial y}{\partial x}=\begin{bmatrix} \frac{\partial y_{1}}{\partial x}& \frac{\partial y_{2}}{\partial x} &\cdots & \frac{\partial y_{m}}{\partial x} \end{bmatrix}
在下面的推到中,都将采用分母布局,也就是向量(列)对标量求导的结果都是行向量。(采用这种布局的主要原因是向量对向量的求导就是一个矩阵了)

求导的类别

求导大致分为5类:

  1. 向量对标量
  2. 标量对向量
  3. 向量对向量
  4. 矩阵对向量
  5. 向量对矩阵

矩阵求导的大致规则如下:
对标量求导结果都要转置,而标量对向量或者矩阵求导的话位置不变。

向量对标量:

∂y∂x=[∂y1∂x∂y2∂x⋯∂ym∂x]

\frac{\partial y}{\partial x}=\begin{bmatrix} \frac{\partial y_{1}}{\partial x}& \frac{\partial y_{2}}{\partial x} &\cdots & \frac{\partial y_{m}}{\partial x} \end{bmatrix}
(采用的是分母布局,也就是转置了)

标量对向量:

∂y∂X=⎡⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢∂y∂x1∂y∂x2⋮∂y∂x3⎤⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥

\frac{\partial y}{\partial X}=\begin{bmatrix} \frac{\partial y}{\partial x_{1}}\\ \frac{\partial y}{\partial x_{2}}\\ \vdots\\ \frac{\partial y}{\partial x_{3}}\\ \end{bmatrix}
(此时X是向量,y是标量,标量对向量的求导没有转置)

向量对向量求导:

X=⎡⎣⎢⎢⎢⎢⎢⎢⎢x1x2x3⋮xn⎤⎦⎥⎥⎥⎥⎥⎥⎥

X=\begin{bmatrix} x_{1}\\ x_{2}\\ x_{3}\\ \vdots \\ x_{n} \end{bmatrix}

y=⎡⎣⎢⎢⎢⎢⎢⎢⎢y1y2y3⋮ym⎤⎦⎥⎥⎥⎥⎥⎥⎥

y=\begin{bmatrix} y_{1}\\ y_{2}\\ y_{3}\\ \vdots \\ y_{m} \end{bmatrix}

∂y∂X=⎡⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢∂y1∂x1∂y1∂x2⋮∂y1∂xn∂y2∂x1∂y2∂x2⋮∂y2∂xn⋯⋯⋱⋯∂ym∂x1∂ym∂x2⋮∂ym∂xn⎤⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥

\frac{\partial y}{\partial X}= \begin{bmatrix} \frac{\partial y_{1}}{\partial x_{1}}&\frac{\partial y_{2}}{\partial x_{1}} &\cdots &\frac{\partial y_{m}}{\partial x_{1}}\\ \frac{\partial y_{1}}{\partial x_{2}}& \frac{\partial y_{2}}{\partial x_{2}} & \cdots &\frac{\partial y_{m}}{\partial x_{2}} \\ \vdots & \vdots & \ddots & \vdots & \\ \frac{\partial y_{1}}{\partial x_{n}}& \frac{\partial y_{2}}{\partial x_{n}} & \cdots & \frac{\partial y_{m}}{\partial x_{n}} & \end{bmatrix}

矩阵对标量求导:

∂Y∂x=⎡⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢∂y11∂x∂y12∂x⋮∂y1n∂x∂y21∂x∂y22∂x⋮∂y2n∂x⋯⋯⋱⋯∂ym1∂x∂ym2∂x⋮∂ymn∂x⎤⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥

\frac{\partial Y}{\partial x}= \begin{bmatrix} \frac{\partial y_{11}}{\partial x}&\frac{\partial y_{21}}{\partial x} &\cdots &\frac{\partial y_{m1}}{\partial x}\\ \frac{\partial y_{12}}{\partial x}&\frac{\partial y_{22}}{\partial x} &\cdots &\frac{\partial y_{m2}}{\partial x}\\ \vdots & \vdots & \ddots & \vdots \\ \frac{\partial y_{1n}}{\partial x}& \frac{\partial y_{2n}}{\partial x} & \cdots &\frac{\partial y_{mn}}{\partial x} \end{bmatrix}

可以看出转置了。。

标量对矩阵求导:

∂y∂X=⎡⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢∂y∂x11∂y∂x21⋮∂y∂xp1∂y∂x12∂y∂x22⋮∂y∂xp2⋯⋯⋱⋯∂y∂x1q∂y∂x2q⋮∂y∂xpq⎤⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥

\frac{\partial y}{\partial X}= \begin{bmatrix} \frac{\partial y}{\partial x_{11}}&\frac{\partial y}{\partial x_{12}} &\cdots &\frac{\partial y}{\partial x_{1q}}\\ \frac{\partial y}{\partial x_{21}}&\frac{\partial y}{\partial x_{22}} &\cdots &\frac{\partial y}{\partial x_{2q}}\\ \vdots & \vdots & \ddots & \vdots \\ \frac{\partial y}{\partial x_{p1}}& \frac{\partial y}{\partial x_{p2}} & \cdots & \frac{\partial y}{\partial x_{pq}} \end{bmatrix}

简单的例子

例1.

y=aTx

y=a^Tx
其中, y∈R,a∈Rn×1,x∈Rn×1y\in \mathbb{R}, a\in \mathbb{R}^{n\times1}, x\in \mathbb{R}^{n\times1}
属于标量对向量求导,所以有:

∂y∂x=a

\frac{\partial y}{\partial x}=a
其中a是列向量,没有转置

例2.

y=Ax

y=Ax
y∈Rm×1,A∈Rm×n,x∈Rn×1y\in \mathbb{R}^{m\times1}, A\in \mathbb{R}^{m\times n}, x\in \mathbb{R}^{n\times1}
属于向量对向量求导,所以有:

∂y∂x=AT

\frac{\partial y}{\partial x}=A^T

例3.

y=Au(x)

y=Au(x)
其中, y∈Rm×1,A∈Rm×n,u∈Rn×1,x∈Rp×1y\in \mathbb{R}^{m\times 1}, A\in \mathbb{R}^{m\times n}, u\in \mathbb{R}^{n\times1},x\in \mathbb{R}^{p\times1}
属于向量对向量的求导,所以有:

∂y∂x=∂u∂xAT

\frac{\partial y}{\partial x}=\frac{\partial u}{\partial x}A^T

如果:

y=a(x)u(x)

y=a(x)u(x)
其中: y∈Rm×1,a∈R,u∈Rm×1,x∈Rn×1y\in \mathbb{R}^{m\times 1}, a\in \mathbb{R}, u\in \mathbb{R}^{m\times1},x\in \mathbb{R}^{n\times1}
属于向量对向量的求导,所以有:

∂y∂x=∂u∂xa+∂a∂xuT

\frac{\partial y}{\partial x}=\frac{\partial u}{\partial x}a+\frac{\partial a}{\partial x}u^T

假如已知:

a(x)=Bxu(x)=Cx

a(x)=Bx\\u(x)=Cx
其中: B∈R1×n,C∈Rm×nB\in \mathbb{R}^{1\times n}, C\in \mathbb{R}^{m\times n}
那么,

∂y∂x=CTa+BTuT

\frac{\partial y}{\partial x}=C^Ta+B^Tu^T

例子4:

f=xTAy(x)

f=xTAy(x)
那么,

∂f∂x=Ay+∂y∂xATx

\frac{\partial f}{\partial x}=Ay+\frac{\partial y}{\partial x}A^Tx
其中, x∈Rm×1,y∈Rn×1,A∈Rm×n,f∈Rx\in \mathbb{R}^{m\times 1}, y\in \mathbb{R}^{n\times 1}, A\in \mathbb{R}^{m\times n},f\in \mathbb{R}
上面的式子,当y(x)=x时,也就是m=n时。

f∂f∂x=xTAx=(A+AT)x

\begin{align} f&=x^TAx\\ \frac{\partial f}{\partial x}&=(A+A^T)x \end{align}

例子5:

f=aTxxTba,b,x∈Rm×1

f=a^Txx^Tb \; \;\; a,b,x\in R^{m×1}

∂f∂x=a(xTb)+b(aTx)=(abT+baT)x

\frac{\partial f}{\partial x}=a(x^Tb)+b(a^Tx)=(ab^T+ba^T)x

参考:

http://blog.csdn.net/young_gy/article/details/50008953


常用公式:

dUVTdX=(dUdX)VT+U(dVTdX)\frac{dUV^T}{dX}=(\frac{dU}{dX})V^T+U(\frac{dV^T}{dX})

dUTVdX=(dUTdX)V+(dVTdX)UT \frac{dU^TV}{dX}=(\frac{dU^T}{dX})V+(\frac{dV^T}{dX})U^T

dXTdx=IdXdxT=I\frac{dX^T}{dx}=I \,\,\,\,\,\,\;\;\; \frac{dX}{dx^T}=I

d(AX)Tdx=ATdAxdxT=A\frac{d(AX)^T}{dx}=A^T \,\,\,\,\,\,\;\;\; \frac{dAx}{dx^T}=A

dxTAdx=A\frac{dx^TA}{dx}=A \,\,\,\,\,\,\;\;\;

∂uTv∂x=∂uT∂xv+∂vT∂xuT\frac{\partial u^Tv}{\partial x}=\frac{\partial u^T}{\partial x}v+\frac{\partial v^T}{\partial x}u^T

∂uvT∂x=∂u∂xvT+u∂vT∂x\frac{\partial uv^T}{\partial x}=\frac{\partial u}{\partial x}v^T+u\frac{\partial v^T}{\partial x}

dxTxdx=2x\frac{dx^Tx}{dx}=2x

dxTAxdx=(A+AT)x\frac{dx^TAx}{dx}=(A+A^T)x

∂AB∂x=∂A∂xB+A∂B∂x\frac{\partial AB}{\partial x}=\frac{\partial A}{\partial x}B+A\frac{\partial B}{\partial x}

∂uTXv∂X=uvT\frac{\partial u^TXv}{\partial X}=uv^T

∂uTXTXu∂X=2XuvT\frac{\partial u^TX^TXu}{\partial X}=2Xuv^T

∂[(Xu−v)T(Xu−v)]∂X=2(Xu−v)uT\frac{\partial [(Xu-v)^T(Xu-v)]}{\partial X}=2(Xu-v)u^T

维基百科:
Result of differentiating various kinds of aggregates with other kinds of aggregates

Identities: vector-by-vector ∂y∂x \frac{\partial \mathbf{y}}{\partial \mathbf{x}}

Identities: scalar-by-vector ∂y∂x=∇xy\frac{\partial y}{\partial \mathbf{x}} = \nabla_\mathbf{x} y

Identities: vector-by-scalar∂y∂x \frac{\partial \mathbf{y}}{\partial x}

详细参考:
维基百科矩阵求导


因为是第一次用公式编辑器,所以总结下基本使用方法:

MathJax是一个JavaScript引擎,用来显示网络上的数学公式, MathJax有两种插入公式的方式:
一种是行中公式,另外一种是独立公式,行中公式可以插入到一行文字中,独立公式是单独成行,行中公式插入方式是:$…$,独立公式插入方式是:$$…$$,省略号代表插入的公式部分。

常用符号

  • 分组(最常用)
    分组是用{}把一个部分括起来,看成一个整体

  • 空格
    MathJax中不能直接输入空格,可以用 , \; \quad和\qquad充当空格,增加的间隔依次增大

  • 运算符号

运算符 表示
+ +
-
× \times
÷ \div
± \pm
\mp
^(指数运算符) ^
  • 关系比较符号
运算符 表示
< \lt
> \gt
\le
\ge
\neq
  • 分式

    有两种实现方式:

  • 输入:$\frac {a+c+1}{b+c+2}$ ,输出:a+c+1b+c+2\frac {a+c+1}{b+c+2}

  • 输入:{a+c+1} \over {b+c+2},输出:a+c+1b+c+2{a+c+1} \over {b+c+2}

  • 根式

    平方根 :
    输入:\sqrt {a+b},输出:a+b−−−−√\sqrt {a+b}

    输入:\sqrt[5] {a+b},输出:a+b−−−−√5\sqrt[5] {a+b}

  • 特殊数学符号

1.求和:
输入:\sum {a+b},输出:∑a+b\sum {a+b}
输入:\sum_{i=1}^{K},输出:∑Ki=1\sum_{i=1}^{K}
其中”_”是下标; “^”是上标
输入:$$\sum_{i=1}^{K}$$,输出:

∑i=1K

\sum_{i=1}^{K}

2.连乘:
输入:\prod {a+b},输出:∏a+b\prod {a+b}
输入:\prod_{i=1}^{K},输出:∏Ki=1\prod_{i=1}^{K}
输入:$$\prod_{i=1}^{K}$$,输出:

∏i=1K

\prod_{i=1}^{K}

  • 3.arg max/arg min/max/min

    输入:$$arg\,\max_{c_k}$$,输出:

    argmaxck

    arg\,\max_{c_k}
    输入:$$arg\,\min_{c_k}$$,输出:

    argminck

    arg\,\min_{c_k}
    输入:$$\mathop {argmin}_{c_k}$$,输出:

    argminck

    \mathop {argmin}_{c_k}
    输入:$$\mathop {argmax}_{c_k}$$,输出:

    argmaxck

    \mathop {argmax}_{c_k}
    输入:$$\max_{c_k}$$,输出:

    maxck

    \max_{c_k}
    输入:$$\min_{c_k}$$,输出:

    minck

    \min_{c_k}

省略符号

连续点-省略号:
\ldots 偏下点 ; \cdots 中间点 ; \vdots 竖直点 ; \ddots 对角点

输入\cdots:输出:⋯
常用在这种情况:
输入$f(x_1,x_2,\cdots,x_n)$:输出:f(x1,x2,⋯,xn)f(x_1,x_2,\cdots,x_n)

独立公式

对齐:

\begin{align}`用于开头,`\end{align}用于结尾,对齐的位置用&开始,用\\结束
输入:

$$
\begin{align}
f(x) &=a+b+a\\
& = 2a+b
\end{align}
$$

输出:

f(x)=a+b+a=2a+b

\begin{align} f(x) &=a+b+a\\ & = 2a+b \end{align}

条件函数

关键词是\begin{cases}`和`\end{cases}\test{}括号里面输入内容
输入:

$$
L(Y,f(X)) =
\begin{cases}
0, & \text{Y = f(X)}  \\
1, & \text{Y $\neq$ f(X)}
\end{cases}
$$

输出:

L(Y,f(X))={0,1,Y = f(X)Y ≠ f(X)

L(Y,f(X)) = \begin{cases} 0, & \text{Y = f(X)} \\ 1, & \text{Y $\neq$ f(X)} \end{cases}

下面在看一个例子:

$$
J(\theta) = \frac 1 2 \sum_{i=1}^m (h_\theta(x^{(i)})-y^{(i)})^2
$$

输出:

J(θ)=12∑i=1m(hθ(x(i))−y(i))2

J(\theta) = \frac 1 2 \sum_{i=1}^m (h_\theta(x^{(i)})-y^{(i)})^2
这个公式是线性回归算法里的成本函数

这里:

公式编辑器

以上是一些基本用法,遇到其他的再追加。。。。

矩阵求导公式,及MathJax公式编辑相关推荐

  1. [机器学习-数学] 矩阵求导(分母布局与分子布局),以及常用的矩阵求导公式

    一, 矩阵求导 1,矩阵求导的本质 矩阵A对矩阵B求导: 矩阵A中的每一个元素分别对矩阵B中的每个元素进行求导. A1×1A_{1\times1}A1×1​, B1×1B_{1\times1}B1×1 ...

  2. Matrix Differentiation(矩阵求导)以及矩阵求导常用公式

    Matrix Differentiation(矩阵求导) References: Matrix Differentiation,Rabdak J.Barnes 注: 本文直接从Matrix Diffe ...

  3. 【转载】矩阵求导、几种重要的矩阵及常用的矩阵求导公式

    一.矩阵求导 一般来讲,我们约定x=(x1,x2,-xN)Tx=(x1,x2,-xN)T,这是分母布局.常见的矩阵求导方式有:向量对向量求导,标量对向量求导,向量对标量求导. 1.向量对向量求导 Nu ...

  4. 矩阵求导(分母布局与分子布局),以及常用的矩阵求导公式

    神经网络反向传播时的梯度到底怎么求, 注意与下图矩阵求导的本质的区分:神经网络的在反向传播过程中,矩阵(m×n)对矩阵(p×q)求导的结果是只列出对相关元素求偏导的结果,其他不相关的元素根本就没有对应 ...

  5. 线性代数之 矩阵求导(2)标量函数求导基本法则与公式

    线性代数之 矩阵求导(2)基本法则与公式 前言 基本约定 标量对向量求导 基本法则 公式 标量对矩阵求导 基本法则 公式 后记 前言 上篇矩阵求导(1)解决了求导时的布局问题,也是矩阵求导最基础的求导 ...

  6. 矩阵求导常用公式(避坑)+矩阵的模和矩阵的绝对值的求导

    目录 矩阵求导常用公式 1.分母布局与分子布局 2.分母布局与分子布局的矩阵求导公式 (1)向量对向量求导 (2).标量对向量求导 (3).向量对标量求导 3.验证求导结果 矩阵的模和矩阵的绝对值的求 ...

  7. 矩阵计算 | 常用矩阵求导公式速查

    文章目录 参考资料 常用矩阵求导公式 参考资料 Matrix Calculu The Matrix Cookbook 常用矩阵求导公式 对于一个矩阵A,向量x\mathrm{x}x,有如下求导公式: ...

  8. 向量、矩阵求导的重要公式

    书接上文标量.向量与矩阵的求导https://blog.csdn.net/weixin_42764932/article/details/113107265 几个公式要牢记,机器学习算法推导用的上 向 ...

  9. 矩阵求导公式的数学推导四部曲

    矩阵在线求导 矩阵求导--本质篇 矩阵求导--基础篇 矩阵求导--进阶篇 矩阵求导--补充篇

最新文章

  1. 339所!中国内地高校ESI排名出炉:国科大、清华、北大位列前三!
  2. 解决bootstrap-table多次请求只触发一次的问题
  3. C++,C++编程,Windows编程,MFC
  4. canvas学习-----1px线条模糊问题
  5. 【T+】余额表联查明细账,提示未将对象引用设置到对象的实例;参数格式错误,solutionID不能为空。
  6. 易语言禁用计算机指令大全,易语言电脑屏幕锁定工具源码
  7. 数据挖掘的技术都有哪些?
  8. c语言字符串逆序输出reverse,将一个字符串逆序输出
  9. AntennaHome Launch 5G Combo Internal PCB Antenna /5G 全频 PCB天线
  10. Vue验证座机号的同时验证手机号
  11. 【谷歌浏览器】国内如何配置谷歌浏览器使用
  12. SEODONG Medical推出创新干眼症治疗仪器,深受海外消费者好评
  13. 如何使用ECharts绘制甘特图
  14. Nginx优化与防盗链
  15. 这个AR/VR设计原型利器,爆赞
  16. 他来了他来了,Hadoop序列化和切片机制了解一下?
  17. CSS中的clear属性
  18. TortoiseGit-下载安装汉语语言包(汉化-方法)
  19. MVC, MVP 与 MVVM
  20. LeetCode:1219.黄金矿工(Java语言)

热门文章

  1. OpenCV梯度直方图HOG的实例(附完整代码)
  2. Qt Creator语义突出显示
  3. C++的内存管理是怎样的
  4. C++全局变量和局部变量有什么区别
  5. QT的QCommandLineOption类的使用
  6. C++继承中的普通函数,纯虚函数、虚函数
  7. 计算机学院的行话,只有你和你同学知道的“专业行话”
  8. 「SLAM」三维空间刚体运动名词笔记
  9. 1.cocos2dx内存管理和CCArray,CCMenuItem
  10. Mysql 优化器内部JOIN算法hash join On-Disk Hash Join Grace Hash Join Hybrid hash join过程详解