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

反向传播算法(过程及公式推导)[通俗易懂]反向传播算法(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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • IP地址的构成_IP地址由两部分组成

    IP地址的构成_IP地址由两部分组成1、什么是IP地址?IP地址是人们在Internet上为了区分数以亿计的主机而给每台主机分配的一个专门的地址,通过IP地址就可以访问到每一台主机。IP地址由4部分数字组成,每部分数字对应于8位二进制数字,各部分之间用小数点分开,如某一台主机的IP地址为:211.152.65.112。2、IP地址管理机构InternetIP地址由NIC(InternetNetworkInformat…

    2022年9月27日
    5
  • EagleEye论文+代码

    EagleEye论文+代码EagleEye论文+代码论文代码论文代码论文原作者的代码GitHub链接为EagleEye。下载数据集下载ILSVRC2012数据集。需要先注册账号并登陆。也可以直接用ImageNet数据集代替。如果觉得从官网下载的速度太慢,可以使用迅雷链接或百度云链接,网上都有很多。在这里,我推荐使用一个Linux多线程命令行下载工具aria2,可以达到稳定在5MB/s。安装python包问题一exportGIT_PYTHON_REFRESH=quiet这好像是一个和git有关的问题。解决

    2022年8月16日
    10
  • 【kali】kali设置burpsuite抓包dvwa

    【kali】kali设置burpsuite抓包dvwakali自带burpsuite配置代理burpsuite是通过代理来抓包dvwa的burpsuite:proxy—>options里边监听的应该是127.0.0.1:8080(端口ip如果撞车了都可以自己改)火狐:preferences–>最下边的networksettings点击settings—>从usesysyemproxy改成manualproxyhttp:127.0.0.1port:8080(和burpsuite设置的一样就ok),勾选上u

    2022年6月4日
    89
  • h5页面 请在微信客户端打开链接_模拟微信接口时,提示“请在微信客户端打开链接”(转)…[通俗易懂]

    h5页面 请在微信客户端打开链接_模拟微信接口时,提示“请在微信客户端打开链接”(转)…[通俗易懂]背景描述相信有模拟微信页面请求的测试都有看到过这个页面,简单点说就是爬虫爬微信页面,进行回放的时候会出现这个页面。大概在1年前,专门安排了一个人去解决这个技术问题,遗憾的是当时没有找到解决方案,接下来所有微信端的接口测试和性能测试都无法进行,今天和大家分享下我们的解决方案,希望大家可以绕过微信的坑。业务场景我这里以JMeter来举例,我们可以通过在JMeter上开启代理,手机上设置代理来录制微信端…

    2022年6月7日
    33
  • JAVA分布式架构设计实例

    JAVA分布式架构设计实例一款Java语言基于SpringCloud、Vue、ElementUI、MySQL等框架精心打造的一款前后端分离框架,致力于实现模块化、组件化、可插拔的前后端分离架构敏捷开发框架,可用于快速搭建前后端分离后台管理系统,本着简化开发、提升开发效率的初衷,目前框架已集成了完整的RBAC权限架构和常规基础模块,前端Vue端支持多主题切换,可以根据自己喜欢的风格选择想一个的主题的个性化呈现的需

    2022年5月7日
    70
  • Spring Aop、拦截器、过滤器的区别[通俗易懂]

    Spring Aop、拦截器、过滤器的区别[通俗易懂]Spring Aop、拦截器、过滤器的区别

    2022年4月22日
    95

发表回复

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

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