学习机器学习的时候有很多线性代数的知识,其中有一些矩阵向量求导的东西不是很熟悉,今天查了很久决定做一个总结。
定义1.梯度(Gradient) [标量对列向量微分]
设是一个变量为
的标量函数,其中
。那么定义
对
的梯度为
:
定义2. 海森矩阵(Hessian matrix)[海森矩阵是二阶梯度]
设是一个变量为
的二阶可微分的标量函数,其中
。那么定义
对
的海森矩阵为
:
海森矩阵是对称阵。
定义3. 雅可比矩阵(Jacobian matrix)[雅可比矩阵本质上是一阶梯度,向量对向量微分]
设是一个K*1的列向量函数
其中。那么定义
对
的雅可比矩阵为
:
定义4. [矩阵对标量微分]
的矩阵A的元素是一个向量
的元素
的函数,定义
为:
矩阵的二阶微分:
因为机器学习(这里指的是有监督的机器学习)的一般套路是给定输入X,选择一个模型f作为决策函数,由f(X)预测出Y'。而得到f的参数θ(往往是向量),需要定义一个loss函数(一般都是实值函数),描述当前f预测值Y'与实际的Y值的接近程度。模型学习的过程就是求使得 loss函数 L(f(X),Y)最小的参数θ。这是一个最优化问题,实际应用中都是用和梯度相关的最优化方法,如梯度下降,共轭梯度,拟牛顿法等等。
其实只要掌握上面这个公式,就能搞定很多问题了。
为了方便推导,下面列出一些机器学习中常用的求导公式,其中andrew ng那一套用矩阵迹的方法还是挺不错的,矩阵的迹也是实值的,而一个实数的迹等于其本身,实际工作中可以将loss函数转化成迹,然后在求导,可能会简化推导的步骤。
证明:二次函数, 其中
,
矩阵
。则
对
的列向量
的微分为:
,以
的情况举例说明:
矩阵微分的应用(看了其他博客内容,留下来回顾)
本文主要参考了https://blog.csdn.net/yc461515457/article/details/49682473