您的位置:首页 > 其它

矩阵求导公式,及MathJax公式编辑

2017-08-19 23:46 211 查看
最近学到线性回归中要用到向量,矩阵求导,所以就搜集了下资料,总结如下:

矩阵求导有两种布局:

分子布局(numerator layout)

分母布局(denominator layout)

下面用向量y对标量x求导简单说明这两种布局的区别。

我们假定所有的向量都是列向量。

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

在分子布局下:

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

在分母布局下:

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

在下面的推到中,都将采用分母布局,也就是向量(列)对标量求导的结果都是行向量。(采用这种布局的主要原因是向量对向量的求导就是一个矩阵了)

求导的类别

求导大致分为5类:

向量对标量

标量对向量

向量对向量

矩阵对向量

向量对矩阵

矩阵求导的大致规则如下:

对标量求导结果都要转置,而标量对向量或者矩阵求导的话位置不变。

向量对标量:

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

(采用的是分母布局,也就是转置了)

标量对向量:

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

(此时X是向量,y是标量,标量对向量的求导没有转置)

向量对向量求导:

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

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

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

矩阵对标量求导:

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

可以看出转置了。。

标量对矩阵求导:

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

简单的例子

例1.y=aTx

其中,y∈R,a∈Rn×1,x∈Rn×1

属于标量对向量求导,所以有:

∂y∂x=a

其中a是列向量,没有转置

例2. y=Ax

y∈Rm×1,A∈Rm×n,x∈Rn×1

属于向量对向量求导,所以有:

∂y∂x=AT

例3.

y=Au(x)

其中,y∈Rm×1,A∈Rm×n,u∈Rn×1,x∈Rp×1

属于向量对向量的求导,所以有:

∂y∂x=∂u∂xAT

如果:y=a(x)u(x)

其中:y∈Rm×1,a∈R,u∈Rm×1,x∈Rn×1

属于向量对向量的求导,所以有:

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

假如已知:a(x)=Bxu(x)=Cx

其中:B∈R1×n,C∈Rm×n

那么, ∂y∂x=CTa+BTuT

例子4: f=xTAy(x)

那么,

∂f∂x=Ay+∂y∂xATx

其中,x∈Rm×1,y∈Rn×1,A∈Rm×n,f∈R

上面的式子,当y(x)=x时,也就是m=n时。

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

例子5:

f=aTxxTba,b,x∈Rm×1

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

参考:

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

常用公式:

dUVTdX=(dUdX)VT+U(dVTdX)

dUTVdX=(dUTdX)V+(dVTdX)UT

dXTdx=IdXdxT=I

d(AX)Tdx=ATdAxdxT=A

dxTAdx=A

∂uTv∂x=∂uT∂xv+∂vT∂xuT

∂uvT∂x=∂u∂xvT+u∂vT∂x

dxTxdx=2x

dxTAxdx=(A+AT)x

∂AB∂x=∂A∂xB+A∂B∂x

∂uTXv∂X=uvT

∂uTXTXu∂X=2XuvT

∂[(Xu−v)T(Xu−v)]∂X=2(Xu−v)uT

维基百科:

Result of differentiating various kinds of aggregates with other kinds of aggregates



Identities: vector-by-vector ∂y∂x



Identities: scalar-by-vector ∂y∂x=∇xy





Identities: vector-by-scalar∂y∂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

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

根式

平方根 :

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

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

特殊数学符号

1.求和:

输入:\sum {a+b},输出:∑a+b

输入:\sum_{i=1}^{K},输出:∑Ki=1

其中”_”是下标; “^”是上标

输入:
$$\sum_{i=1}^{K}$$
,输出:∑i=1K

2.连乘:

输入:\prod {a+b},输出:∏a+b

输入:\prod_{i=1}^{K},输出:∏Ki=1

输入:
$$\prod_{i=1}^{K}$$
,输出:∏i=1K

3.arg max/arg min/max/min

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

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

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

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

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

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

省略符号

连续点-省略号:

\ldots 偏下点 ; \cdots 中间点 ; \vdots 竖直点 ; \ddots 对角点

输入\cdots:输出:⋯

常用在这种情况:

输入
$f(x_1,x_2,\cdots,x_n)$
:输出:f(x1,x2,⋯,xn)

独立公式

对齐:

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

输入:

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


输出:

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

条件函数

关键词是
\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)

下面在看一个例子:

$$
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

这个公式是线性回归算法里的成本函数

这里:

公式编辑器

以上是一些基本用法,遇到其他的再追加。。。。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: