神经网络的前向传播和反向传播
相信一开始,大家可能都对神经网络的前向传播和反向传播很头疼,我之前也是一样,后来慢慢懂了,现在深感知识传递的重要性。因此现在我就把我的一点点对两者的理解表达一下,希望能帮助到大家!

闲话不多说,直接开整!
前向传播公式推导:
我们可以以下图这个神经网络为例:

为了推导公式时表示更加简洁一点,我们在这里规定:

信号是怎样从输入层传输到隐藏层的,我们通过网络图可以看到,a,b节点的箭头都指向了c节点,而且每个箭头都有对应的权重。那么c节点的输入简单来说就是各节点的输入再乘以相应权重最后再加偏置值,用数学公式表达c节点的输入:

同理,作为同一层的d节点,同样也是a,b节点指向它,所以d节点的输入公式与c节点的大同小异,其数学公式表达为:

如果用矩阵的形式表达c,d节点公式为:

那么经过隐藏层的Sigmoid激活函数非线性变换后,表示为:

同理,输出层的输入信号还是上一层的输出信号乘以相应的权重矩阵加上对应的偏置向量,因此输出层的输入用数学公式可以表达为:

最后,输出层经过非线性函数映射后表达为:

至此,卷积神经网络信号前向传播过程结束。

卷积神经网络反向传播
卷积神经网络反向传播无非就是误差溯源和调整超参数的过程。神经网络在训练过程中,通过前向传播得到的输出结果有时候与真实值不同,因为目前没有哪个神经网络结构能够做到100%的准确率。既然存在误差,那就要将误差反向传播并逐层返回,通过链式法则调整训练参数以减小误差。这就涉及到卷积神经网络的反向传播过程。前向传递输入数据到输出产生误差,反向传播则误差信息更新权重参数矩阵。
同样,我们还是以上文的简单神经网络模型为例,研究反向传播过程:

由上图可知,e01为e节点的误差值,e02为f节点的误差值,要向隐藏层节点传递误差值。以c节点为例,从图中看出,e,f节点都指向了c节点,每个箭头上都有相应的权值,因此c节点的输入误差由e,f两项构成,相应比例应该用权值比表示,用数学公式可以表示为:

同理,d节点的输入可以表示为:

如果以矩阵的形式表达,可以为:

但是,我们发现中间矩阵表示太麻烦,因为我们要的是它们之间的比例关系,因此可以把中间矩阵的分母全部去掉:

还可以表示为:

我们可以从上式发现,反向传播时的权重矩阵其实就是前向传播时的权重矩阵的转置。至此,我们完成了输出层向隐藏层的传播过程,隐藏层向输入层传播过程同理,这里不再赘述。

链式法则
我们通过神经网络误差反向传播机制,将误差反馈到了各层,那么接下来就是利用误差值去更新训练参数,这就用到了链式法则。
同样以上文的神经网络模型为例:

我们首先更新隐藏层的权重参数w11,从后往前推导,首先我们可得:

神经网络参数更新是利用梯度下降法进行更新,以梯度的反方向前进,梯度下降一般公式:

由此公式可知,我们要求出误差对参数的偏导数。结合本文,误差对w11的偏导为:

代入后得:

同理,误差对w12的偏导为:

代入后得:

同理,误差对偏置向量b的求导为:

代入后得:

至此,我们可以利用梯度下降公式更新隐藏层的权重参数,接着我们可以对输入层的权重参数w11进行更新:

误差对输入层的w11的偏导为:

代入后,具体可得:

同理,输入层的其余参数也是用同方法求得,这里不再赘述。最后我们可以对误差对w11的偏导代入梯度下降公式:

这样我们便完成了参数更新的全过程。

神经网络的前向传播与反向传播相关推荐

  1. 花书+吴恩达深度学习(十三)卷积神经网络 CNN 之运算过程(前向传播、反向传播)

    目录 0. 前言 1. 单层卷积网络 2. 各参数维度 3. CNN 前向传播反向传播 如果这篇文章对你有一点小小的帮助,请给个关注,点个赞喔~我会非常开心的~ 花书+吴恩达深度学习(十)卷积神经网络 ...

  2. 神经网络理解:前向传播与反向传播

    文章目录 参考资料 神经网络 前向传播 1. 输入层->隐含层 2. 隐含层->输出层 反向传播 1. 计算总误差 2. 隐藏层与输出层之间的权重更新 3. 输入层与隐藏层之间的权重更新 ...

  3. 对于CNN卷积神经网络的前向传播和反向传播的理解

    对于CNN卷积神经网络的前向传播和反向传播的理解 前向传播示意图: ​ 咋一看这张图,作为初学者可能会不知所云( ̄ω ̄=)?但是想要很好的理解前向传播的原理,我们得从这张图细说. 文章目录 对于CNN ...

  4. (二十四) 手推BP神经网络的前向传播和反向传播

    手推BP神经网络的前向传播和反向传播 一.基本术语 1.监督学习与非监督学习 Supervised Learning有监督式学习: 输入的数据被称为训练数据,一个模型需要通过一个训练过程,在这个过程中 ...

  5. 神经网络前向传播和反向传播公式推导(公式+图解)

    以如下的预测是否是猫的双层神经网络为例进行公式推导: 符号注解: n_x :  输入特征的数量 n_h : 隐藏层的节点数量 n_y : 输出层的节点数量 m : 样本数量 W :权重矩阵 b :偏置 ...

  6. 前馈神经网络--前向传播与反向传播计算过程

    目录 2.多层感知机(前馈神经网络) 2.1 定义 2.2 神经元 2.3 激活函数 2.3.1 sigmoid函数 2.3.2 tanh函数 2.3.3 relu函数 2.4 计算 2.4.1 前向 ...

  7. 神经网络的前向传播和反向传播

    本博客是对Michael Nielsen所著的<Neural Network and Deep Learning>第2章内容的解读,有兴趣的朋友可以直接阅读原文http://neuraln ...

  8. 详解+推导 神经网络中的前向传播和反向传播公式(神经网络中的梯度下降)

    文章目录 线性回归快速回忆 逻辑回归中的正向传播与反向传播 逻辑回归中的正向传播与反向传播-代码实战 神经网络的正向传播与反向传播 参考资料 线性回归快速回忆 在线性回归(y=ax+by=ax+by= ...

  9. 3.3 前向传播与反向传播-机器学习笔记-斯坦福吴恩达教授

    前向传播与反向传播 前向传播过程(Forward Propagation) 神经网络每层都包含有若干神经元,层间的神经元通过权值矩阵 ΘlΘ^lΘl 连接.一次信息传递过程可以如下描述: 第 j 层神 ...

最新文章

  1. CSS3 keyframes动画实现弹跳效果
  2. Python pip安装命令
  3. MySQL—表中添加数据
  4. 二十万字C/C++、嵌入式软开面试题全集宝典一
  5. 【强化学习】多臂老虎机——E_greedy、UCB、Gradient Bandit 算法 代码实现
  6. 审计某开源商城中的漏洞大礼包
  7. 这份网约车安全乘车指南,请务必收下!
  8. Python实现一条基于POS算法的区块链
  9. linux引导分区被格式化修复,/boot分区、fstab文件、/bin/mount一次性被误除修复方法...
  10. linux定时任务总结。
  11. jenkins的邮件提醒
  12. windows端口被占用及广告弹窗处理
  13. 凸包算法 Matlab实现
  14. Linux 定时器使用
  15. java查看eth转账状态,eth转账确认查询
  16. 设计模式——设计模式概述
  17. 个人关于学习的一些总结
  18. Work Stealing 的运作原理
  19. 传统数仓如何转型大数据
  20. 砍价两种种算法(转载)

热门文章

  1. 衡水中学2021高考成绩查询,清华公布2021“丘班”学生名单,多所重点高中入选,唯独没有衡中...
  2. 如何切换到老版本的IE浏览器
  3. Forming a Magic Square
  4. 帆软两台服务器文件同步,同步帆软代码
  5. 给自己一个更安全的 mysql
  6. 有了这个Python库,再也不愁给孩子起名字了
  7. 360路由器更新网络
  8. javaWeb与Spring学习小结
  9. 12种食品狂吸走你的多余脂肪
  10. 未來用工新趨勢_医工结合将成未来医疗新趋势