【机器学习】BP神经网络正向计算

news2024/11/16 23:32:48

鑫宝Code

🌈个人主页: 鑫宝Code
🔥热门专栏: 闲话杂谈| 炫酷HTML | JavaScript基础
💫个人格言: "如无必要,勿增实体"


文章目录

  • BP神经网络正向计算
    • 1. 引言
    • 2. BP神经网络结构回顾
    • 3. 正向计算的基本原理
    • 4. 数学表示
      • 4.1 符号定义
      • 4.2 计算过程
    • 5. 激活函数
      • 5.1 Sigmoid函数
      • 5.2 Tanh函数
      • 5.3 ReLU (Rectified Linear Unit)函数
      • 5.4 Leaky ReLU函数
    • 6. 正向计算的实现
    • 7. 正向计算的优化
      • 7.1 矩阵运算
      • 7.2 批处理
      • 7.3 GPU加速
      • 7.4 模型压缩
    • 8. 正向计算的应用
    • 9. 结论
    • 参考文献

BP神经网络正向计算

1. 引言

反向传播(Backpropagation,简称BP)神经网络是人工神经网络中最常用和最基础的模型之一。虽然BP神经网络以其反向传播算法而闻名,但正向计算同样是网络运行的关键组成部分。本文将详细介绍BP神经网络的正向计算过程,包括其基本原理、数学表示和实现方法。
在这里插入图片描述

2. BP神经网络结构回顾

在深入讨论正向计算之前,让我们先回顾一下BP神经网络的基本结构:

  1. 输入层:接收外部输入信号
  2. 隐藏层:对输入信息进行非线性变换(可以有多个)
  3. 输出层:产生网络的最终输出

每一层都由若干个神经元组成,相邻层之间的神经元通过权重连接。

3. 正向计算的基本原理

BP神经网络的正向计算是指信息从输入层经过隐藏层,最后到达输出层的过程。在这个过程中,每一层的神经元都会接收上一层的输出,进行加权求和,然后通过激活函数产生自己的输出。

正向计算的主要步骤如下:

  1. 输入层接收外部信号
  2. 计算隐藏层的输入和输出
  3. 计算输出层的输入和输出
    在这里插入图片描述

4. 数学表示

为了更好地理解正向计算过程,我们来看一下其数学表示。假设我们有一个三层神经网络(输入层、一个隐藏层、输出层)。

4.1 符号定义

  • x x x: 输入向量
  • W ( 1 ) W^{(1)} W(1): 输入层到隐藏层的权重矩阵
  • b ( 1 ) b^{(1)} b(1): 隐藏层的偏置向量
  • W ( 2 ) W^{(2)} W(2): 隐藏层到输出层的权重矩阵
  • b ( 2 ) b^{(2)} b(2): 输出层的偏置向量
  • f f f: 激活函数

4.2 计算过程

  1. 隐藏层的输入:

    z ( 1 ) = W ( 1 ) ⋅ x + b ( 1 ) z^{(1)} = W^{(1)} \cdot x + b^{(1)} z(1)=W(1)x+b(1)

  2. 隐藏层的输出:

    a ( 1 ) = f ( z ( 1 ) ) a^{(1)} = f(z^{(1)}) a(1)=f(z(1))

  3. 输出层的输入:

    z ( 2 ) = W ( 2 ) ⋅ a ( 1 ) + b ( 2 ) z^{(2)} = W^{(2)} \cdot a^{(1)} + b^{(2)} z(2)=W(2)a(1)+b(2)

  4. 输出层的输出(网络最终输出):

    y = f ( z ( 2 ) ) y = f(z^{(2)}) y=f(z(2))

5. 激活函数

激活函数在神经网络中起着至关重要的作用,它引入了非线性,使得网络能够学习复杂的模式。以下是几种常用的激活函数:
在这里插入图片描述

5.1 Sigmoid函数

f ( x ) = 1 1 + e − x f(x) = \frac{1}{1 + e^{-x}} f(x)=1+ex1

特点:

  • 输出范围(0, 1)
  • 易于求导
  • 存在梯度消失问题

5.2 Tanh函数

f ( x ) = e x − e − x e x + e − x f(x) = \frac{e^x - e^{-x}}{e^x + e^{-x}} f(x)=ex+exexex

特点:

  • 输出范围(-1, 1)
  • 零中心化
  • 仍存在梯度消失问题

5.3 ReLU (Rectified Linear Unit)函数

f ( x ) = max ⁡ ( 0 , x ) f(x) = \max(0, x) f(x)=max(0,x)

特点:

  • 计算简单,收敛速度快
  • 缓解梯度消失问题
  • 可能导致神经元"死亡"

5.4 Leaky ReLU函数

f ( x ) = max ⁡ ( α x , x ) f(x) = \max(\alpha x, x) f(x)=max(αx,x),其中 α \alpha α是一个小正数

特点:

  • 解决了ReLU的"死亡"问题
  • 保留了ReLU的其他优点

6. 正向计算的实现

以下是一个简单的BP神经网络正向计算的Python实现示例:

import numpy as np

def sigmoid(x):
    return 1 / (1 + np.exp(-x))

class BPNeuralNetwork:
    def __init__(self, input_size, hidden_size, output_size):
        self.input_size = input_size
        self.hidden_size = hidden_size
        self.output_size = output_size
        
        # 初始化权重和偏置
        self.W1 = np.random.randn(self.input_size, self.hidden_size)
        self.b1 = np.zeros((1, self.hidden_size))
        self.W2 = np.random.randn(self.hidden_size, self.output_size)
        self.b2 = np.zeros((1, self.output_size))
    
    def forward(self, X):
        # 隐藏层
        self.z1 = np.dot(X, self.W1) + self.b1
        self.a1 = sigmoid(self.z1)
        
        # 输出层
        self.z2 = np.dot(self.a1, self.W2) + self.b2
        self.a2 = sigmoid(self.z2)
        
        return self.a2

# 使用示例
nn = BPNeuralNetwork(2, 4, 1)
X = np.array([[0, 0], [0, 1], [1, 0], [1, 1]])

for input in X:
    output = nn.forward(input.reshape(1, -1))
    print(f"Input: {input}, Output: {output[0][0]}")

7. 正向计算的优化

在实际应用中,我们可以采用一些技巧来优化BP神经网络的正向计算过程:

7.1 矩阵运算

使用矩阵运算可以大大提高计算效率,特别是在处理大规模数据时。现代深度学习框架(如TensorFlow和PyTorch)都对矩阵运算进行了优化。

7.2 批处理

批处理是指同时处理多个样本,而不是一次只处理一个。这可以提高计算效率,并且在某些情况下可以提高模型的泛化能力。

7.3 GPU加速

利用GPU的并行计算能力可以显著加速神经网络的计算过程,包括正向计算。

7.4 模型压缩

对于一些资源受限的场景,可以考虑使用模型压缩技术,如权重量化、剪枝等,以减少计算量和内存占用。

8. 正向计算的应用

BP神经网络的正向计算在许多领域都有广泛应用,例如:

  1. 图像识别:利用卷积神经网络(CNN)进行图像分类、目标检测等任务。
  2. 自然语言处理:使用循环神经网络(RNN)或Transformer进行文本分类、机器翻译等任务。
  3. 推荐系统:构建用户-物品交互模型,预测用户偏好。
  4. 金融预测:预测股票价格、信用评分等。
  5. 医疗诊断:基于医疗数据进行疾病诊断和预测。

9. 结论

BP神经网络的正向计算是整个网络运行的基础。通过本文的介绍,我们详细了解了正向计算的原理、数学表示和实现方法。正向计算不仅是神经网络训练过程中的重要一步,也是模型部署和应用时的核心操作。

随着深度学习技术的不断发展,BP神经网络及其变体仍然在各个领域发挥着重要作用。理解和掌握正向计算过程,对于深入学习神经网络原理、优化网络性能以及开发创新应用都具有重要意义。

参考文献

  1. Rumelhart, D. E., Hinton, G. E., & Williams, R. J. (1986). Learning representations by back-propagating errors. Nature, 323(6088), 533-536.
  2. Goodfellow, I., Bengio, Y., & Courville, A. (2016). Deep learning. MIT press.
  3. LeCun, Y., Bengio, Y., & Hinton, G. (2015). Deep learning. Nature, 521(7553), 436-444.

End

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1991978.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

微信小程序通过code换取手机号

一、调用小程序验证组件,这两个组件都是可以文档地址。 二、首先还是得先拿到code (1)、必须在手机端去执行,开发者工具获取不到code。解决办法:将拿到的code在页面上渲染出来在复制一下就好了。 (2&#…

文件上传漏洞(一,漏洞简介及简单利用)

本文仅作为学习参考使用,本文作者对任何使用本文进行渗透攻击破坏不负任何责任。 一,文件上传漏洞简介。 1,什么是文件上传漏洞。 文件上传漏洞,是指web应用允许用户上传诸如:木马,病毒,执行…

红酒与北美烧烤:自由的味蕾之旅

在繁星点点的夜空下,一场红酒与北美烧烤的盛宴悄然展开。这不是简单的味觉碰撞,而是一场自由的味蕾之旅,洒派红酒(Bold & Generous)与北美烧烤的结合,如同诗与远方的交汇,温柔而引人入胜。 …

产品经理-​如何做需求的优先级排序和版本规划(30)

如何做需求的优先级排序?如何做产品的版本规划?思考逻辑是什么? 需求优先级分析、产品版本规划 需求的分析和管理是产品经理的最核心技能,没有之一 作为一名产品经理,工作的产出物就是需求文档,在整个需求文…

制造知识普及(八)--企业内部物料编码(IPN)与制造商物料编码(MPN)

1、什么是物料编码 通常情况下,物料编码分两种,一种是企业内部物料编码(IPN),由于在企业研发制造和生产中确认物料唯一性的,用于承载设计参数要求和技术要求。另一种是制造商物料编码(MPN&…

【扒代码】ope.py

文件目录: 引用方式 if not self.zero_shot: # 非零样本情况下,计算边界框的宽度和高度 box_hw torch.zeros(bboxes.size(0), bboxes.size(1), 2).to(bboxes.device) box_hw[:, :, 0] bboxes[:, :, 2] - bboxes[:, :, 0] # 宽度 box_hw[:, :, 1] bbox…

html+css 实现hover中间展开背景

前言:哈喽,大家好,今天给大家分享htmlcss 绚丽效果!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏关注哦 💕 目…

kickstart自动安装脚本制作并搭建pxe网络环境

目录 准备工作: 安装图形化kickstart自动安装脚本的工具 安装httpd 搭建DHCP服务 搭建pxe网络安装环境,实现服务器自动部署 pxe原理: 安装所需软件包 测试: 准备工作: 1、准备一台rhel7的主机,并开启主机的图形。 …

关于Git使用不成功的问题解决方案记录

关于Git使用不成功的问题解决方案记录 前言代理连接不成功总结 前言 项目中建立了Git小仓库,但是在使用中出现了无法push新的代码,显示端口出现问题,发现网站和端口都没有问题,可以打开网站。但是还是连接失败,无法下…

快速打造艺术作品,AI绘画软件超神奇

越来越多的人开始尝试使用人工智能技术来创作艺术作品。而其中最受欢迎的一种方式就是使用AI绘画软件。 AI绘画软件是一种能够帮助用户快速生成高质量的艺术作品的工具。它可以根据用户的输入,自动创建出各种风格各异的作品,如卡通人物、风景画等。 Aic…

Katalon Studio 使用教程(小白基础版)

如果你还没有安装,可以点击下方安装教程链接,里面有详细的安装链接与教程: Katalon Studio 保姆级安装教程-CSDN博客 安装好后,应当是这样的界面。本篇从安装好后开始讲。 katalon的使用很简单,三步就能实现一个完整的…

谷粒商城实战笔记-一键执行项目SQL脚本

文章目录 代码结构概述详细解释1. 主方法 (main 方法)2. 执行SQL脚本的方法 (executeSqlScript 方法)3. 执行SQL命令的方法 (executeSqlCommand 方法) 注意事项 课程提供了项目的初始化脚本。 但是要手动逐个建库,执行脚本,还是比较费时间的。 特别是因…

HCIP学习 | OSPF---LSA限制、不规则区域、附录E、选路

目录 Days06(24.8.8)OSPF---LSA限制、不规则区域、附录E、选路 特殊区域 stub 区域, 末节区域 Totally stub :完全的末节区域 NSSA区域:(not so stub area) 非完全末节区域 完全的非完全的末节区域: …

Python 函数(1)

1、函数 函数是带名字的代码块,用于完成具体的工作。要执行函数定义的特定义务,可调用该函数。当需要再程序中多次执行同一项任务时,无需反复编写完成该任务的代码,只需要调用该任务的函数,让其运行即可。 1.1、定义…

【mars3d】GraphicLayer遍历添加数据,正确拿到数据

import * as mars3d from "mars3d"export let map // mars3d.Map三维地图对象 export let graphicLayer // 矢量数据图层 export const mapOptions {scene: {center:{"lat":30.577085,"lng":116.885511,"alt":45203.5,"heading&…

仿真入门——CST软件如何设置分布式计算的共享储存

在 CST Studio Suite 的分布式计算中,常有用户因为某台机器的网络问题丢失某个数据。这里介绍一种方法,可以在使用分布式计算或 MPI 计算时设置共享存储。在这种情况下,不涉及文件传输,所有文件操作都在共享文件的媒介上完成。 数…

【React】详解 App.js 文件

文章目录 一、App.js文件的基本结构1. 引入必要的模块2. 定义根组件3. 导出根组件 二、App.js文件的详细解析1. 函数组件与类组件函数组件类组件 2. 使用CSS模块3. 组织子组件4. 管理组件状态使用useState钩子使用state对象 三、App.js文件的最佳实践1. 保持组件的简洁和模块化…

政策标准、行业动态、安全事件、密码专栏、三所发布、国家互联网中心安全周报。

1、全国网络安全标准化技术委员会关于17项网络安全国家标准项目立项的通知 按照委员会标准制修订工作程序的要求,17项网络安全国家标准的立项工作已经完成,现将清单印发给各工作组,请按照国家标准委和委员会相关规定,认真做好项目…

开展FMEA时如何明确分析对象?

在FMEA过程中,分析对象的选择直接决定了后续工作的方向与质量。一个模糊不清或过于宽泛的分析对象,会导致分析过程冗长低效,甚至遗漏关键风险点。相反,一个精准明确的分析对象,能够让团队集中精力,高效识别…

琪德直流屏监控模块HXTJK002,HXTJK003AB电源模块HXT240D10

直流屏电源模块产品型号:HXT240D05,HXT240D10,HXT240D10Z,HXT220D10,HXT220D05,HXT120D10,HXT120D05,HXT220D10-III,HXT110D10-III,HXT110D20-III,HXT220D20-…