反向传播算法—从四个基本公式说起

84976-20190722221840442-815027965.png
84976-20190722221852743-1868997538.png

反向传播四公式:

84976-20190722221903130-1018069237.png
84976-20190722221914859-460277504.png

  反向传播的最终目的是求得使代价C最小时w、b的最佳值,为了方便计算引入了神经单元误差δ_j^l,其定义为误差C关于某个神经单元z的关系;
84976-20190722221924934-1372880435.png
  其定义如上所示,某神经元误差为代价C(总误差)关于z的偏导数,其中l为神经网络的层数,j为第几个神经元;
  这里的代价函数(损失函数)使用的是平方误差,因此C等于:
84976-20190722221937321-1160030424.png

BP1

  此公式用于求神经网络最后一层神经元的误差,下面通过BP1公式用于求最后一层神经元(输出层)中第一个神经元的误差;

84976-20190722221951933-1403928682.png

根据链式法则由此可得到上诉四个公式中得前面BP1

84976-20190722222006639-1172513156.png

BP1中得L为神经网络得最后一层,而在我们此网络中最后一层为3,所以此处L=3;

BP2

  BP2与BP1类似,不同得是BP1用于求最后一层神经元误差,而BP2则是用于求L层前面某一层得神经元误差,下面通过BP2公式用于求第二层神经元中的第一个神经元的误差;
同样我们也可通过链式法则得出:

84976-20190722222020809-208603589.png

有:
84976-20190722222033576-514365392.png

因此可以得:
84976-20190722222044677-304011654.png

将公式转换为矩阵模式,第2层神经元得误差为:
84976-20190722222059783-1002883127.png

我们将BP1与BP2带入即可得到BP3与BP4;
通过BP1与BP2公式即可通过BP3、BP4轻松得到w与B;

BP3

此公式用于求误差C关于某个权重的偏导数,在求得BP2后此处只需吧BP2带入到公式即可求得BP3;
84976-20190722222117876-2004178450.png

BP4

  求误差C关于偏置b的偏导数,BP4与BP3一样得到BP2即可带入得出BP4;
84976-20190722222140676-1231191008.png

  反向传播算法给出了一种用于计算代价函数(损失函数)梯度得方法,具体步骤如下:
84976-20190722222153381-1807008665.png

数据计算

84976-20190722222214493-1878372610.png

一、前向传播

1、计算第二层
  矩阵形式:
84976-20190722222232401-1562848571.png
84976-20190722222241191-2106145262.png

2、计算第三层
  矩阵形式:

84976-20190722222256402-1192447073.png

二、计算误差

当前使用的为平方损失函数(代价函数);

84976-20190722222314579-1676180867.png

三、计算输出层神经元误差

矩阵形式:
84976-20190722222330500-805224171.png

  输出层第一个神经元误差δ_1^3:
84976-20190722222345602-1499842756.png

  输出层第一个神经元误差δ_2^3:
84976-20190722222357323-1714986121.png

四、计算其余层神经元误差

矩阵形式:
84976-20190722222412618-449815717.png

五、计算误差C关于w、b的梯度

  此处用的是BP3与BP4公式,在计算出BP1与BP2后将其带入到公式中即可计算出C关于w、b的梯度;
矩阵形式:
84976-20190722222428651-286597631.png

矩阵形式:
84976-20190722222443834-1105990072.png

更新w、b公式:
84976-20190722222454945-1723175463.png

  在计算出误差C关于每个权重每个偏置的偏导数后再使用得到的值带入上述公式更新每一个w、b即可,在更新完成w、b后如误差达到指定精度或epochs则继续执行上述的2-5步骤直到误差满意或指定epochs为止;

转载于:https://www.cnblogs.com/softlin/p/11228883.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
反向传播算法是一种用于训练人工神经网络的常用方法。它基于链式法则,通过计算每个神经元的误差梯度,将误差从输出层向前传播,以更新网络权重。以下是反向传播算法的过程和公式推导。 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、付费专栏及课程。

余额充值