【机器学习】神经网络(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神经网络是有监督的,损失函数衡量网络输出【运算结果】与真实值差距【正确答案】

误差反向传播

输出层误差

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

隐藏层误差

更新权重

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


再来一题

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

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


总结步骤

  • 前向传播
    • 输入数据从输入层逐层传递到输出层。
    • 计算每个神经元的激活值。
  • 误差计算
    • 计算输出层的误差(实际值与预测值的差异)。
  • 反向传播
    • 从输出层到输入层,按链式法则计算梯度。
    • 更新权重和偏置,减少误差。
  • 重复迭代
    • 不断重复前向传播和反向传播,直到网络收敛。
相关推荐
编程小白_正在努力中23 分钟前
神经网络深度解析:从神经元到深度学习的进化之路
人工智能·深度学习·神经网络·机器学习
无风听海37 分钟前
神经网络之经验风险最小化
人工智能·深度学习·神经网络
音视频牛哥37 分钟前
轻量级RTSP服务的工程化设计与应用:从移动端到边缘设备的实时媒体架构
人工智能·计算机视觉·音视频·音视频开发·rtsp播放器·安卓rtsp服务器·安卓实现ipc功能
DKPT1 小时前
ZGC和G1收集器相比哪个更好?
java·jvm·笔记·学习·spring
该用户已不存在1 小时前
在 Gemini CLI 中使用 Gemini 3 Pro 实操指南
人工智能·ai编程·gemini
东皇太星1 小时前
ResNet (2015)(卷积神经网络)
人工智能·神经网络·cnn
aircrushin2 小时前
TRAE SOLO 中国版,正式发布!AI 编程的 "Solo" 时代来了?
前端·人工智能
Java中文社群2 小时前
保姆级教程:3分钟带你轻松搭建N8N自动化平台!(内附视频)
人工智能·工作流引擎
是Yu欸2 小时前
DevUI MateChat 技术演进:UI 与逻辑解耦的声明式 AI 交互架构
前端·人工智能·ui·ai·前端框架·devui·metachat
我不是QI2 小时前
周志华《机器学习---西瓜书》 一
人工智能·python·机器学习·ai