大家好~我开设了“深度学习基础班”的线上课程,带领同学从0开始学习全连接和卷积神经网络,进行数学推导,并且实现可以运行的Demo程序

线上课程资料:
本节课录像回放1

加QQ群,获得ppt等资料,与群主交流讨论:106047770

本系列文章为线上课程的复盘,每上完一节课就会同步发布对应的文章

本文为第三节课:“全连接层的前向和后向传播推导(下)”的复盘文章

本课程系列文章可进入索引查看:
深度学习基础课系列文章索引

回顾相关课程内容

  • 第二节课“判断性别”Demo需求分析和初步设计(下1)

    • 损失函数的表达式是什么?
    • 随机梯度下降算法是什么?
    • 随机梯度下降公式是什么?
    • 求损失函数的极小值点的梯度下降公式是什么?
  • 第二节课“判断性别”Demo需求分析和初步设计(下2)

    • 对于“判断性别”的Demo,𝐸可以是什么函数?
    • 什么是训练?
    • 如何求梯度?
      image
      • 如何求\(\frac{dE}{dw_{53}}\)
      • 如何求\(\frac{dE}{dw_{31}}\)

主问题:如何推导全连接层的后向传播?

为什么要推导全连接层的后向传播?

image

  • 通过训练,我们希望得到什么?
  • 为了得到更新后的权重和偏移,需要知道什么?
  • “判断性别Demo”是如何实现训练的?
  • 梯度的数量太多,导致计算很臃肿,如何优化?
  • 如果增加隐藏层中的神经元数量,是否会修改梯度计算的代码?
  • 如何才能不修改代码,只调整参数即可?

将梯度向量化

  • 回顾计算梯度的代码,有哪些是重复的计算?
  • 能否在梯度向量化公式中,将重复计算提出来?

参考一文搞懂反向传:

其实对于已经计算完毕的节点我们完全可以直接拿来用,因此我们可以重新看待这个问题,从后往前更新。先更新后边的权重,之后再在此基础上利用更新后边的权重产生的中间值来更新较靠前的参数。
这个中间变量就是本课要引入的误差项

因此,我们需要先计算出输出层的误差项;
再根据它来计算出隐藏层的误差项;
最后根据它们分别计算出输出层和隐藏层的梯度

主问题:如何推导全连接层的后向传播?

image

  • 输出层神经元的误差项是什么?
    image
    image
    image

  • 隐藏层神经元的误差项是什么?
    image

  • 所以每层神经元的误差项计算公式都是什么?

\[\delta_j=\frac{dE}{dnet_j} \]

  • 每个神经元权重\(𝑤_{ji}\)的梯度( \(𝑤_{ji}\)表示从神经元i接到神经元j的权重)是什么?
\[\frac{dE}{dw_{ji}}=\delta_j a_i\\ 其中a_i为神经元i的输出 \]

  • 所以求梯度的问题转换为求什么?
    求误差项

  • 如何计算输出层神经元的误差项: \(\delta_k=\frac{dE}{dnet_k}\)
    image
    image

  • 对于下图的神经网络,输出层的误差向量是什么?
    image

\[\overrightarrow{\delta_{输出层}} = \begin{bmatrix} \delta_{5} \\ \end{bmatrix} \]

  • 如何计算隐藏层神经元的误差项: \(\delta_j=\frac{dE}{dnet_j}\)
    image

  • 对于下图的神经网络,隐藏层的误差向量是什么?
    image

\[\begin{aligned} W_{输出层} &=\begin{bmatrix} w_{53}, w_{54}, w_{b_5} \\ \end{bmatrix} \\ \overrightarrow{\delta_{隐藏层}} &=\begin{bmatrix} \delta_{3} \\ \delta_{4} \\ \end{bmatrix}\\ &= \begin{bmatrix} \overrightarrow{\delta_{输出层}} \cdot W_{输出层_{1列}} \;\; \frac{df(net_3)}{dnet_3} \\ \overrightarrow{\delta_{输出层}} \cdot W_{输出层_{2列}} \;\; \frac{df(net_4)}{dnet_4} \\ \end{bmatrix} \end{aligned} \]

该向量公式同样适用于输出层有多个神经元的情况

原文地址:http://www.cnblogs.com/chaogex/p/16849757.html

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长! 2. 分享目的仅供大家学习和交流,请务用于商业用途! 3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入! 4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解! 5. 如有链接无法下载、失效或广告,请联系管理员处理! 6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需! 7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员! 8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载 声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性