首页 常识

常识

矩阵的转置怎么求导(机器学习BP算法及矩阵求导)

2024-08-16 12:00:38 100

除了基本导数公式,本文介绍的矩阵求导方法不涉及任何公式的套用。

本文以neural network中最常见的一种计算单元为例,详细介绍了BP算法中涉及到的矩阵求导过程。刚接触机器学习时,曾被BP算法中的矩阵求导困扰好久,写下这篇总结,希望能对后来学习的同学有所帮助。

(1)分析阶段

下图为neural network中较为常见的一种计算单元,本文以此为例介绍我对矩阵求导或是BP算法的理解。

矩阵维数:

X:N * D W: D * M b: M * 1 q: N * M f: N * M

一般而言:

N表示输入的训练数据数目

D表示一条样本数据展开为行向量后的长度

M表示下一hidden layer的hidden unit数目

由上图:

对于矩阵q:

其中q[i][j]:

简单的分析之后,我们先明确我们的目标,对于BP算法主要是求解f对W和b的偏导数,即求解下面两个表达式:

结合上面两个等式:

即,我们想求出f对W和对b的偏导数,我们只需另外求出下面这个等式即可:

另外,有一个小技巧可以帮助验证最后得到的梯度矩阵形式是否正确,在机器学习中我们求梯度或偏导数主要用于类似如下表达式:

抛开dW前的系数,我们可以发现矩阵dW和W维数必须相同。


2)求解

对于函数f:

数学定义上f在0处不可导,因为ReLu在0点不可导,这里我们人为取f在0点的导数为0,所以:

而:

为方便表示,这里我们引入一个辅助矩阵V:

因而有:

之后回到步骤(1)中最后两个表达式:

对于第一个表达式,即矩阵X的第m列与矩阵V的第n列的乘积,等价于X的转至的第m行与V的第n列的乘积,所以向量化表示为:

即,X的转置与V的卷积:X.T.dot(V)

第二个表达式,即为矩阵V第k列的和,所以向量化表示为:

即,矩阵V按列求和。


综上:

与矩阵W维数相同,均为:D * M

与向量b维数相同,均为:M * 1


(3)小结:

机器学习中的矩阵求导,尤其BP算法中的矩阵求导可以由导数的“链式法则”一步步得到,完全不用刻意去背诵相关的求导公式,这也有助于理解BP算法。另外,理解矩阵X和其梯度矩阵dX具有相同维数很有帮助。