机器学习BP算法及矩阵求导

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

本文以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数目

由上图:

image

对于矩阵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具有相同维数很有帮助。

希望本文对你有所帮助。最后附上个人觉得比较好的几个机器学习视频资料:

Coursera 上吴恩达的“机器学习”

吴恩达的“deeplearning.ai”系列,在网易云上搜索“吴恩达”即可找到,完整中文字幕。

吴恩达deeplearning.ai系列课程

斯坦福大学李飞飞老师开设的CS231n,用deeplearning做计算机视觉相关(图像分类),这个课程可以让你学会手写“CNN”,看完可以对neural network有较深刻的认识,非常推荐。视频可以在B站上找到,清晰度非常高,全英文字幕。另外,Google搜索“CS231n”,可以找到这个课程的网站,上面有assigments(课程作业非常有价值,github上可以找到作业答案),需要提前准备的一些预备知识等,上面有很多资料,值得一看。

书的话推荐:李航的统计学习方法、周志华的机器学习又称“西瓜书”

1和2可以让你从总体对机器学习体系有较好的了解;3的话可以让你对机器学习了解更深刻;4可以让你对机器学习背后的数学理论有较好的了解。

不建议入门者一开始就啃理论,个人觉得机器学习对理论的了解是个渐进的过程,通过视频学习把握整体,然后是:理论,应用,理论之间不断深入的过程。


更多求职面经javapython爬虫大数据等技术分享、资料分享请关注个人微信公众号:
扫码关注,及时获取更多精彩内容。(博主今日头条大数据工程师)

猜你喜欢

转载自blog.csdn.net/liewen_/article/details/89364276