ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

反向传播算法(过程及公式推导)

2019-06-23 13:49:03  阅读:241  来源: 互联网

标签:第层 推导 公式 第个 传播 算法 反向


                                                    反向传播算法(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://blog.csdn.net/qq_45293127/article/details/93380145

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有