专栏首页share ai happiness深度学习那些事 — 反向传播

深度学习那些事 — 反向传播

这部分是深度学习的重点,掌握了反向传播算法就相当于掌握了一半的神经网络算法。其实就是将损失函数产生的误差通过边进行反向传播往回传播的过程,传播的过程当中会得到每个边的梯度,有了这个梯度,就可以沿着反方向更新参数,不断的迭代,最后让参数越来越好,越来越符合当前样本的结构,学习到更多样本的知识。

前面讲到的是前馈计算,前馈计算得到的是一个误差,也就是损失函数,下面讲怎么把损失函数计算出来的误差,反向传播更新参数。反向传播是神经网络最核心的部分。

反向传播,可以看成链式求导过程,一环套一环,通过对误差最终的损失函数求导,损失函数对每个参数进行求导,求导过程就是反向传播过程。

这个过程为什么叫反向传播呢?继续往后看。

反向传播——链式求导过程

在这里会通过上面画横线的链式部分进行求导,来演示。

整个思想:通过损失函数原始误差,我们可以计算出每个节点的误差,σ1^y和σ2^y两个节点的误差会通过边往下传,下层的误差还可以往下传,这个误差可以作为指导,参与到每个边的导数的计算。

进行求导之前回顾一下求导的对象,前面三个公式不陌生了,J(θ)对每个边每个参数求导的过程,它是从x开始计算,一直计算到y。sig激活函数的导数在这里也先给出来。

损失函数的误差乘当前这个节点的上层节点的激活函数的导数就是这个点的误差。

参考公式如下:

求导:

要算一条边的导数,可以用连接这个边的上层节点的误差值乘这个边相连下层节点的具体的值就行。

求导:

误差的反向传播大概思想是这样,首先第一步,要算出顶层损失函数的误差,通过这个误差可以得到输出层每个节点的误差,然后这个误差会通过它对应的边,乘以对应边的权重,会反向传播,往底层传播,完了把它加权和算出来之后再乘底层节点的对应的激活函数的导数值,就是激活函数的误差,底层节点的误差还可以往后传播,如果层数更深的话,还可以乘边的权重,往后传播...

求导:

前面是对权重矩阵进行求导,怎么对偏置进行求导呢?

偏置的导数计算要比权重矩阵的导数计算简单,也是由两个部分组成,我们只需要这个偏置相关的节点的误差值,后边是一个常数1。

现在有了这个输出,就能得到损失函数,就能得到误差值,得到这两个误差值,通过反向传播把误差往后传,可以计算出第二层的权重值,上层的误差乘下层的具体指得到导数。

通过反向传播能得到隐含层的误差,有了这个误差可以进一步计算输入层和隐含层之间每个边的权重,也是隐含层节点的误差值乘输入层节点的值。

反向传播算法——核心思想

下图右边红色画出来的部分,上面是对权重进行求导,下面是对偏置进行求导。

求导分为三部分,在下图左边部分。

前面说了那么多,就是通过反向传播求的导数,有了导数能做什么吗?

我们找到这个导数反方向的梯度,看下面更新参数值部分,黄色部分是旧的θ,红色部分是θ的导数,旧θ减去导数(θ导数有方向的,减去反方向的值),具体减多少,具体往左侧每次迈多大步子,取决于速率,求出新的θ,覆盖旧的θ。

更新参数值:

小结:

将误差通过边进行反向传播。

结合误差计算每个参数的梯度。

本文分享自微信公众号 - 1001次重燃(smile765999),作者:木野归郎

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-10-06

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 消息中间件初识和安装 — RabbitMQ

    这两天有个功能实现需要用到rabbitmq,之前做大数据的时候用过kafka,对rabbitmq了解的比较少,这里进行学习总结。

    木野归郎
  • 动态图解释 RNN、LSTM和GRU

    循环神经网络(Recurrent Neural Network, RNN),RNN常用来处理序列式问题,以序列数据为输入来进行建模的深度学习模型,RNN是NLP...

    木野归郎
  • 大数据之数仓概念

    这几天看了一些专业的解释,还是对ODS、DW和DM认识不够深刻,所以就查了相关的资料,分享给大家一起学习。

    木野归郎
  • Java 集合系列11: Hashtable深入解析(1)

    前一章,我们学习了HashMap。这一章,我们对Hashtable进行学习。 我们先对Hashtable有个整体认识,然后再学习它的源码,最后再通过实例来学会使...

    好好学java
  • 编写高质量代码 改善 Python 程序的 91 个建议

    「逆锋起笔」专注于Java、Python、数据分析、职场发展、编程技术资讯、行业动态,为广大程序员们提供一个技术与信息共享平台,关注即送视频教程。

    逆锋起笔
  • 股市舆情情感分类可视化系统

    在项目当前目录下:$ python manage.py runserver 浏览器打开127.0.0.1:8000

    机器学习AI算法工程
  • python+arrow按月生成表

    按月生成全部表(table_20150101,table_20150201,table_20150301,table_20150401...)

    py3study
  • 白给的性能不要?cvpr2021-Diverse branch block

    本文是继前作ACNet的又一次对网络结构重参数化的探索,我们设计了一个类似Inception的模块,以多分支的结构丰富卷积块的特征空间,各分支结构包括平均池化,...

    BBuf
  • 90 条实用的编写Python 程序建议

    点击上方蓝字“ITester软件测试小栈“关注我,每周一、三、五早上 08:30准时推送,每月不定期赠送技术书籍。

    ITester软件测试小栈
  • 91 条写 Python 程序的建议

    开始学 Python 的时候,我们的目标是实现功能,少出bug。但当有了一定经验之后,就会对代码规范和风格有更高的要求。这样既能提升代码的质量,也更易于后期的维...

    公众号机器学习与生成对抗网络

扫码关注云+社区

领取腾讯云代金券

,,