公司网站的建设心得注册域名在哪里注册
多变量函数的求导与求梯度/矩阵求导
1. 导数
定义: 设f:Rn→Rm,且x∈intdomf,则f在点x的导数(或称Jacobian)记为矩阵Df(x)∈Rm×nf:\R^n \rightarrow \R^m, 且x\in \mathbf{int}\ \mathbf{dom} f, 则f 在点x的导\\数(或称Jacobian)记为矩阵 Df(x) \in \R^{m\times n}f:Rn→Rm,且x∈int domf,则f在点x的导数(或称Jacobian)记为矩阵Df(x)∈Rm×n, 定义如下
Df(x)ij=∂fi(x)∂xj,i=1,...,m,j=1,...,n(1)Df(x)_{ij} = \frac{\partial f_i(x)}{\partial x_j},\ i = 1,...,m,\ \ j = 1,...,n \tag{1} Df(x)ij=∂xj∂fi(x), i=1,...,m, j=1,...,n(1)
Df(x)ij表示矩阵Df(x)的第i行第j列元素Df(x)_{ij}表示矩阵Df(x)的第i行第j列元素Df(x)ij表示矩阵Df(x)的第i行第j列元素
2. 梯度
定义: 如果fff是一个实值函数(即f:Rn→Rf:\R^n \rightarrow \Rf:Rn→R), 易知其在点xxx导数Df(x)Df(x)Df(x)是一个行向量, 定义Df(x)Df(x)Df(x)的转置为其在点xxx处的梯度, 即
∇f(x)=Df(x)T(2)\nabla f(x) = Df(x)^T \tag{2} ∇f(x)=Df(x)T(2)
易知梯度为一个列向量.
注1: 梯度是针对实值函数的, 且其定义是基于Jacobian的, 也就是说现有导数才有梯度. 梯度的定义可以拓展到f:Sn→Rf:S^n \rightarrow \Rf:Sn→R, SnS^nSn指n阶实对称矩阵, 此处不再赘述.
注2:对于一般的f:Rn→Rmf:\R^n \rightarrow \R^mf:Rn→Rm, fff在点xxx附近的一阶近似记作:
f(x)+Df(x)(z−x),z∈δϵ(x)(3)f(x) + Df(x)(z-x), z \in \delta_\epsilon(x) \tag{3} f(x)+Df(x)(z−x),z∈δϵ(x)(3)
这和单变量函数的情形是一致的.
与之相对应, 对于一般的实值函数f:Rn→Rf:\R^n \rightarrow \Rf:Rn→R, 用梯度表示其一阶近似, 则有:
f(x)+∇f(x)T(z−x),z∈δϵ(x)(4)f(x) +\nabla f(x)^T(z-x), z \in \delta_\epsilon(x) \tag{4} f(x)+∇f(x)T(z−x),z∈δϵ(x)(4)
3. 链式法则
考虑f:Rn→Rm,且f在x处可微,x∈intdomf,并有g:Rn→Rp在f(x)处可微,f(x)∈intdomg,定义符合复合函数h:Rn→Rp,其中h(z)=g(f(z)),则有h在点x处可微,且其在点x处的导数为f:\R^n \rightarrow \R^m, 且f在x处可微, x\in \mathbf{int}\ \mathbf{dom}\ f, 并有g:\R^n \rightarrow \R^p\\在f(x)处可微, f(x)\in \mathbf{int}\ \mathbf{dom}\ g, 定义符合复合函数h:\R^n \rightarrow \R^p,其\\中h(z) = g(f(z)), 则有h在点x处可微, 且其在点x处的导数为f:Rn→Rm,且f在x处可微,x∈int dom f,并有g:Rn→Rp在f(x)处可微,f(x)∈int dom g,定义符合复合函数h:Rn→Rp,其中h(z)=g(f(z)),则有h在点x处可微,且其在点x处的导数为:
Dh(x)=Dg(f(x))Df(x)(5)Dh(x) = Dg(f(x))Df(x) \tag{5} Dh(x)=Dg(f(x))Df(x)(5)
特别地, 若f:Rn→R,g:R→R,则可以考虑h的梯度,只要取转置即可,根据定义有f:\R^n \rightarrow \R, g:\R \rightarrow \R, 则可以考虑h的梯度, 只要取转置\\即可, 根据定义有f:Rn→R,g:R→R,则可以考虑h的梯度,只要取转置即可,根据定义有:
∇h(x)=g′(f(x))∇f(x)(6)\nabla h(x) = g'(f(x))\nabla f(x) \tag{6} ∇h(x)=g′(f(x))∇f(x)(6)
这是很显然的结果, 只需要略加思索即可知道这是正确答案.
例题: 考虑f:Rn→R,domf=Rnf:\R^n \rightarrow \R, \mathbf{dom}\ f = \R^nf:Rn→R,dom f=Rn, 且
f(x)=ln∑i=1mexp(aiTx+bi)f(x) = \ln\sum_{i=1}^m \exp(a_i^T x+b_i) f(x)=lni=1∑mexp(aiTx+bi)
其中ai∈Rn,bi∈Ra_i \in \R^n, b_i \in \Rai∈Rn,bi∈R
请求出f(x)f(x)f(x)的梯度.
解:
设z(x)=∑i=1mexp(aiTx+bi)z(x) = \sum_{i=1}^m \exp(a_i^T x+b_i)z(x)=∑i=1mexp(aiTx+bi), 则根据链式法则, 有
Df(x)=Dlnz(x)=1zDz(x)Df(x) = D\ln z(x) = \frac{1}{z}Dz(x) Df(x)=Dlnz(x)=z1Dz(x)
设y(x):Rn→Rm,yi=exp(aiTx+bi)y(x) : \R^n \rightarrow \R^m, y_i = \exp(a_i^T x+b_i)y(x):Rn→Rm,yi=exp(aiTx+bi), 则有z=1Ty,其中1∈Rm,且每个元素均为1z = \mathbf{1}^T y, 其中\mathbf{1} \in \R^m, 且\\每个元素均为1z=1Ty,其中1∈Rm,且每个元素均为1
所以
y=exp(ATx+b)\begin{split} y = \exp(A^Tx+b) \end{split} y=exp(ATx+b)
其中
AT=[a1Ta2T⋮amT]A^T = \begin{bmatrix} a_{1}^T \\ a_{2}^T \\ \vdots \\ a_{m}^T \\ \end{bmatrix} AT=a1Ta2T⋮amT
所以
Df(x)=1zDz(x)=1z1TDy(x)\begin{split} Df(x) &= \frac{1}{z}Dz(x) \\ &= \frac{1}{z} \mathbf{1}^T Dy(x) \\ \end{split} Df(x)=z1Dz(x)=z11TDy(x)
其中Dy(x)Dy(x)Dy(x)为
Dy(x)=[∂y1x1∂y1x2⋯∂y1xn∂y2x1∂y2x2⋯∂y2xn⋮⋮⋱⋮∂ymx1∂ymx2⋯∂ymxn]∈Rm×nDy(x) = \begin{bmatrix} \frac{\partial y_1}{x_1} & \frac{\partial y_1}{x_2} & \cdots & \frac{\partial y_1}{x_n} \\ \frac{\partial y_2}{x_1} & \frac{\partial y_2}{x_2} & \cdots & \frac{\partial y_2}{x_n} \\ \vdots & \vdots & \ddots & \vdots \\ \frac{\partial y_m}{x_1} & \frac{\partial y_m}{x_2} & \cdots & \frac{\partial y_m}{x_n} \end{bmatrix} \in\R^{m \times n} Dy(x)=x1∂y1x1∂y2⋮x1∂ymx2∂y1x2∂y2⋮x2∂ym⋯⋯⋱⋯xn∂y1xn∂y2⋮xn∂ym∈Rm×n
易知
Dy(x)ij=∂yixj=exp(aiTx+bi)⋅aijDy(x)_{ij} = \frac{\partial y_i}{x_j} = \exp(a_i^T x+b_i) \cdot a_{ij} Dy(x)ij=xj∂yi=exp(aiTx+bi)⋅aij
其中aij为aiT的第j个元素a_{ij}为a_{i}^T的第j个元素aij为aiT的第j个元素
Dy(x)Dy(x)Dy(x)也可写作
Dy(x)=diag{y1,y2,⋯,ym}⋅[a1Ta2T⋮amT]Dy(x) = diag\{ y_{1}, y_{2}, \cdots, y_{m} \} \cdot \begin{bmatrix} a_{1}^T \\ a_{2}^T \\ \vdots \\ a_{m}^T \\ \end{bmatrix} Dy(x)=diag{y1,y2,⋯,ym}⋅a1Ta2T⋮amT
所以
Df(x)=1z1T⋅diag{y1,y2,⋯,ym}⋅[a1Ta2T⋮amT]=1z1T⋅diag{y1,y2,⋯,ym}⋅AT\begin{split} Df(x) &= \frac{1}{z} \mathbf{1}^T \cdot diag\{ y_{1}, y_{2}, \cdots, y_{m} \} \cdot \begin{bmatrix} a_{1}^T \\ a_{2}^T \\ \vdots \\ a_{m}^T \\ \end{bmatrix} \\ &= \frac{1}{z} \mathbf{1}^T \cdot diag\{ y_{1}, y_{2}, \cdots, y_{m} \} \cdot A^T \end{split} Df(x)=z11T⋅diag{y1,y2,⋯,ym}⋅a1Ta2T⋮amT=z11T⋅diag{y1,y2,⋯,ym}⋅AT
所以
∇f(x)=1zA⋅diag{y1,y2,⋯,ym}⋅1=1zA⋅[exp(a1Tx+b1)exp(a2Tx+b2)⋮exp(amTx+bm)]其中z=∑i=1mexp(aiTx+bi)\begin{split} \nabla f(x) &= \frac{1}{z} A \cdot diag\{ y_{1}, y_{2}, \cdots, y_{m} \} \cdot \mathbf{1} \\ &=\frac{1}{z} A \cdot \begin{bmatrix} \exp(a_1^T x + b_1) \\ \exp(a_2^T x + b_2) \\ \vdots \\ \exp(a_m^T x + b_m) \\ \end{bmatrix} \\ 其中z &= \sum_{i=1}^m \exp(a_i^T x+b_i) \end{split} ∇f(x)其中z=z1A⋅diag{y1,y2,⋯,ym}⋅1=z1A⋅exp(a1Tx+b1)exp(a2Tx+b2)⋮exp(amTx+bm)=i=1∑mexp(aiTx+bi)
4. 二阶导数
对于实值函数f:Rn→R,且x∈intdomf,则f在点x的二阶导数(或称Hessian]matrix)记为矩阵∇2f(x)∈Rn×n,其中f:\R^n \rightarrow \R, 且x\in \mathbf{int}\ \mathbf{dom} f, 则f 在点x的二阶导\\数(或称Hessian] matrix)记为矩阵 \nabla^2 f(x) \in \R^{n\times n}, 其中f:Rn→R,且x∈int domf,则f在点x的二阶导数(或称Hessian]matrix)记为矩阵∇2f(x)∈Rn×n,其中
∇2f(x)ij=∂2f(x)∂xi∂xj,i,j=1,...,n(7)\nabla^2 f(x)_{ij} = \frac{\partial^2 f(x)}{\partial x_i \partial x_j}, \ i,j = 1,...,n \tag{7} ∇2f(x)ij=∂xi∂xj∂2f(x), i,j=1,...,n(7)
易知对于一般的实值函数f:Rn→Rf:\R^n \rightarrow \Rf:Rn→R, 用hessian matrix表示其二阶近似, 则有:
f^(z)=f(x)+∇f(x)T(z−x)+12(z−x)T∇2f(x)(z−x)z∈δϵ(x)\hat{f}(z) = f(x) +\nabla f(x)^T(z-x) + \frac{1}{2}(z-x)^T\nabla^2 f(x)(z-x)\\ z \in \delta_\epsilon(x) f^(z)=f(x)+∇f(x)T(z−x)+21(z−x)T∇2f(x)(z−x)z∈δϵ(x)
易知下列关系式成立
D∇f(x)=∇2f(x)(8)D\nabla f(x) = \nabla ^2f(x) \tag{8} D∇f(x)=∇2f(x)(8)