本文主要介绍在机器学习公式推导过程中经常会用到的矩阵和向量求导入门知识。之前的文章也提过,本科的高数和线性代数课程中一般都没有介绍这部分知识,于是可能就有朋友会担心矩阵求导是不是很难很高深,其实完全不用担心,理解它只需要了解导数和矩阵的概念就足够了。
虽然矩阵很容易让人望而生畏,但其基本概念却很简单,它仅仅是把逻辑上相关的一组数据放在了一起并可以视这些数据为一个整体罢了。通常,为了便于表达和交流我们会把矩阵当着一个整体,而在具体针对矩阵的计算时,其实还是对其元素分别进行计算,比如两个矩阵的加法,实质上是对两个矩阵中对应位置元素做加法,最后形成一个新的矩阵。矩阵的导数也一样,也是对矩阵中各元素进行求导然后得到一个新的矩阵。
机器学习中最常用的矩阵求导有:标量对矩阵的求导,矩阵对标量求导以及向量对向量的求导。下面分别对这几种求导方式进行介绍。
标量对矩阵的求导
如果函数f把一个元素为实数的m×n矩阵
映射为一个实数,则
也就是实值函数f对矩阵X求导其实就是f对X的各元素分别求导得到一个与X同型的矩阵。比如
且f(X)=x + 2y + 3z + 4w,则
再比如正规方程推导那篇文章中的例子,设
,则
矩阵对标量的求导
如果函数f把实数x映射成一个元素为实数的m×n矩阵
也就是矩阵Y对实数x求导其实就是矩阵的各元素分别对x求导得到一个与Y同型的矩阵。比如
则
向量对向量的求导
如果函数f把元素为实数的n维向量
映射成一个元素为实数的m维Y向量
则
也就是m维向量Y对n维向量X求导其实就是Y向量的第一个元素对X向量的各元素分别求导形成结果矩阵的第一行,Y向量的第二个元素对X向量的各元素分别求导形成结果矩阵的第二行,以此类推,最后得到一个m×n的矩阵。
下面看一个例子:
设A是一个m×n的矩阵,x是一个n维列向量,求
根据矩阵乘法,我们可得
Ax是一个m维列向量,根据向量对向量的求导,可得
因为对求导时,其它的,都看作常数,所以有
其它的各项类推,于是得到
总结
本文主要介绍了矩阵和向量最基础最常见的几种求导法则,这些法则对于我们理解矩阵求导很重要,但其求导过程比较繁琐,所以我们在实际应用过程中多数时候并不会按这些法则对矩阵的每个元素进行逐个求导,而是会利用一些常见的结论、公式和复合函数求导法则等,这些知识我们下一篇文章再介绍。