【机器学习】神经网络(BP算法)含具体计算过程

目录

神经元的"激活函数"

多层前馈网络结构​编辑

BP(BackPropagation:误差逆传播算法)

BP算法推导

手动计算BP神经网络的权值来实现学习

前向传播(正向运算)的过程

隐藏层输入:

隐藏层输出:

输出层输入:

输出层输出:

个人计算过程:

计算误差

误差反向传播


什么是神经网络?

神经网络由很多神经元 (类似人脑的神经元)组成,这些神经元按层次结构排列,并通过权重(类似神经连接强度)相互连接。

神经网络的目的是通过学习输入数据(x)和输出结果(y)之间的关系,来进行预测或分类。

每个神经元接收来自前一层的输入,并进行加权求和。然后,将这个和通过一个激活函数,得到该神经元的输出,输出会传递到下一层神经元。

f 就是激活函数(响应/挤压函数)

神经网络的基本结构是由输入层隐藏层输出层构成。

  • 输入层(Input Layer):接收外部数据。每个神经元表示一个特征。
  • 隐藏层(Hidden Layer):是神经网络的"工作区域",负责学习输入数据的复杂模式和特征。可以有多层,通常深度神经网络有多个隐藏层。
  • 输出层(Output Layer):输出网络的预测结果或分类结果。

神经元的"激活函数"

加权和 通过激活函数 f() 进行非线性变换,输出给下一层神经元。

Sigmoid:输出范围在 (0,1)(0, 1)(0,1),常用于二分类问题。

常见的激活函数包括Sigmoid、Tanh、ReLU、Leaky ReLU、Softmax等

我学bp的时候,用sigmoid函数。故其他的就不提了

多层前馈网络结构

  • 输入层(Input Layer):该层负责接收输入数据。每个神经元代表一个输入特征。

  • 隐藏层 (Hidden Layers):该层是神经网络中间的部分,通常由多个神经元构成,神经元数量和层数可以根据具体任务来设定。隐藏层的作用是通过激活函数学习输入数据中的非线性关系。

  • 输出层(Output Layer):该层给出最终的预测结果或分类标签。在回归任务中,输出层通常只有一个神经元;在分类任务中,输出层的神经元数等于类别数

  • 通过权重传递信息:从输入层到隐藏层的信息是加权传递的,权重是神经网络在训练过程中学习得到的参数。



BP(BackPropagation:误差逆传播算法)

通过调整网络中的权重和偏置,最小化输出结果与实际标签之间的误差

BP算法推导

如果一个函数是凸函数,那么梯度为零意味着达到了全局最优点

BP 算法的损失函数无法保证是凸函数,这意味着目标函数可能具有多个局部极值点。对于非凸优化问题,仅通过求导令梯度为零的方法无法确保找到全局最优解。因此,BP算法通常结合梯度下降法来进行权重和偏置的更新

BP 算法基于 梯度下降 策略,以目标的负梯度方向对参数进行调整

BP 算法就是让网络的输出误差逐层传递回去,把"错误"反馈到每一个权重。

每次迭代中,权重和偏置都会朝着减小损失的方向微调。

这一时没有看懂没关系,可以结合下面的题目体会体会



手动计算 BP 神经网络的权值更新可以帮助理解算法过程和数学推导

手动计算BP神经网络的权值来实现学习

3层的bp神经网络

绿色的是输入层【 2个**】** ,蓝色的是输出层【 2个**】** ,橙色的是隐藏层【3个】

b1 ,b2指的是偏置值

初始权重,这个随机给定的,需要我们后面更新【这是我们要求的】

更新后的权重

学习率给定的是0.5

解题步骤

按照 前向传播计算误差误差反向传播 的顺序进行计算。

**前向传播(**正向运算)的过程

一个神经网络的正向运算过程主要分为两个部分:线性部分非线性部分(激活函数)

线性部分:本神经元连接的前面的东西作为输入,做一个线性叠加(乘上权值w之后再相加)

将当前神经元的输入值进行线性加权求和

非线性部分【激活函数--用sigmoid函数】:用刚刚的线性叠加结果作为输入,求出输出(本神经元的输出)

【将线性叠加结果 输入到激活函数。通过 Sigmoid 函数计算神经元的输出,输出是一个非线性值,范围在 0 到 1 之间】

隐藏层输入

隐藏层输出

应用 Sigmoid 激活函数

输出层输入

输出层输出

应用 Sigmoid 激活函数

个人计算过程:

计算误差

监督学习BP神经网络是有监督的,损失函数衡量网络输出【运算结果】与真实值差距【正确答案】

误差反向传播

输出层误差

输出层的梯度(使用链式法则)

隐藏层误差

更新权重

求出这个结果后再去重复上述过程


再来一题

手写的部分过程,保留的小数位看题目要求

熟悉理解一下这个计算过程,这个题目基本掌握了


总结步骤

  • 前向传播
    • 输入数据从输入层逐层传递到输出层。
    • 计算每个神经元的激活值。
  • 误差计算
    • 计算输出层的误差(实际值与预测值的差异)。
  • 反向传播
    • 从输出层到输入层,按链式法则计算梯度。
    • 更新权重和偏置,减少误差。
  • 重复迭代
    • 不断重复前向传播和反向传播,直到网络收敛。
相关推荐
会飞的老朱12 小时前
医药集团数智化转型,智能综合管理平台激活集团管理新效能
大数据·人工智能·oa协同办公
聆风吟º13 小时前
CANN runtime 实战指南:异构计算场景中运行时组件的部署、调优与扩展技巧
人工智能·神经网络·cann·异构计算
Codebee16 小时前
能力中心 (Agent SkillCenter):开启AI技能管理新时代
人工智能
聆风吟º16 小时前
CANN runtime 全链路拆解:AI 异构计算运行时的任务管理与功能适配技术路径
人工智能·深度学习·神经网络·cann
uesowys16 小时前
Apache Spark算法开发指导-One-vs-Rest classifier
人工智能·算法·spark
AI_567816 小时前
AWS EC2新手入门:6步带你从零启动实例
大数据·数据库·人工智能·机器学习·aws
User_芊芊君子16 小时前
CANN大模型推理加速引擎ascend-transformer-boost深度解析:毫秒级响应的Transformer优化方案
人工智能·深度学习·transformer
wdfk_prog17 小时前
[Linux]学习笔记系列 -- [drivers][input]input
linux·笔记·学习
ouliten17 小时前
cuda编程笔记(36)-- 应用Tensor Core加速矩阵乘法
笔记·cuda
智驱力人工智能17 小时前
小区高空抛物AI实时预警方案 筑牢社区头顶安全的实践 高空抛物检测 高空抛物监控安装教程 高空抛物误报率优化方案 高空抛物监控案例分享
人工智能·深度学习·opencv·算法·安全·yolo·边缘计算