您的位置:首页 > 其它

机器学习中常用的矩阵求导公式

2016-04-12 15:31 190 查看
主要copy自新浪微博MachineLearner的博客希望作为自己学习机器学习的工具。

矩阵求导好像从来没有学过,讲矩阵的课不讲求导,讲求导的课不讲矩阵。像维基百科什么的查找起来又费劲。其实在实际机器学习工作中,最常用的就是实值函数yy对向量x\bf x求导。定义如下:

∂y∂x=⎡⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢∂y∂x1∂y∂x2⋮∂y∂xn⎤⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥
\frac{\partial y}{\partial \bf x}=\left[
\begin {array}{c}
\frac{\partial y}{\partial x_1}\\
\frac{\partial y}{\partial x_2}\\
\vdots\\
\frac{\partial y}{\partial x_n}
\end {array}\right ]

实值函数yy对矩阵X\bf X求导:

∂y∂X=⎡⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢∂y∂x11∂y∂x21⋮∂y∂xn1∂y∂x12∂y∂x22⋮∂y∂xn2⋯⋯⋱⋯∂y∂x1n∂y∂x2n⋮∂y∂xnn⎤⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥\frac{\partial y}{\partial \bf X}=\left[ \begin {array}{c}
\begin{array}{ccc}
\frac{\partial y}{\partial x_{11}} & \frac{\partial y}{\partial x_{12}}& \cdots &\frac{\partial y}{\partial x_{1n}}\\
\frac{\partial y}{\partial x_{21}} & \frac{\partial y}{\partial x_{22}}&\cdots &\frac{\partial y}{\partial x_{2n}}\\
\vdots & \vdots & \ddots & \vdots\\
\frac{\partial y}{\partial x_{n1}} & \frac{\partial y}{\partial x_{n2}}&\cdots &\frac{\partial y}{\partial x_{nn}}\\
\end{array}
\end {array}\right ]

因为有监督的机器学习的一般套路是给定输入x\bf x,选择一个模型ff作为决策函数,由f(xf(\bf{x}))预测出y¯\bar {y}。而要得到ff的参数θ\bf{\theta},需要定义一个loss函数来定义当前的预测值y¯\bar {y}和实际值yy之间的接近程度,模型学习的过程就是求使得loss函数L(f(xL(f(\bf x),y)y)最小的参数θ\theta。这是一个最优化的问题,实际应用中都是用和梯度相关的最优化方法,如梯度下降,共轭梯度,拟牛顿法等等。

为方便推倒有以下公式:

∂βTx∂x=β\frac{\partial \beta^T\bf x}{\partial \bf x}=\beta∂xTx∂x=2x\frac{\partial \bf x^T\bf x}{\partial \bf x}=2\bf x∂xTAx∂x=(A+AT)x\frac{\partial \bf x^T Ax}{\partial \bf x}=(\bf{A+A}^T)x

Andrew Ng使用矩阵的迹相关公式:

tr(a)=a\text{tr}(a)=atr(AB)=tr(BA)\text{tr}(AB)=\text{tr}(BA)tr(ABC)=tr(CAB)=tr(BCA)\text{tr}(ABC)=\text{tr}(CAB)=\text{tr}(BCA)∂tr(AB)A=BT\frac{\partial{\text{tr}(AB)}}{A}=B^Ttr(A)=tr(AT)\text{tr}(A)=\text{tr}(A^T)∂tr(ABATC)A=CAB+CTABT\frac{\partial{\text{tr}(ABA^TC)}}{A}=CAB+C^TAB^T
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: