• 神经网络向量化求反向传播梯度


    实现神经网络功能时,为了计算效率考虑,可以通过向量化的方式实现。向量化实现反向传播的话,求梯度时就要涉及到矩阵的求导,学校里根本没有学习过这个概念,所以在学习cs31n时,对反向传播求梯度时的代码很是疑惑,不理解矩阵为什么需要进行转置。查看matrix cookbook这本书也没有解决我的疑惑。后来发现了闲话矩阵求导这里对矩阵求导的解释说明,通过维度分析来理解矩阵求导的过程,大概理解了反向传播求梯度的代码实现,记录一下自己的理解。

     1. 前向传播

    神经网络前向传播的公式:

          

    计算中使用向量化表示数据,每一个变量的维度信息:

         

     变量说明:

      X 所有数据构成的矩阵,N为样本总数,D为每一个样本的维度;

           W 所有权重工程的参数矩阵,D为每一个样本的维度,M为输出节点的总数;

      b 为偏置矩阵

           Y 为输出      

    2. 反向传播

    利用反向传播算法更新参数时,涉及到的参数梯度的求解,需要求解的变量有dW, dX, db。

    假设损失函数为L, 是一个标量。

    2.1 dX的分析

    根据导数的链式法则,dX的梯度可以表示成下面的形式:

    维度分析:

    dX的维度要和X保持一致  

    的维度要和Y保持一致,并且标量对矩阵求偏导,矩阵的维度不变

     

    应该和W有关,但是至于维度是多少需要根据矩阵乘法进行分析:

    (1)dX的维度为N*D, 的维度为N*M,根据这两个变量的维度,以及上面dX的公式,

    可以分析出的维度;

     ( 2)dX公式用维度信息可以表示成这样:    

    根据矩阵相乘的分析,我们可以得到 的维度应该是   M*D  ,由于是和W相关的,W的维度是D*M,

    所以我们可以得出结论   的结果是权重矩阵W的转置。所以

    2.2 dW的分析

    了解了2.1中dX的分析过程,dW的结果就不难理解了。

    dW的公式表示:


    应该和X有关,但是至于维度是多少需要根据矩阵乘法进行分析:

    dW公式用维度信息可以表示成这样:  

     根据矩阵相乘的分析,我们可以得到 的维度应该是   D*N  ,由于是和X相关的,X的维度是N*D,

    所以我们可以得出结论   的结果是样本矩阵X的转置。所以

    2.3 db的分析

    db的公式表示:

    根据矩阵乘法分析:

    所以:

    参考:  

    闲话矩阵求导

    2 cs231n面向视觉识别的CNN

    [cs231n][7]Layers的forward&backward

  • 相关阅读:
    python—虚拟环境搭建
    pytnon—线程,进程
    python——新excel模块之openpyxl
    装饰器——应用
    css样式
    HTML
    广图登陆知网下载资源教程
    使用k-近邻算法改进约会网站的配对效果
    k-近邻算法概述
    机器学习基础
  • 原文地址:https://www.cnblogs.com/objectDetect/p/5849605.html
Copyright © 2020-2023  润新知