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

误差反向传播

输出层误差

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

隐藏层误差

更新权重

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


再来一题

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

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


总结步骤

  • 前向传播
    • 输入数据从输入层逐层传递到输出层。
    • 计算每个神经元的激活值。
  • 误差计算
    • 计算输出层的误差(实际值与预测值的差异)。
  • 反向传播
    • 从输出层到输入层,按链式法则计算梯度。
    • 更新权重和偏置,减少误差。
  • 重复迭代
    • 不断重复前向传播和反向传播,直到网络收敛。
相关推荐
红衣小蛇妖8 分钟前
神经网络-Day44
人工智能·深度学习·神经网络
忠于明白9 分钟前
Spring AI 核心工作流
人工智能·spring·大模型应用开发·spring ai·ai 应用商业化
大写-凌祁44 分钟前
论文阅读:HySCDG生成式数据处理流程
论文阅读·人工智能·笔记·python·机器学习
Unpredictable2221 小时前
【VINS-Mono算法深度解析:边缘化策略、初始化与关键技术】
c++·笔记·算法·ubuntu·计算机视觉
柯南二号1 小时前
深入理解 Agent 与 LLM 的区别:从智能体到语言模型
人工智能·机器学习·llm·agent
珂朵莉MM1 小时前
2021 RoboCom 世界机器人开发者大赛-高职组(初赛)解题报告 | 珂学家
java·开发语言·人工智能·算法·职场和发展·机器人
IT_陈寒1 小时前
Element Plus 2.10.0 重磅发布!新增Splitter组件
前端·人工智能·后端
jndingxin1 小时前
OpenCV CUDA模块图像处理------创建一个模板匹配(Template Matching)对象函数createTemplateMatching()
图像处理·人工智能·opencv
傍晚冰川1 小时前
FreeRTOS任务调度过程vTaskStartScheduler()&任务设计和划分
开发语言·笔记·stm32·单片机·嵌入式硬件·学习
盛寒2 小时前
N元语言模型 —— 一文讲懂!!!
人工智能·语言模型·自然语言处理