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

本文以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具有相同维数很有帮助。

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

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

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

吴恩达deeplearning.ai系列课程

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

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

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

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


更多求职面经javapython爬虫大数据等技术分享、资料分享请关注个人微信公众号:

机器学习BP算法及矩阵求导相关推荐

  1. 机器学习中的线性代数之矩阵求导

    前面针对机器学习中基础的线性代数知识,我们做了一个常用知识的梳理.接下来针对机器学习公式推导过程中经常用到的矩阵求导,我们做一个详细介绍. 矩阵求导(Matrix Derivative)也称作矩阵微分 ...

  2. 机器学习中的矩阵求导的一点总结(三种方法求线性回归最佳参数)

    机器学习中的矩阵求导的一点总结(三种方法求线性回归最佳参数) 转载于:https://blog.csdn.net/promisejia/article/details/80159619?ops_req ...

  3. [机器学习-数学] 矩阵求导(分母布局与分子布局),以及常用的矩阵求导公式

    一, 矩阵求导 1,矩阵求导的本质 矩阵A对矩阵B求导: 矩阵A中的每一个元素分别对矩阵B中的每个元素进行求导. A1×1A_{1\times1}A1×1​, B1×1B_{1\times1}B1×1 ...

  4. 算法推导核心!一次性梳理清楚,是时候搞定矩阵求导了!附参考资料

    点击上方"Datawhale",选择"星标"公众号 第一时间获取价值内容 1. 前言与感谢 以前就对矩阵求导有心理阴影,到底要不要转置,哪个矩阵放在前面,哪个矩 ...

  5. 矩阵求导与BP的证明的建议

    前言 在有些博客推导神经网络的BP时,涉及到多次矩阵求导运算,尤其是反向传播时候,求的梯度结果被转置了,比如假设最后一层的输出为 y=σ(w⋅x+b) y=\sigma\left(w\cdot x+b ...

  6. 向量转置的怎么求导_机器学习中的向量求导和矩阵求导

    在机器学习的各种关于向量或者矩阵的求导中,经常会出现各种需要转置或者不需要转置的地方,经常会看得人晕头转向.今天我对机器学习中关于这部分的常识性处理方法进行整理并记录下来方便大家参考. 一些约定 首先 ...

  7. 机器学习:神经网络矩阵形式,向量形式,矩阵求导

    文章目录 神经网络向量形式: 神经网络矩阵形式: 神经网络损失函数: 求导: 求导前准备: 求解析解: 感知机求∂L/∂w: 感知机求∂L/∂w1,∂L/∂w2: 附录:方便查寻找使用 想要完成新的任 ...

  8. 【机器学习】线性回归之Normal Equation(矩阵求导与线性代数视角)

    Normal Equation 之前我们用梯度下降来求解线性回归问题的最优参数,除此之外我们还可以用正规方程法(Normal Equation)来求解其最优参数. Normal Equation方法的 ...

  9. 【机器学习中的矩阵求导】(七)矩阵向量化复习

    学习总结 (1)矩阵乘法. Vec⁡(ABC⁡)=(C⊤⊗A)Vec⁡(B)\operatorname{Vec}(\operatorname{ABC})=\left(\mathbf{C}^{\top} ...

最新文章

  1. c++产生死锁的必要条件?已经如何预防死锁?
  2. 2个多边形,其中一个包围另一个,如何将中间的环带区域涂成红色
  3. 互联网分布式架构技术概述
  4. 大数据开发你需要知道的十个技术
  5. Android一个漂亮的日历组件源码
  6. Thinkphp3.2整合微信支付
  7. VMware 报错:“另一个程序已锁定文件的一部分,进程无法访问”---Linux运维工作笔记051
  8. Oracle数据库异常--- oracle_10g_登录em后,提示java.lang.Exception_Exception_in_sending_Request__null或Connection
  9. sql语句循环截取字符串
  10. Javascript 清空input type=file 的值方法
  11. 【java学习之路】(javaWeb篇)005.Js之DOM、对象、函数上下文
  12. 计算机word求差函数,表格里怎么自动求差/怎样在word2010表格中求差
  13. Java 时间日期API总结
  14. 计算机缺失程序怎么办,win7电脑缺失dll文件软件打不开怎么办
  15. 1000元如何让旧电脑升级改造?这些方案你得学会
  16. python里使用协程和StreamReader、StreamWriter来创建echo服务端
  17. windows下Ardupilot编译环境搭建
  18. Web3赋能创作者经济:NFT,DAO和永续收入
  19. 市场调研你所不知道的几个关键点
  20. 2021年NBA季后赛第四轮总决赛晋级预测

热门文章

  1. 动力登山绳 EN 892标准
  2. 著名编程语言Fortran创始人巴库斯
  3. ReactEurope Conf 参会感想
  4. 星型模型和olap多维数据库
  5. 【Unity】Unity开发进阶(六)UnityEvent使用与源码解析
  6. 前端学习路线(2022)
  7. R包circlize:柱状图用腻了?试试好看的弦状图
  8. 注册测绘师学习笔记(五)
  9. 第一次“初吻” - 和互联网牵手的日子
  10. 类Unix系统目录结构