风也温柔

计算机科学知识库

事实:BP神经网络从推导到现实

  一、BP神经网络——从推导到实现1 BP神经网络结构

  BP神经网络是一种非常经典的网络结构。整个网络结构包括:一个输入层、一个或多个隐藏层、一个输出层。它可以处理线性和非线性问题。学习过程包括两个过程,信号的前向传播和误差的反向传播。我们可以使用误差反向传播算法进行迭代,逐步将误差降低到我们可接受的范围内。

  2 算法原理2.1 网络结构

  在这里插入图片描述

  输入层 - 神经网络中的第一层。它接受输入信号并将它们传递到下一层。它对输入信号没有任何作用事实:BP神经网络从推导到现实,也没有相关的权重和偏差值。

  隐藏层 - 输入和输出层以外的层称为隐藏层。隐藏层不直接接收外界信号,也不直接向外界发送信号。隐藏层在神经网络中的作用:中间的黑盒子可以认为是不同功能层的总称。

  输出层 - 网络的最后一层,它接收来自最后一个隐藏层的输入,并输出模型预测的结果值。

  2.2 前向传播

  从左到右是结构图的操作过程。

  前向传播是让信息从输入层进入网络,依次经过每一层的计算,得到最终输出层结果的过程。

  小圆圈称为神经元,是神经网络的基本单位。

  将上一层的输出数据作为小圆的输入数据,先加权求和加上偏置b,然后代入激活函数f(x)进行计算,将结果输出。

  img

  前向传播是输入数据经过层层神经元处理并输出的过程,最后一层的输出值作为算法的预测值y'。

  2.3 反向传播

  BP神经网络的全称又回来了。什么是反向传播?

  反向传播的构造本质上是寻找最优的参数组合,与上述过程类似。根据算法预测值与实际值之间的损失函数L(y', y),计算各层对z,a,w,b的偏导数,从而更新参数。

  对于反向传播误差反向传播算法,输入内容是预测值与实际值的误差,输出内容是参数的更新。方向是从右到左,每一层的参数逐层更新。

  BP神经网络先通过前向传播构造参数与输入值的关系,通过预测值与实际值的误差反向传播修复权重;读入新数据,转发预测误差反向传播算法,然后反向传播修正,...,通过多个循环达到最小损失值,此时构建的模型具有最优的参数组合。

  3 实施3.1 实施步骤

  1)初始化网络中的权重和偏差

  误差反向传播算法_误差反向传播算法_误差反向传播算法应用

  初始化参数值(输出单元权重、偏置项、隐藏单元权重、偏置项都是模型的参数),也就是激活前向传播,得到每一层元素的输出值,然后得到损失函数。参数初始化可自行设置或随机生成;一般来说,在写代码或者调用或者keras的时候,参数都是随机生成的。因为初始参数对最终参数影响不大,只影响迭代次数。

  2)激活前向传播得到每一层输出和损失函数的期望值

  在步骤1的基础上,激活前向传播,得到

  的值,然后是得到的值;计算是根据前面模型设置中的公式计算的。计算这些值是为了计算步骤 3 中的误差项。

  3)根据损失函数,计算输出单元的误差项和隐藏单元的误差项

  计算各种误差,即计算参数相对于损失函数的梯度或偏导数,称为误差,因为损失函数本身就是真实值与预测值之差。根据微积分中的链式法则计算参数的偏导数。

  注意:对于复合函数中向量或矩阵的偏导,复合函数的内函数的偏导总是左乘;对于复合函数中标量的偏导,复合函数内部函数的偏导可以左乘也可以右乘。.

  4) 更新神经网络中的权重和偏差

  更新神经网络中的权重和偏差项。学习率由您自己设定。如果学习率太大,容易跳过最优参数;如果学习率太小,容易陷入局部最小值。

  5) 重复步骤2-4,直到损失函数小于预设阈值或迭代次数用完,此时输出的参数为当前最佳参数。

  设置阈值 e 或设置迭代次数。当损失函数值小于阈值e,或者迭代次数用完时,输出最终的参数。

  示例编程实现(语言)

  (这里只展示核心代码)

  前向传播:

  在这里插入图片描述

  反向传播:

  在这里插入图片描述

  完整代码链接

  提取码:d2pu

  参考:

  文章来源:https://blog.csdn.net/TZZtangtangtang/article/details/119986901