深度学习—BP神经网络

文章目录

    • @[TOC](文章目录)
  • 一、基本概念
  • 二、 网络结构
  • 三、BP神经网络的原理
  • 总结
    • 特点:
    • 应用场景
    • 优缺点

一、基本概念

BP 神经网络(Backpropagation Neural Network)是一种基于误差反向传播算法的多层前馈神经网络,由输入层、隐藏层(一层或多层)和输出层组成。其核心思想是通过前向传播计算预测值,再通过反向传播将误差逐层传递,利用梯度下降调整权重和偏置,从而最小化损失函数。
BP 网络是深度学习的基础,能够处理非线性问题,广泛应用于分类、回归、图像识别、自然语言处理等领域。

二、 网络结构

输入层:接收原始数据(如特征向量),节点数由输入数据维度决定。
隐藏层:包含多层神经元,每层神经元通过权重与前一层连接,引入非线性激活函数(如 Sigmoid、Tanh、ReLU),使网络具备拟合复杂非线性关系的能力。
输出层:根据任务类型(分类或回归)选择激活函数(分类常用 Softmax,回归常用线性函数),输出预测结果。
请添加图片描述
v,w分别的输入层到隐藏层,隐藏层到输出层的是权重

对于上图的只含一个隐层的神经网络模型:BP神经网络的过程主要分为两个阶段,第一阶段是信号的正向传播,从输入层经过隐含层,最后到达输出层;第二阶段是误差的反向传播,从输出层到隐含层,最后到输入层,依次调节隐含层到输出层的权重和偏置,输入层到隐含层的权重和偏置。

三、BP神经网络的原理

BP(Back-propagation,反向传播)前向传播得到误差,反向传播调整误差,再前向传播,再反向传播一轮一轮得到最优解的。
反向传播的目标是计算损失函数对每个权重和偏置的梯度,从而通过梯度下降更新参数。过程分为两步:前向传播和反向传播。
请添加图片描述

1、前向传播(Forward Propagation)
从输入层开始,逐层计算加权和与激活值,直到输出层得到预测值y^。
2、反向传播(Backward Propagation)
损失函数:常用均方误差(MSE,回归任务)或交叉熵损失(分类任务)。
在这里插入图片描述
在这里插入图片描述

步骤:
1、计算正向传播输出的结果。
在这里插入图片描述
2、计算损失函数
在这里插入图片描述
3、计算w值的梯度下降
在这里插入图片描述
4、误差反向传播
将每个维度偏导数导入本次的w值,初次w值为随机初始化,并乘以步长,即得到新的w值。
5、循环调整w的值,直到损失值小于允许的范围。

请添加图片描述

总结

特点:

处理非线性问题:通过多层隐藏层和非线性激活函数,BP 网络可拟合任意复杂的非线性映射(万能近似定理)。
梯度消失问题:早期 BP 网络使用 Sigmoid/Tanh 激活函数时,深层网络的梯度会随着反向传播逐渐衰减,导致底层参数更新缓慢(可通过 ReLU 激活函数、批量归一化、残差连接等缓解)。
监督学习:需标注数据训练,依赖损失函数的梯度计算。

应用场景

分类任务:图像分类(如手写数字识别)、文本分类、语音识别。
回归任务:房价预测、时间序列分析。
复杂问题:深度神经网络(如 CNN、RNN)均基于 BP 算法进行训练。

优缺点

优点:
强大的拟合能力,适用于非线性数据。
理论成熟,可通过反向传播高效计算梯度。
缺点:
易过拟合:需结合正则化(L2、Dropout)、早停等策略。
计算复杂度高:深层网络训练耗时,需优化算法(如 Adam 优化器)或硬件加速(GPU)。
依赖初始参数:随机初始化可能导致局部最优解。

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

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

相关文章

Spring AI(6)——向量存储

向量数据库是一种特殊类型的数据库,在 AI 应用中发挥着至关重要的作用。 在向量数据库中,查询与传统关系型数据库不同。它们执行的是相似性搜索,而非精确匹配。当给定一个向量作为查询时,向量数据库会返回与该查询向量“相似”的…

Qt功能区:简介与安装

Qt功能区 1. 功能区简介2. SARibbon2.1 简介2.2 编译与安装采用CMake-gui进行编译采用VS进行编译安装与使用 Qt 官方不支持 Ribbon 风格(Ribbon UI 风格是微软开创的,具有专利许可协议,许可协议对从构建 UI 的指令到每个按钮间的空格数都做了…

iOS safari和android chrome开启网页调试与检查器的方法

手机开启远程调试教程(适用于 Chrome / Safari) 前端移动端调试指南|适用 iPhone 和 Android|WebDebugX 出品 本教程将详细介绍如何在 iPhone 和 Android 手机上开启网页检查器,配合 WebDebugX 实现远程调试。教程包含…

Golang企业级商城高并发微服务实战

Golang企业级商城高并发微服务实战包含内容介绍: 从零开始讲了百万级单体高并发架构、千万级微服务架构,其中包含Rpc实现微服务、微服务的跨语言调用jsonrpc和protobuf、protobuf的安装、protobuf高级语法、protobuf结合Grpc实现微服务实战、微服务服务…

实现可靠的 WebSocket 连接:心跳与自动重连的最佳实践

概览 本文将手把手教你如何从零编写一个可用于直播或在线聊天的 WSocket 类,依次实现连接建立、心跳检测、断线重连、消息收发以及资源清理等功能。我们将结合 WebSocket API 的标准用法、心跳保持 和 重连策略,并充分运用现代 JavaScript 语法&#xf…

UEFI Spec 学习笔记---33 - Human Interface Infrastructure Overview(1)

33 - Human Interface Infrastructure Overview 本章节主要用于介绍Human Interface Infrastructure(HII)架构介绍,描述如何通过 HII 来管理用户的输入,以及描述在 UEFI spec 中涉及 HII 相关的 Protocol、function 和类型定义。…

ip命令详解

控制网卡的硬件状态 ip link set ens36 down ip link set ens36 up 修改网卡名称(临时) ip link set ens36 down ip link set ens36 name xxx 修改网卡的mac地址 ip link set ens36 down ip link set xxx name ens36 查看ip的addr ip addr show ip ad…

hadoop中了解yarm

Hadoop中的YARN(Yet Another Resource Negotiator)是一种新的Hadoop资源管理器,是一个通用资源管理系统,可为上层应用提供统一的资源管理和调度。以下是其相关介绍: 核心思想 将JobTracker的资源管理和作业调度/监控功…

做好的QT软件,换一个笔记本打开后发现字体很小,部分字体还被控件遮挡

出现这种情况的原因主要是屏幕的DPI(每英寸点数)不同。Qt中控件的大小单位为像素,在高DPI下,控件会变小,低DPI下控件会变大。而Qt中字体的单位默认为磅,无论在什么显示器上显示同一磅值的字体,其…

linux - 权限的概念

目录 用户权限 超级用户与普通用户的区别 超级用户(root): 普通用户: 切换用户身份 使用sudo执行高权限命令 用户管理 用户组管理 文件权限 文件访问者类别 基本权限 权限表示方法 权限修改 chmod chown chgrp u…

Python函数返回值的艺术:为何True/False是更优实践及例外情况分析

在Python编程实践中,子程序的返回值设计往往是一个容易被忽视但却至关重要的设计决策。本文将深入探讨为什么返回True/False往往是更好的选择,何时应该避免这种做法,以及如何处理与None值相关的问题。 为什么返回True/False是更好的实践&…

STM32单片机内存分配详细讲解

单片机的内存无非就两种,内部FLASH和SRAM,最多再加上一个外部的FLASH拓展。在这里我以STM32F103C8T6为例子讲解FLASH和SRAM。 STM32F103C8T6具有64KB的闪存和20KB的SRAM。 一. Flash 1.1 定义 非易失性存储器,即使在断电后,其所…

【Tools】Visual Studio使用经验介绍(包括基本功能、远程调试、引入第三方库等等)

这里写目录标题 1. VS基本使用1.1. 快捷键1.2. 查看变量地址1.3. 查看代码汇编1.4. visual studio 热重载功能的使用1.5. vs远程服务器调试1.6. 引入第三方库VLD1.7. release debug模式 1. VS基本使用 1.1. 快捷键 ctrl c :复制光标所在行 注意:只需要光标在这…

网络爬虫学习之httpx的使用

开篇 本文整理自《Python3 网络爬虫实战》,主要是httpx的使用。 笔记整理 使用urllib库requests库的使用,已经可以爬取绝大多数网站的数据,但对于某些网站依然无能为力。 这是因为这些网站强制使用HTTP/2.0协议访问,这时urllib和r…

Python内存管理:赋值、浅拷贝与深拷贝解析

赋值与共享资源 在Python中,直接赋值操作(如 list2 list1)会导致两个变量共享同一个内存地址。这意味着对 list1 的修改会直接影响到 list2,因为它们指向同一个对象。 注意: 赋值等于完全共享资源 如果我们不希望这样完全共享&…

CentOS7原有磁盘扩容实战记录(LVM非LVM)【针对GPT分区】

一、环境 二、命令及含义 fdisk ‌ ‌ fdisk‌是一个较老的分区表创建和管理工具,主要支持MBR(Master Boot Record)格式的分区表。MBR分区表支持的硬盘单个分区最大容量为2TB,最多可以有4个主分区。fdisk通过命令行界面进行操…

获取相机图像(ROS2)

文章目录 前言一、获取笔记本自带相机图像1.打开终端2.安装usb-cam功能包3.启动相机节点4.再打开一个终端5.启动rqt查看图像(1)方法一:点击窗口选项,打开图像话题(2)方法二:使用命令行,直接打开图像话题 二、获取USB相机图像总结 …

Go 语言中接口类型转换为具体类型

类型转换方法 在 Go 语言中,将接口类型转换为具体类型主要有以下几种方法: 1. 类型断言(Type Assertion) var i interface{} "hello"// 基本形式 s : i.(string) // 将接口i转换为string类型 fmt.Println(s) // 输…

ES C++客户端安装及使用

介绍 Elasticsearch , 简称 ES ,它是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful 风格接口,多数据源&…

力扣-94.二叉树的中序遍历

题目描述 给定一个二叉树的根节点 root &#xff0c;返回 它的 中序 遍历 。 class Solution { public:void inorder(TreeNode* root, vector<int>& res){//C这里&一定要加if(!root)return;inorder(root->left,res);res.push_back(root->val);inorder(ro…