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

反向传播算法(过程及公式推导)[通俗易懂]反向传播算法(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),训练参数:

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

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






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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • PhpSpreadsheet_php获取表单数据

    PhpSpreadsheet_php获取表单数据在利用php读取Excel时,当前(2019年)流行的做法是利用composer安装PhpSpreadsheet(composerrequirephpoffice/phpspreadsheet)来操作,示例代码如下:$abs_excel_path=$_SERVER[‘DOCUMENT_ROOT’].’/data.xlsx’;$spreadsheet=\PhpOffi…

  • linux查看文件和目录

    linux查看文件和目录linux查看文件和目录

  • 数据库设计中关系规范化理论总结怎么写_数据库规范化理论是什么

    数据库设计中关系规范化理论总结怎么写_数据库规范化理论是什么数据库是一门对数据进行有效管理的技术,它研究信息资源如何被安全地储存和如何被高效地利用,它是现代计算机科学的一个重要分支。其中关系数据库是目前被应用最广泛的数据库类型,它看起来类似于一张二维表,通过应用数学的方法来处理数据库中的数据。在关系数据库的设计过程中,最重要的莫过于对数据库的逻辑设计,即针对一个具体的问题,我们应该如何去构造一个适合它的数据库模式。经过科学家的讨论研究,最终形成我们今天所看到的关系数据库的规范化理论。本文通过例举具体事例来探讨关系规范化理论在数据库逻辑设计中的形成和方法。

    2022年10月16日
  • UVa 884 – Factorial Factors

    UVa 884 – Factorial Factors

    2021年12月16日
  • WSL安装及升级WSL2

    WSL安装及升级WSL2Windows是目前市场占有率最高的桌面操作系统了,无论是软件丰富度和UI都算不错了,但是终端实在是鸡肋,CDM的UI丑的一批,而且功能好渣。整的我好几次都为了终端移步Linux。虽然说有Gitbash可以运行一些Linux命令,但是还是不中用啊就????????????幸好我们有了WSL(WindowsSubsystemforLinux),顾名思义就是Windows中可以用Linux了,当然命令也会…

发表回复

您的电子邮箱地址不会被公开。

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