反向传播算法(过程及公式推导)[通俗易懂]

反向传播算法(过程及公式推导)[通俗易懂]反向传播算法(Backpropagation)是目前用来训练人工神经网络(ArtificialNeuralNetwork,ANN)的最常用且最有效的算法。

大家好,又见面了,我是你们的朋友全栈君。

        反向传播算法(Backpropagation)是目前用来训练人工神经网络(Artificial Neural Network,ANN)的最常用且最有效的算法。其主要思想是:
(1)将训练集数据输入到ANN的输入层,经过隐藏层,最后达到输出层并输出结果,这是ANN的前向传播过程;
(2)由于ANN的输出结果与实际结果有误差,则计算估计值与实际值之间的误差,并将该误差从输出层向隐藏层反向传播,直至传播到输入层;
(3)在反向传播的过程中,根据误差调整各种参数的值;不断迭代上述过程,直至收敛。

        反向传播算法的思想比较容易理解,但具体的公式则要一步步推导,因此本文着重介绍公式的推导过程。


1. 变量定义

反向传播算法(过程及公式推导)[通俗易懂]

        上图是一个三层人工神经网络,layer1至layer3分别是输入层、隐藏层和输出层。如图,先定义一些变量:
        反向传播算法(过程及公式推导)[通俗易懂]表示第反向传播算法(过程及公式推导)[通俗易懂]反向传播算法(过程及公式推导)[通俗易懂]层的第反向传播算法(过程及公式推导)[通俗易懂]反向传播算法(过程及公式推导)[通俗易懂]个神经元连接到第反向传播算法(过程及公式推导)[通俗易懂]反向传播算法(过程及公式推导)[通俗易懂]层的第反向传播算法(过程及公式推导)[通俗易懂]反向传播算法(过程及公式推导)[通俗易懂]个神经元的权重;
反向传播算法(过程及公式推导)[通俗易懂]        反向传播算法(过程及公式推导)[通俗易懂]表示第反向传播算法(过程及公式推导)[通俗易懂]反向传播算法(过程及公式推导)[通俗易懂]层的第反向传播算法(过程及公式推导)[通俗易懂]反向传播算法(过程及公式推导)[通俗易懂]个神经元的偏置;
        反向传播算法(过程及公式推导)[通俗易懂]反向传播算法(过程及公式推导)[通俗易懂]表示第反向传播算法(过程及公式推导)[通俗易懂]反向传播算法(过程及公式推导)[通俗易懂]层的第反向传播算法(过程及公式推导)[通俗易懂]反向传播算法(过程及公式推导)[通俗易懂]个神经元的输入,即反向传播算法(过程及公式推导)[通俗易懂]
反向传播算法(过程及公式推导)[通俗易懂]
        反向传播算法(过程及公式推导)[通俗易懂]反向传播算法(过程及公式推导)[通俗易懂]表示第反向传播算法(过程及公式推导)[通俗易懂]反向传播算法(过程及公式推导)[通俗易懂]层的第反向传播算法(过程及公式推导)[通俗易懂]反向传播算法(过程及公式推导)[通俗易懂]个神经元的输出,即反向传播算法(过程及公式推导)[通俗易懂]
反向传播算法(过程及公式推导)[通俗易懂]
        其中反向传播算法(过程及公式推导)[通俗易懂]反向传播算法(过程及公式推导)[通俗易懂]表示激活函数。

2. 代价函数

        代价函数被用来计算ANN输出值与实际值之间的误差。常用的代价函数是二次代价函数(Quadratic cost function):
反向传播算法(过程及公式推导)[通俗易懂]
反向传播算法(过程及公式推导)[通俗易懂]
        其中,反向传播算法(过程及公式推导)[通俗易懂]反向传播算法(过程及公式推导)[通俗易懂]表示输入的样本,反向传播算法(过程及公式推导)[通俗易懂]反向传播算法(过程及公式推导)[通俗易懂]表示实际的分类,反向传播算法(过程及公式推导)[通俗易懂]反向传播算法(过程及公式推导)[通俗易懂]表示预测的输出,反向传播算法(过程及公式推导)[通俗易懂]反向传播算法(过程及公式推导)[通俗易懂]表示神经网络的最大层数。

3. 公式及其推导

        本节将介绍反向传播算法用到的4个公式,并进行推导。如果不想了解公式推导过程,请直接看第4节的算法步骤。
        首先,将第反向传播算法(过程及公式推导)[通俗易懂]反向传播算法(过程及公式推导)[通俗易懂]层第反向传播算法(过程及公式推导)[通俗易懂]反向传播算法(过程及公式推导)[通俗易懂]个神经元中产生的错误(即实际值与预测值之间的误差)定义为:
反向传播算法(过程及公式推导)[通俗易懂]反向传播算法(过程及公式推导)[通俗易懂]


        本文将以一个输入样本为例进行说明,此时代价函数表示为:
反向传播算法(过程及公式推导)[通俗易懂]
反向传播算法(过程及公式推导)[通俗易懂]

公式1(计算最后一层神经网络产生的错误):

反向传播算法(过程及公式推导)[通俗易懂]

        其中,反向传播算法(过程及公式推导)[通俗易懂]反向传播算法(过程及公式推导)[通俗易懂]表示Hadamard乘积,用于矩阵或向量之间点对点的乘法运算。
公式1的推导过程如下:
反向传播算法(过程及公式推导)[通俗易懂]


公式2(由后往前,计算每一层神经网络产生的错误):

反向传播算法(过程及公式推导)[通俗易懂]

        推导过程:
反向传播算法(过程及公式推导)[通俗易懂]反向传播算法(过程及公式推导)[通俗易懂]


公式3(计算权重的梯度):

反向传播算法(过程及公式推导)[通俗易懂]

        推导过程:
反向传播算法(过程及公式推导)[通俗易懂]


公式4(计算偏置的梯度):

反向传播算法(过程及公式推导)[通俗易懂]

        推导过程:
反向传播算法(过程及公式推导)[通俗易懂]


4. 反向传播算法伪代码


  • 输入训练集

  • 对于训练集中的每个样本x,设置输入层(Input layer)对应的激活值反向传播算法(过程及公式推导)[通俗易懂]反向传播算法(过程及公式推导)[通俗易懂]
    • 前向传播:
反向传播算法(过程及公式推导)[通俗易懂], 反向传播算法(过程及公式推导)[通俗易懂]
    • 计算输出层产生的错误:
反向传播算法(过程及公式推导)[通俗易懂]
    • 反向传播错误:反向传播算法(过程及公式推导)[通俗易懂]
反向传播算法(过程及公式推导)[通俗易懂]

  • 使用梯度下降(gradient descent),训练参数:

 反向传播算法(过程及公式推导)[通俗易懂]

反向传播算法(过程及公式推导)[通俗易懂]






版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/131986.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Mac环境变量配置(Java)

    Mac环境变量配置(Java)1.打开终端:2.输入命令:【/usr/libexec/java_home-V】,查看默认的jdk下载地址(绿色下划线的就是jdk默认路径)(注意⚠️:命令行终端是区分大小写的【-v是不对的,必须是大写-V】)3.如果是第一次配置环境变量,使用命令:【touch.bash_profile】创建一个.bash_profile隐藏配置文件(如果存在已有配置文件就输入:【open-e.bash_profile】)打开如下4.输入以下命令:(注意⚠️:红色字体是第2步查出来自己jd…

    2022年6月29日
    32
  • MyBatis+Spring+SpringMVC框架面试题整理(一)

    MyBatis+Spring+SpringMVC框架面试题整理(一)目录■SpringMVC的工作原理■谈谈你对SpringMVC的理解■SpringMVC常用注解都有哪些?■Spring的常用注解■如何开启注解处理器和适配器?■​​​​​​​如何解决get和post乱码问题?■​​​​​​​谈谈你对Spring的理解■​​​​​​​Spring中的设计模式(解释)■​​​​​​​简…

    2022年5月2日
    43
  • 1146 mysql_MySQL错误处理–1146错误「建议收藏」

    1146 mysql_MySQL错误处理–1146错误「建议收藏」在MySQL的主从复制过程中,出现了1146错误。提示的错误原因是:在默认的数据中找不到指定的表。showslavestatus\G;现实的同步状态。Slave_IO_Running:YESSlave_SQL_Running:NoLast_Errno:1146Last_Error:Error’Table’coop.Coop_Data’doesn’texist’onquery…

    2022年6月12日
    38
  • java线程与cpu线程_坑惨了什么意思

    java线程与cpu线程_坑惨了什么意思在java中,线程间的通信可以使用wait、notify、notifyAll来进行控制。从名字就可以看出来这3个方法都是跟多线程相关的,但是可能让你感到吃惊的是:这3个方法并不是Thread类或者是Runnable接口的方法,而是Object类的3个本地方法。下图是我总结的Java资料,想要资料的话请点795983544暗号CSDN。其实要理解这一点也并不难,调用一个Object的wait与notify/notifyAll的时候,必须保证调用代码对该Object是同步的,也就是说必须在作用等.

    2025年9月5日
    2
  • vim的复制粘贴命令_vim编辑器常用命令

    vim的复制粘贴命令_vim编辑器常用命令接触linux操作系统之后使用vi/vim编辑器用的就比较多,其实vi/vim编辑文件特别方便,但是一些常见的指令模式下的命令确很容易忘,特别是复制剪切粘贴经常忘,所以小结下以后查用起来比较方便。1.复制剪切粘贴撤销复制:复制一行则:yy复制三行则:3yy,即从当前光标+下两行。复制当前光标所在的位置到行尾:y$复制当前光标所在的位置到行首:y^剪切:剪切一行:dd前切三

    2022年9月22日
    2
  • 用python3实现粒子群优化算法(PSO)

    用python3实现粒子群优化算法(PSO)粒子群优化算法(ParticleSwarmOptimization,PSO)属于进化算法的一种,是通过模拟鸟群捕食行为设计的。从随机解出发,通过迭代寻找最优解,通过适应度来评价解的品质。设想这样一个场景:一群鸟在随机搜索食物。在这个区域里只有一块食物。所有的鸟都不知道食物在那里。但是他们知道当前的位置离食物还有多远。那么找到食物的最优策略是什么呢。最简单有效的就是搜寻目前离食物最近的鸟的周围区…

    2022年5月24日
    43

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号