BP神经网络的反向传播算法

embedded/2025/1/9 1:18:10/

BP神经网络(Backpropagation Neural Network)是一种常用的多层前馈神经网络,通过反向传播算法进行训练。反向传播算法的核心思想是通过计算损失函数对每个权重的偏导数,从而调整权重,使得网络的预测输出与真实输出之间的误差最小。下面是反向传播算法的公式推导过程:

1. 前向传播(Forward Propagation)

假设我们有一个三层神经网络(输入层、隐藏层和输出层),并且每层的激活函数为 sigmoid 函数。

- 输入层:\mathbf{x} = (x_1, x_2, \ldots, x_n)
- 隐藏层:\mathbf{h} = (h_1, h_2, \ldots, h_m)
- 输出层:\mathbf{y} = (y_1, y_2, \ldots, y_k)

各层之间的权重分别为:
- 输入层到隐藏层的权重:\mathbf{W}^{(1)}
- 隐藏层到输出层的权重:\mathbf{W}^{(2)}

对于第 j 个隐藏层神经元,其输入为:

z_j^{(1)} = \sum_{i=1}^n W_{ji}^{(1)} x_i + b_j^{(1)}

其输出为:

h_j = \sigma(z_j^{(1)})

对于第 l 个输出层神经元,其输入为:

z_l^{(2)} = \sum_{j=1}^m W_{lj}^{(2)} h_j + b_l^{(2)}

其输出为:

y_l = \sigma(z_l^{(2)})

其中,\sigma(z) 是激活函数(sigmoid 函数):

\sigma(z) = \frac{1}{1 + e^{-z}}

2. 计算损失函数(Loss Function)

假设损失函数为均方误差(MSE):

L = \frac{1}{2} \sum_{l=1}^k (y_l - \hat{y}_l)^2

其中,\hat{y}_l 是网络的预测输出,y_l 是真实输出。

 3. 反向传播(Backpropagation)

反向传播的目标是计算损失函数对每个权重的偏导数,并根据梯度下降法更新权重。

3.1 输出层的误差项

首先计算输出层的误差项:

\delta_l^{(2)} = \frac{\partial L}{\partial z_l^{(2)}} = \frac{\partial L}{\partial \hat{y}_l} \cdot \frac{\partial \hat{y}_l}{\partial z_l^{(2)}}

由于:

\frac{\partial L}{\partial \hat{y}_l} = \hat{y}_l - y_l
\frac{\partial \hat{y}_l}{\partial z_l^{(2)}} = \hat{y}_l (1 - \hat{y}_l)

所以:

\delta_l^{(2)} = (\hat{y}_l - y_l) \hat{y}_l (1 - \hat{y}_l)

3.2 隐藏层的误差项

接下来计算隐藏层的误差项:

\delta_j^{(1)} = \frac{\partial L}{\partial z_j^{(1)}} = \sum_{l=1}^k \frac{\partial L}{\partial z_l^{(2)}} \cdot \frac{\partial z_l^{(2)}}{\partial h_j} \cdot \frac{\partial h_j}{\partial z_j^{(1)}}

其中:

\frac{\partial z_l^{(2)}}{\partial h_j} = W_{lj}^{(2)}
\frac{\partial h_j}{\partial z_j^{(1)}} = h_j (1 - h_j)

所以:

\delta_j^{(1)} = \left( \sum_{l=1}^k \delta_l^{(2)} W_{lj}^{(2)} \right) h_j (1 - h_j)

3.3 更新权重

根据梯度下降法更新权重:

W_{lj}^{(2)} \leftarrow W_{lj}^{(2)} - \eta \frac{\partial L}{\partial W_{lj}^{(2)}} = W_{lj}^{(2)} - \eta \delta_l^{(2)} h_j
W_{ji}^{(1)} \leftarrow W_{ji}^{(1)} - \eta \frac{\partial L}{\partial W_{ji}^{(1)}} = W_{ji}^{(1)} - \eta \delta_j^{(1)} x_i

其中,\eta 是学习率。


http://www.ppmy.cn/embedded/151365.html

相关文章

如何免费解锁 IPhone 网络

您是否担心 iPhone 上的网络锁定?如果您的 iPhone 被锁定到特定运营商,解锁它可以连接到不同的运营商。好吧,我们为您准备了一份指南。 iPhone运营商免费解锁将是小菜一碟。在我们的解锁运营商 iphone 免费指南中。我们为您提供了一份简介&am…

Pycharm访问 Redis 数据库

安装redis-py模块 : pip3 install redis -i https://pypi.tuna.tsinghua.edu.cn/simple some-package 1. 创建连接 创建连接对象与线程池对象,最后封装连接池: import redis try:pool redis.ConnectionPool(hostlocalhost,port6379,#passw…

python 给钉钉发消息简易demo

# dingtalk_robot 发送消息 def dingtalk_robot(webhook, secret, message):dogBOSS DingtalkChatbot(webhook, secret)now_time datetime.now().strftime(%Y.%m.%d %H:%M:%S)dogBOSS.send_markdown(titlef刀具检测app提醒,textf### **刀具检测参数**\n{message}\n\n**发送时…

javaEE-网络原理-1初识

目录 一.网络发展史 1.独立模式 2.网络互联 二.局域网LAN 1.基于网线直连: 2.基于集线器组件: 3.基于交换机组件: 4.基于交换机和路由器组件 ​编辑 三、广域网WAN 四、网络通信基础 1.ip地址 2.端口号: 3.协议 4.五…

web3基于OP_Rollup的L2扩容方案-Arbitrum

业务模型 价值:arbitrum对于用户来说的核心价值是交易速度、更低的gas费用、欺诈证明技术保证L2层交易具备L1层的安全性。 L2层的网络具备兼容L1层所有应用的特点,任何L1层的应用都可以拓展到L2层,包括普通的消息调用、治理、代币交易等。 …

【juc】公平和非公平锁的直观体现?

目录 1. 说明2. 公平锁3. 非公平锁4. 直观体现对比 1. 说明 1.在Java的并发工具类(JUC)中,ReentrantLock提供了公平锁和非公平锁两种模式,它们的直观体现主要体现在线程获取锁的顺序和性能特性上。2.JUC中的公平锁和非公平锁在获…

力扣第130题:被围绕的区域

力扣第130题:被围绕的区域 - C语言解法 题目描述 给定一个二维的矩阵,包含 X 和 O 两种字符。一个被 X 围绕的区域被称为“封闭区域”,其中 O 字符完全被 X 字符包围,不与边界相连。 你需要 改变所有被围绕的 O 为 X。同时&…

word中编号统一格式

不要手敲编号,要利用工具来。要善于利用多级编号和编号,分别对标题和段落进行组织 尤其是段落和标题特别多的时候,像毕设、标书这些 为什么呢?因为这样更方便修改,后续的增加和删除段落,编号会自动排列&am…