前馈型BP神经网络
1.感知机和激活函数
感知机,是构成神经网络的基本单位,一个感知机可以接收n个输入X=(x1,x2,x3…xn)T(每个输入,可以理解为一种特征),n个输入对应n个权值W=(w1,w2,w3…wn),此外还有一个偏置项b,学过矩阵的人应该可以看出,这其实是一个y=WX+b的函数,实际上就是对所有的输入,根据权值和偏置量进行求和运算,然后作为一个神经元的输出。如下图:
通过上图可以看出,神经元里,其实是一个线性函数,我们现在先不讨论他是如何学习数据的特征,我们可以通过极限的思想,想象一下这么一个场景,要实现通过特征,进行设备分类,每个设备种类,是一个多维空间中的点,我们要做的就是用函数画出每种设备所在的多维空间中的位置,那么现在再回头看我们神经元中的这个函数,他只是一个线性函数,所以无论我们有多少个神经元和多少个网络深度,他终究在极限的边缘处,只能表示线性关系,如果想象不出来看下面的推导:
红框中就是输出层的推到公式,很明显,也是线性关系,所以为了让预测的情况更加准确,我们需要一个激活函数,把线性关系,转化为非线性关系,我们就需要把神经元设计成如下:
常见的激活函数有(科学家研究出来的): sigmoid,对数几率logistic,双曲正切Tanh,以及现在用的最多的ReLu和Leaky-ReLu,softMax。
一般分类问题,都是用softMax函数作为激活函数,因为它可以把每种输出作为概率输出
(具体的激活函数,这里不做解释了)
2.梯度下降法
梯度下降法,是我们用来计算损失函数误差,和更新w,b的常用算法,他的原理其实很简单,如下图:
假如损失函数,是一个一元2次函数,只需要随机获取2个点f(X1),f(X0)的值,进行比较,我们就可以知道大小,极小值点肯定是朝着数值小的地方,假如f(x1)<f(x0),那么就说明x1更接近极小值点,那么我们只需要朝着x1的方向,再取一个x2,慢慢的就可以向极小值靠近,这个x1和x2的距离,我们就叫步长 ,但是选择步长,是个问题,步长过小,迭代次数过多,步长过大,会产生震荡,导致在极小值点来回跳跃,所以我们就需要一个可以自动更新步长的方法,我们都知道在一个曲线的地方,这点的斜率,代表了他的抖度,当越接近极小值的时候,斜率就越小,所以用步长*这点的偏导数,就可以自动调节步长了,如果是二元函数也是一个道理,如下图:
3.BP神经网络结构
输入层:输入的其实就是数据集中的特征,一种特征代表一种输入
隐含层:就是上面说的神经元,其中隐含层的层数和神经元个数,是需要通过试验来确定的
输出层:数据集中的分类有几个,就有几个输出层神经元
在多层神经网络中,每一层的输出,代表的是上一层的输入,只要有足够多的隐含层,且每层有足够多的神经元,那么神经网络就可以拟合出任意复杂函数或空间分布,就比如下面这个:
隐含层中有三个神经元,可以看出拟合出来了三条直线,通过激活函数,就可以把线性关系转化为非线性关系。
4.损失函数:
在训练神经网络的时候,我们知道是用已经的Y和X,去训练寻找W和B,那么我们就需要知道什么情况下,W和B是已经训练的差不多了,其实就是当我们训练出来的y0和真实的y之间的差距越小,说明训练的W和B就越好,那么我们就需要定义一个损失函数,用来评估我们的模型训练质量。
这里就介绍两个常用的损失函数:
交叉熵损失函数:
均方误差函数:
5.独热编码
直接举个通俗易懂的例子,我们在训练数据的时候,有很多抽象的数据,比如设备重要程度,我们不能直接使用1,2,3来区分它的重要程度,也不能直接使用它的编码如A1,A2,A3,因为使用这些编码作为输入,计算机它理解不了,所以我们需要把他转化为欧式距离,例如设备重要程度分为,一般设备,重要设备,那么我们就应该给他们设置独热编码为[0,1],[1,0],这其实代表的是这个这两个分类到原点的欧式距离。
6.误差反向传播算法:
神经网络中,每个神经元相连接的线上都有自己的权值w和偏置量b,我们在进行一次训练后,应该根据损失函数,使用最小梯度下降法,来返回去更w和b, 然后使用更新后的w和b,再用新的数据进行训练,就这样一直重复,从而拟合出最佳的网络。
上图为一次误差反向传播的过程,隐含层和输出层使用的激活函数为softMax函数,损失函数使用的是均方误差函数,可以看到Loss函数中,它是一个带平方的函数,所以我们就可以用最小梯度下降法,来求它的下一个落脚位置,慢慢的就可以靠近loss的极小值点 ,前面我们说过,怎么求解下一个落脚点,如下图
这里只是把x和y,换成了w和b,因为x和y是我们数据集中的已知量,而w和b是我们要求的未知量,关于求w0和b0的偏导数,使用的是链式求导法则:
以上就是更新神经网络中W和B的全过程。
7.BP神经网络训练过程:
初始化网络权值和神经元的阑值,一般通过随机的方式进行初始化
前向传播:计算隐层神经元和输出层神经元的输出
后向传播:根据目标函数公式修正W和B
参考:慕课网-神经网络与深度学习(牟琦),深度学习及其应用(赵卫亮)
相关文章:

前馈型BP神经网络
1.感知机和激活函数 感知机,是构成神经网络的基本单位,一个感知机可以接收n个输入X(x1,x2,x3…xn)T(每个输入,可以理解为一种特征),n个输入对应n个权值W(w1,w2,w3…wn),此外还有一个偏置项b&am…...

数据库实验一:学生信息管理系统数据库结构搭建和表的创建
实验项目名称:学生信息管理系统数据库结构搭建和表的创建 实验目的与要求实验原理与内容1. 数据库的组织结构2. 数据库的分离和附加3. 数据库表的创建,修改和删除 实验过程与结果1. 根据学生信息管理系统创建相关的数据库2. 数据库表初步设计及实现3. 实…...

解决 vscode使用Prettier格式化js文件报错:Cannot find module ‘./parser-babylon‘
报错如下: ["ERROR" - 11:48:58] Error formatting document. ["ERROR" - 11:48:58] Cannot find module ./parser-babylon Require stack: - d:\VueCode\VueProject\myqqmusic\node_modules\prettier\index.js - c:\Users\Administrator.SKY-2…...

汉服商城小程序的作用是什么
汉服在日常生活中越来越常见,大街小巷也有不少年轻人装扮甚是漂亮帅气,有些地区甚至还有相关的比赛等,作为近几年曝光的服饰,汉服市场规模持续增加中,各地线上线下商家也多了起来。 然而在实际经营中,汉服…...

9月大型语言模型研究论文总结
大型语言模型(llm)在今年发展迅速,随着新一代模型不断地被开发,研究人员和工程师了解最新进展变得非常重要。本文总结9-10月期间发布了一些重要的LLM论文。 这些论文涵盖了一系列语言模型的主题,从模型优化和缩放到推理、基准测试和增强性能…...

微信小程序--小程序框架
目录 前言: 一.框架基本介绍 1.整体结构: 2.页面结构: 3.生命周期: 4.事件系统: 5.数据绑定: 6.组件系统: 7.API: 8.路由: 9.模块化: 10.全局配置&…...

Java 全栈体系(三)
第一章 Java 基础语法 八、标识符 业内大多数程序员都在遵守阿里巴巴的命名规则。 1. 硬性要求 必须要这么做,否则代码会报错。 必须由数字、字母、下划线_、美元符号$组成。数字不能开头不能是关键字区分大小写的。 2. 软性建议 如果不这么做,代…...
爬虫学习日记第七篇(爬取github搜索仓库接口,其实不算爬虫)
github提供的搜索仓库的API https://api.github.com/ # 连接数据库 db mysql.connector.connect(host"***",user"***",password"***",database"***" ) # 创建游标 cursor db.cursor() # 从数据库中读取CVE ID cursor.execute("…...

子组件监听父组件消息,随之变化与不变化
父组件通过props传递给子组件消息,子组件有两种情况接收处理: 1、子组件监听父组件props的变化,同时随之变化【可以直接取props中的值展示,也可以监听值得变化处理】 2、子组件初始化时更新,随后不再随父组件变化 示…...

计算机操作系统面试题自用
什么是操作系统: 操作系统是管理硬件和软件的一种应用程序。操作系统是运行在计算机上最重要的一种软件 操作系统的主要功能 解释一下操作系统的主要目的是什么 操作系统是一种软件,它的主要目的有三种 1 管理计算机资源,这些资源包括 C…...

redis作为消息队列的缺点
Redis作为消息队列的不足。 1、基于内存 Redis是一种基于内存的数据库产品,这意味着数据存储在内存中,当内存不足时,Redis会使用基于磁盘的虚拟内存来存储数据。虽然这种虚拟内存机制可以增加Redis的存储容量,但也会降低Redis的…...

Redis五大数据类型的底层设计
SDS 无论是 Redis 的 Key 还是 Value,其基础数据类型都是字符串。虽然 Redis是使用标准 C 语言开发的,但并没有直接使用 C 语言中传统的字符串表示,而是自定义了一 种字符串。这种字符串本身的结构比较简单,但功能却非常强大&…...
logback的简单配置详解
<?xml version"1.0" encoding"UTF-8"?> <!--logback配置的根元素。scantrue表示logback将定期扫描配置文件以检测更改。scanPeriod"30 Period" 扫描间隔为30s--> <configuration scan"true" scanPeriod"30 seco…...

TatukGIS Developer Kernel使用教程:如何为FMX创建第一个应用程序
概述:TatukGIS Developer Kernel(DK)是一个用于开发自定义地理信息系统(GIS)应用程序以及解决方案的综合性软件开发工具包(SDK)。本篇文章主要介绍用DK11为FMX创建一个应用程序,现在…...

Ant Design Vue设置表格滚动 宽度自适应 不换行
Ant Design Vue设置表格滚动 宽度自适应 不换行 添加以下属性即可解决这个问题: <a-table :columns"columns" :data-source"list":pagination"false"bordered:scroll"{ x: max-content }" >...
在Linux上开启文件服务,需要安装并配置Samba
在Linux上开启文件服务,需要安装并配置Samba。以下是具体步骤: 安装Samba软件包:在终端中输入以下命令进行安装: 复制代码 sudo apt-get update && sudo apt-get install samba 配置Samba:编辑Samba配置文件…...
TypeScript 类型兼容性
TypeScript 类型兼容性 在前端开发中,使用 TypeScript 可以提供更强大的类型检查和类型安全。然而,了解 TypeScript 中的类型兼容性是至关重要的,因为它涉及如何处理不同类型之间的关系,以及在这些类型之间进行无缝的交互。本文将…...

【多线程】线程的状态
我们可以通过下面的这段代码来查看线程一共有哪几种状态 //线程的状态是一个枚举类型 Thread.State for(Thread.State state : Thread.State.values()){System.out.println(state); }NEW(新建状态): 当线程对象已经被创建,但是 s…...
pytorch 对图片进行归一化处理
如题,神经网络通常使用浮点数张量作为输入,我们要做的第一件事情就是将图片转化为浮点数,并且做归一化操作。 import torch import imageio import osdata_dirF:\\work\\deep_learning\\pytorch\\dlwpt-code-master\\data\\p1ch4\\image-cat…...

零售数据分析师熬夜整理:人、货、场、供、财这样做
在零售数据分析中,人、货、场、供、财数据分析非常重要,它们分别是指人员、商品、场所、供应和财务,对这些要素进行数据分析,可以更好地了解市场需求、优化商品供应链、调整销售策略和提高盈利能力。零售数据量大、分析指标多且复…...

C++_核心编程_多态案例二-制作饮品
#include <iostream> #include <string> using namespace std;/*制作饮品的大致流程为:煮水 - 冲泡 - 倒入杯中 - 加入辅料 利用多态技术实现本案例,提供抽象制作饮品基类,提供子类制作咖啡和茶叶*//*基类*/ class AbstractDr…...

深入剖析AI大模型:大模型时代的 Prompt 工程全解析
今天聊的内容,我认为是AI开发里面非常重要的内容。它在AI开发里无处不在,当你对 AI 助手说 "用李白的风格写一首关于人工智能的诗",或者让翻译模型 "将这段合同翻译成商务日语" 时,输入的这句话就是 Prompt。…...

中南大学无人机智能体的全面评估!BEDI:用于评估无人机上具身智能体的综合性基准测试
作者:Mingning Guo, Mengwei Wu, Jiarun He, Shaoxian Li, Haifeng Li, Chao Tao单位:中南大学地球科学与信息物理学院论文标题:BEDI: A Comprehensive Benchmark for Evaluating Embodied Agents on UAVs论文链接:https://arxiv.…...

MFC内存泄露
1、泄露代码示例 void X::SetApplicationBtn() {CMFCRibbonApplicationButton* pBtn GetApplicationButton();// 获取 Ribbon Bar 指针// 创建自定义按钮CCustomRibbonAppButton* pCustomButton new CCustomRibbonAppButton();pCustomButton->SetImage(IDB_BITMAP_Jdp26)…...

《用户共鸣指数(E)驱动品牌大模型种草:如何抢占大模型搜索结果情感高地》
在注意力分散、内容高度同质化的时代,情感连接已成为品牌破圈的关键通道。我们在服务大量品牌客户的过程中发现,消费者对内容的“有感”程度,正日益成为影响品牌传播效率与转化率的核心变量。在生成式AI驱动的内容生成与推荐环境中࿰…...
相机Camera日志分析之三十一:高通Camx HAL十种流程基础分析关键字汇总(后续持续更新中)
【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了:有对最普通的场景进行各个日志注释讲解,但相机场景太多,日志差异也巨大。后面将展示各种场景下的日志。 通过notepad++打开场景下的日志,通过下列分类关键字搜索,即可清晰的分析不同场景的相机运行流程差异…...

在Mathematica中实现Newton-Raphson迭代的收敛时间算法(一般三次多项式)
考察一般的三次多项式,以r为参数: p[z_, r_] : z^3 (r - 1) z - r; roots[r_] : z /. Solve[p[z, r] 0, z]; 此多项式的根为: 尽管看起来这个多项式是特殊的,其实一般的三次多项式都是可以通过线性变换化为这个形式…...
HybridVLA——让单一LLM同时具备扩散和自回归动作预测能力:训练时既扩散也回归,但推理时则扩散
前言 如上一篇文章《dexcap升级版之DexWild》中的前言部分所说,在叠衣服的过程中,我会带着团队对比各种模型、方法、策略,毕竟针对各个场景始终寻找更优的解决方案,是我个人和我司「七月在线」的职责之一 且个人认为,…...

【UE5 C++】通过文件对话框获取选择文件的路径
目录 效果 步骤 源码 效果 步骤 1. 在“xxx.Build.cs”中添加需要使用的模块 ,这里主要使用“DesktopPlatform”模块 2. 添加后闭UE编辑器,右键点击 .uproject 文件,选择 "Generate Visual Studio project files",重…...
第八部分:阶段项目 6:构建 React 前端应用
现在,是时候将你学到的 React 基础知识付诸实践,构建一个简单的前端应用来模拟与后端 API 的交互了。在这个阶段,你可以先使用模拟数据,或者如果你的后端 API(阶段项目 5)已经搭建好,可以直接连…...