深度学习中的导数
在深度学习的训练过程中,我们经常需要计算导数。导数是函数在某一点的切线斜率,它可以告诉我们函数在某一点的变化率。在深度学习中,我们经常需要计算损失函数对模型参数的导数,以便调整模型参数,使得模型的预测值更接近真实值。在这个notebook中,我们将总结深度学习中常用的一些导数计算规则。在此之前,我们应该具有微积分的基本知识,基本掌握简单的标量求导和链式法则。主要目标是要能够清楚求导过程中的张量形状变化。
目录
1 向量导数
在深度学习中,我们最常使用的数据结构就是张量,因此,我们需要从标量的导数去泛化,推广到向量和矩阵的导数,进而理解张量的导数。在这里,我们总结一些常用的向量导数计算规则,也作为张量导数的引入。
1.1 向量与标量间的导数
-
标量对向量求导
设 y y y是一个标量, x x x是一个向量,我们规定 y y y对 x x x的导数是一个行向量,它的第 i i i个元素是 y y y对 x i x_i xi的偏导数(具体原因到后面就可以理解了)。如图:
-
** 向量对标量求导**
设 y y y是一个向量, x x x是一个标量,我们规定 y y y对 x x x的导数是一个列向量,它的第 i i i个元素是 y i y_i yi对 x x x的偏导数。如图:
1.2 向量与向量、矩阵间的导数
- ** 向量对向量求导**
设 y y y是一个向量, x x x是一个向量,我们规定 y y y对 x x x的导数是一个矩阵,它的第 i i i行第 j j j列的元素是 y i y_i yi对 x j x_j xj的偏导数。
我们可以把向量对向量的导数先看作是标量对向量的导数,即 y y y的各个分量对 x x x求导,这样我们就先得到了一个列向量。该列向量的各个元素再对 x x x求导,由于这是标量对向量的导数,所以每一行就得到了一个行向量,把这些行向量排列起来,就得到了一个矩阵。 - 向量对矩阵求导、矩阵对矩阵求导
可以想象,我们会得到一个高阶张量。
2 向量链式法则
在深度学习中,我们经常需要计算复合函数的导数,这就需要用到链式法则。在这里,我们总结一下向量链式法则。
其实向量的链式法则和标量的链式法则是一样的,只是在求导的过程中不再是从前的标量对标量的求导,而是出现了有向量参与的求导,即链式求导法则同样适用于向量,只是需要考虑向量与标量和向量间的求导,我们可以举一个例子来说明:
设 x , w x,w x,w ∈ R n \in \mathbb{R}^{n} ∈Rn y y y