接上一篇“深度学习中的线性代数3:矩阵的操作和性质”。
在前面的系列文章中我们学习了线性代数的很多基本概念和性质,但是有一个在线性代数的学习中似乎不常涉及的主题:微积分在向量中的扩展。而这个主题将在机器学习中广泛使用,所以这篇文章关注于矩阵微积分的一些基本定义以及一些例子。
### 4.1 梯度
首先定义函数 f:R^{m \times n} \rightarrow R ,也就是函数f的输入是一个m行n列的矩阵,输出是一个数值。
那么函数 f(A) 的梯度就是对A中的每一个元素求偏导数得到的矩阵(也就是说梯度是一个矩阵):
或者简写为: (\nabla_Af(A))_{ij}=\frac{\partial f(A)}{\partial A_{ij}} 。
记住! \nabla_Af(A) 的尺寸永远和矩阵A一致。
对于向量x来说;
以下是重要的事情!!!函数必须返回的值是一个实数,才满足梯度的定义。返回值是向量的话不能求梯度!!!
性质:
\nabla_x (f(x)+g(x)) = \nabla_xf(x)+ \nabla_xg(x)
\nabla_x(tf(x)) = t\nabla_xf(x) ,t是实数
例子:有 f(z)=z^Tz ,那么f的梯度是: \nabla_z f(z) = 2z
### 4.2 海森矩阵
首先,我们有函数f使得 f: R^n \rightarrow R 。
Hessian矩阵就是对向量x的每一个元素求二阶导数得到的矩阵。
这个矩阵表示为 \nabla^2_x f(x) ,或者 H 。
Hessian矩阵满足对称性:
\frac{\partial^2f(x)}{\partial x_i \partial x_j} = \frac{\partial^2f(x)}{\partial x_j\partial x_i}
同样需要注意的是,与梯度矩阵相同,f(x)必须返回一个实数才具有Hessian矩阵。
讲到这里,人们很容易把‘梯度’和‘Hessian矩阵’类比为一阶导数和二阶导数。
这样类比有助于帮助大家记住和理解,但是有一点值得注意!
在实数微积分中,二阶导数可以解释为一阶导数的一阶导数,即 \frac{\partial ^2 f(x)}{\partial x^2}=\frac{\partial}{\partial x}\frac{\partial}{\partial x}f(x)
而在矩阵微积分中,二阶导数不是一阶导数的一阶导数(也就是说Hessian矩阵,不是梯度的梯度)。
这个很好理解,首先,梯度是一个矩阵,对一个矩阵是无法再求梯度的(不符合梯度的定义)。
也就是说: \nabla_x^2f(x) \neq \nabla_x\nabla_xf(x)
那么一个向量函数的的Hessian矩阵能用他的梯度表示吗?是可以:
上述表达式还可以继续简化:
\nabla_x^2f(x) = \nabla_x(\nabla_xf(x))^T
当然,对于函数的输入是矩阵的情况,也可以得到它的Hessian矩阵。但是,这里我们先暂时只讨论对于向量函数f(x)的Hessian矩阵,而不讨论矩阵函数f(A)的情况。
### 4.3 二次和线性函数的梯度和海森矩阵
### 4.4 最小二乘法
### 4.5 行列式的梯度
### 4.6 优化特征值