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

                      
               
反向传播算法(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),训练参数:

 








                       
反向传播算法是一种用于训练人工神经网络的常用方法。它基于链式法则,通过计算每个神经元的误差梯度,将误差从输出层向前传播,以更新网络权重。以下是反向传播算法过程公式推导。 1. 前向传播 对于一个神经网络,从输入层开始,通过一系列的矩阵乘法和非线性函数(如sigmoid函数或ReLU函数)的组合,计算出输出层的预测值。这个过程称为前向传播。 2. 计算误差 将预测值与真实值进行比较,计算误差。常用的误差函数包括均方误差和交叉熵等。 3. 反向传播 接下来,需要计算每个神经元的误差梯度,从输出层向前传播误差。假设网络有L层,第l层神经元的误差梯度可以表示为: $$\delta^{(l)}= \frac{\partial E}{\partial z^{(l)}}$$ 其中,$E$是误差函数,$z^{(l)}$是第$l$层的加权输入。根据链式法则,可以将误差梯度从输出层向前传播: $$\delta^{(L)} = \nabla_a E \odot \sigma'(z^{(L)})$$ 其中,$\nabla_a E$是误差函数对输出层激活值$a^{(L)}$的梯度,$\odot$表示元素级别的乘法,$\sigma'$表示sigmoid函数的导数。 对于隐藏层$l$,误差梯度可以表示为: $$\delta^{(l)} = ((W^{(l+1)})^T \delta^{(l+1)}) \odot \sigma'(z^{(l)})$$ 其中,$W^{(l+1)}$是从第$l$层到第$l+1$层的权重矩阵,$(W^{(l+1)})^T$表示其转置。这个公式表明,误差从上一层传递下来,并且乘以激活函数的导数。 4. 更新权重 最后,可以使用误差梯度更新每个权重。假设网络有$L$层,第$l$层到第$l+1$层的权重矩阵为$W^{(l+1)}$,学习率为$\eta$,则权重的更新公式为: $$W^{(l+1)} = W^{(l+1)} - \eta \delta^{(l+1)} (a^{(l)})^T$$ 其中,$(a^{(l)})^T$表示第$l$层的输出值的转置。这个公式表明,权重的更新与误差梯度和输出值有关。 整个反向传播算法就是通过前向传播计算预测值,并通过反向传播计算误差梯度和更新权重的过程。通过多次迭代,最小化误差函数,就能训练出一个神经网络模型。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值