BP神经网络算法原理-bp神经网络模型-bp神经网络代码matlab-学习笔记

在学习一段时间后,开始有些知识有些遗忘,所以整理一下,作为自己的学习笔记,以及帮助其他人学习。其中,大部分参考自《老饼讲解-BP神经网络》,

目录

一、什么是BP神经网络

1.1.BP神经网络原理

1.2.BP神经网络结构

二、BP神经网络如何训练

2.1.BP神经网络的误差函数

2.2.梯度下降算法训练BP神经网络

三、如何用Matlab来实现BP神经网络

四、如何自己写代码实现一个BP神经网络


一、什么是BP神经网络

1.1.BP神经网络原理

bp神经网络全称为Back Propagation Neural Network,简称为BPNN

BP神经网络的原理就像下面的图一样,模仿人的大脑的原理,把看到的东西作为输入,然后经过大脑,最后作为输出。

1.2.BP神经网络结构

BP神经网络在这个思想下,构造了下面的数学模型:

它的数学表达式如下:

这是一个只有一个隐层的BP神经网络(加上输入层、输出层,称为三层BP神经网络),

BP神经网络也可以有多个隐层,多层的BP神经网络结构图如下:

多个隐层的BP神经网络的数学表达式进行套娃就可以了,

学习时先用三层的进行理解,因为三层的使用得较多。

二、BP神经网络如何训练

2.1.BP神经网络的误差函数

BP使用均方差函数来评估网络的误差,它的公式如下:

m,k分别是样本个数与输出变量个数。误差越小,说明模型越好。

2.2.梯度下降算法训练BP神经网络

BP神经网络可以使用梯度下降算法进行训练,梯度下降算法就是先初始化BP神经网络的参数w,b,然后不断地往负梯度方向调整,使得模型的误差越来越小ÿ

  • 15
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
根据引用[2]中提到的误差逆向传播算法BP神经网络公式推导可以分为两个部分:前向传播和反向传播。 1. 前向传播 首先,我们需要将输入数据通过神经网络进行前向传播,得到输出结果。具体的计算过程如下: (1)输入层到隐层的计算 对于第 $j$ 个隐层节点,其输入为: $$ net_j = \sum_{i=1}^{n} w_{ij}x_i + b_j $$ 其中,$w_{ij}$ 表示输入层第 $i$ 个节点到隐层第 $j$ 个节点的连接权重,$x_i$ 表示输入层第 $i$ 个节点的输出,$b_j$ 表示隐层第 $j$ 个节点的偏置。 隐层第 $j$ 个节点的输出为: $$ y_j = f(net_j) $$ 其中,$f(\cdot)$ 表示激活函数。 (2)隐层到输出层的计算 对于第 $k$ 个输出层节点,其输入为: $$ net_k = \sum_{j=1}^{m} w_{jk}y_j + b_k $$ 其中,$w_{jk}$ 表示隐层第 $j$ 个节点到输出层第 $k$ 个节点的连接权重,$y_j$ 表示隐层第 $j$ 个节点的输出,$b_k$ 表示输出层第 $k$ 个节点的偏置。 输出层第 $k$ 个节点的输出为: $$ y_k = f(net_k) $$ 2. 反向传播 接下来,我们需要计算输出误差,并将误差通过神经网络进行反向传播,更新连接权重和偏置。具体的计算过程如下: (1)输出误差的计算 对于第 $k$ 个输出层节点,其输出误差为: $$ \delta_k = (d_k - y_k)f'(net_k) $$ 其中,$d_k$ 表示期望输出,$f'(\cdot)$ 表示激活函数的导数。 (2)隐层误差的计算 对于第 $j$ 个隐层节点,其误差为: $$ \delta_j = f'(net_j)\sum_{k=1}^{q}w_{jk}\delta_k $$ 其中,$q$ 表示输出层节点数。 (3)连接权重和偏置的更新 根据误差反向传播的原理,我们可以得到连接权重和偏置的更新公式: $$ \Delta w_{ij} = \eta \delta_j x_i \\ \Delta b_j = \eta \delta_j $$ 其中,$\eta$ 表示学习率。 以上就是BP神经网络公式推导过程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值