当前位置: 首页 > news >正文

多层感知机 (MLP) 完整计算过程详解

引言

多层感知机(Multilayer Perceptron,简称 MLP)是深度学习中最基础的神经网络模型,也是理解复杂神经网络的核心基础。本文将完整拆解 MLP 的每一步计算过程,从输入数据到前向传播、损失计算、反向传播,再到权重偏置更新,同时提供了可交互的 Excel 示例文件,所有公式均已内置,修改输入数据或超参数即可自动完成全部计算,帮助你彻底理解 MLP 的底层逻辑。

一、MLP 基础结构与超参数

本文示例使用的是一个简单的 3 层 MLP 结构,适用于回归任务,具体配置如下:

超参数 / 结构配置值说明
输入层神经元数量1单输入变量,本示例输入值为 5
隐藏层神经元数量6单隐藏层,包含 6 个神经元
输出层神经元数量1单输出变量,本示例真实目标值为 208
学习系数 (Learning Rate)0.01梯度下降的步长,控制每次参数更新的幅度
激活函数Leaky ReLUf(x) = max(x, 0.05x),解决传统 ReLU 的神经元死亡问题
损失函数均方误差 (MSE)Loss = (真实值-预测值)²,回归任务最常用的损失函数

MLP 的完整计算流程分为 5 个核心步骤,我们将逐一拆解:

以本示例的第 1 个隐藏神经元为例:

6 个隐藏神经元的完整计算结果如下:

  1. 前向传播 (Forward Propagation)
  2. 损失计算 (Loss Calculation)
  3. 反向传播 (Backward Propagation)
  4. 参数更新 (Parameter Update)
  5. 迭代训练直到收敛

    二、前向传播计算过程

    前向传播是 MLP 的 "预测过程",从输入层开始,逐层计算加权和与激活值,最终得到输出层的预测结果。

    2.1 隐藏层计算

    隐藏层的每个神经元都包含两步计算:加权和计算+激活函数计算

    对于第 i 个隐藏神经元,计算公式为:

  6. 加权和:zi = x * Wi + Bi
    • x:输入神经元值(本示例为 5)
    • Wi:第 i 个隐藏神经元的权重
    • Bi:第 i 个隐藏神经元的偏置
  7. 激活值:ai = LeakyReLU(zi) = IF(zi>0, zi, 0.05*zi)
  8. 权重 W1=10,偏置 B1=10
  9. 加权和 z1 = 5*10 + 10 = 60
  10. 激活值 a1 = LeakyReLU (60) = 60(因为 60>0)
神经元编号偏置 (Bi)权重 (Wi)加权和 (zi)激活值 (ai)
110106060
21020110110
31030160160
41020110110
510106060
61020110110

2.2 输出层计算

输出层的计算逻辑与隐藏层一致,输入是隐藏层的 6 个激活值,最终得到模型的预测值。

计算公式为:

  1. 输出加权和:z_out = sum(ai * W'i) + B'
    • ai:第 i 个隐藏神经元的激活值
    • W'i:第 i 个隐藏神经元对应的输出权重
    • B':输出层的偏置
  2. 输出激活值(预测值):y_hat = LeakyReLU(z_out)

本示例的输出层计算:

  • 输出权重 W'=[10,20,10,10,30,20],输出偏置 B'=10
  • 加权和 z_out = 6010 + 11020 + 16010 + 11010 + 6030 + 11020 + 10 = 19510
  • 预测值 y_hat = LeakyReLU (19510) = 19510

三、损失函数计算

损失函数用于衡量模型的预测值与真实目标值之间的差距,是模型优化的核心目标。

本示例使用均方误差 (MSE) 作为损失函数,计算公式为:

  1. 误差:error = y - y_hat
    • y:真实目标值(本示例为 208)
    • y_hat:模型预测值(本示例为 19510)
  2. 均方误差:Loss = error² = (y - y_hat)²
  3. 损失对预测值的导数:dLoss/dy_hat = 2*(y_hat - y)(反向传播的核心基础)

本示例的损失计算结果:

  • 误差 = 208 - 19510 = -19302
  • 均方误差 Loss = (-19302)² = 372567204
  • 损失导数 dLoss/dy_hat = 2*(19510-208) = 38604

四、反向传播计算过程

反向传播是 MLP 的 "学习过程",核心是链式法则,从输出层开始,反向计算损失函数对每个权重和偏置的梯度,为后续的参数更新提供依据。

4.1 输出层梯度计算

输出层的梯度是反向传播的起点,我们需要计算损失函数对输出层权重和偏置的梯度。

计算公式:

  1. 损失对输出权重的梯度:dLoss/dW'i = dLoss/dy_hat * ai
    • 梯度等于损失对预测值的导数,乘以对应隐藏神经元的激活值
  2. 损失对输出偏置的梯度:dLoss/dB' = dLoss/dy_hat
    • 偏置的梯度与损失对预测值的导数完全相等

以第 1 个输出权重为例:

  • dLoss/dW'1 = 38604 * 60 = 2316240

4.2 隐藏层梯度计算

隐藏层的梯度需要通过输出层的梯度反向传递,核心是链式法则的应用。

对于第 i 个隐藏神经元,梯度计算分为 4 步:

  1. 激活函数的导数:da/dz = IF(zi>0, 1, 0.05)(Leaky ReLU 的导数)
  2. 损失对隐藏层激活值的梯度:dLoss/dai = dLoss/dy_hat * W'i
    • 梯度等于损失对预测值的导数,乘以对应的输出权重
  3. 损失对隐藏层加权和的梯度:dLoss/dzi = dLoss/dai * da/dz
    • 链式法则:损失对加权和的梯度,等于损失对激活值的梯度乘以激活函数的导数
  4. 损失对隐藏层权重 / 偏置的梯度:
    • 权重梯度:dLoss/dWi = dLoss/dzi * x
    • 偏置梯度:dLoss/dBi = dLoss/dzi

以第 1 个隐藏神经元为例:

  • 激活函数导数 da/dz = 1(因为 z1=60>0)
  • dLoss/da1 = 38604 * 10 = 386040
  • dLoss/dz1 = 386040 * 1 = 386040
  • dLoss/dW1 = 386040 * 5 = 1930200
  • dLoss/dB1 = 386040

五、权重与偏置更新

得到所有参数的梯度后,我们使用梯度下降算法更新权重和偏置,核心目标是让损失函数值下降。

梯度下降的更新规则为:

  • 权重更新:W_new = W_old - η * dLoss/dW
  • 偏置更新:B_new = B_old - η * dLoss/dB
    • η:学习系数(本示例为 0.01)
    • 负号表示沿着梯度的反方向更新,让损失函数下降

5.1 隐藏层参数更新结果

神经元编号原权重 (Wi)权重梯度权重调整幅度更新后权重 (Wi_new)原偏置 (Bi)偏置梯度偏置调整幅度更新后偏置 (Bi_new)
110193020019302-19292103860403860.4-3850.4
220424644042464.4-42444.4108492888492.88-8482.88
330617664061766.4-61736.410123532812353.28-12343.28
420424644042464.4-42444.4108492888492.88-8482.88
510193020019302-19292103860403860.4-3850.4
620424644042464.4-42444.4108492888492.88-8482.88

5.2 输出层参数更新结果

隐藏层神经元原权重 (W')权重梯度权重调整幅度更新后权重 (W'_new)原偏置 (B')偏置梯度偏置调整幅度更新后偏置 (B'_new)
110231624023162.4-23152.41038604386.04-376.04
220424644042464.4-42444.4NoneNoneNoneNone
310617664061766.4-61756.4NoneNoneNoneNone
410424644042464.4-42454.4NoneNoneNoneNone
530231624023162.4-23132.4NoneNoneNoneNone
620424644042464.4-42444.4NoneNoneNoneNone

5.3 本次迭代效果

指标迭代前值迭代后值变化量
模型预测值 (y_hat)19510208-19302
真实目标值 (y)2082080
均方误差 (Loss)3725672040-372567204

可以看到,经过一次完整的迭代,模型的预测值已经完全匹配真实目标值,损失函数降为 0,模型完成了学习。

六、迭代训练与收敛

在实际的深度学习任务中,模型通常不会一次迭代就收敛,需要重复前向传播→损失计算→反向传播→参数更新的完整流程,直到损失函数值下降到可接受的范围,或者不再明显下降,此时模型达到收敛状态。

每次迭代都会让模型的参数向最优值靠近一步,学习率的选择非常关键:

  • 学习率过大:可能会越过最优值,导致损失函数震荡不收敛
  • 学习率过小:模型收敛速度太慢,需要大量的迭代次数

七、Excel 示例文件说明

本文提供了完整的 MLP 计算过程 Excel 示例文件,文件包含 4 个独立的工作表,所有公式均已内置,修改输入数据、权重、偏置或学习率,即可自动完成全部计算:

  1. MLP 计算总览:包含 MLP 的基础超参数、完整计算流程说明,快速了解整体结构
  2. 前向传播计算:完整的隐藏层、输出层计算过程,每一步都有公式说明和示例
  3. 反向传播计算:输出层、隐藏层的梯度计算过程,详细拆解链式法则的应用
  4. 权重偏置更新:完整的参数更新过程,以及本次迭代的效果汇总
http://www.jsqmd.com/news/818194/

相关文章:

  • 一文看懂二氧化硅分级:工业与实验室设备对照表
  • Zotero PDF Translate:如何让外文文献阅读变得轻松自如
  • 国内AI小程序开发服务商信誉排行:实力口碑双维度解析 - 奔跑123
  • DeepSeek本地部署落地困境:为何企业RAG依然用不起来
  • Claude API代理服务部署与定制:从零构建企业级AI网关
  • 怎么加固 Electron preload 脚本防止原型链污染攻击
  • 【RKAIQ ISP21】RK3568 平台AWB自动白平衡模块参数详解(GC2053 实战)
  • 告别简单门禁:用KP-ABE(密钥策略属性基加密)为你的云盘文件打造精细到‘行’的访问控制
  • 告别重复劳动!用Python的PyAutoGUI库5分钟搞定日常办公自动化
  • 手把手教你学Simulink——基于PI控制的双向DC-AC逆变器直流稳压与交流稳流仿真
  • Claude NoSQL数据模型重构指南(从MongoDB迁移失败案例反推的7大反模式)
  • 2026年AI生态构建选型:开源中国“模力方舟”与“口袋龙虾”方案解析
  • GitLab MCP 实战:zereight 是最优解吗?PAT 认证安全吗?
  • 私有化视频会议系统/视频高清直播点播EasyDSS构筑智慧校园安全可控全场景音视频中枢
  • 用STM32CubeMX玩转DMA:一个串口透传网关的完整实现(附G031/G0B1代码)
  • 2026年升学规划定制公司精选名单:跨省升学/吉林高考/初高中转学/吉林落户转学 - 品牌推广大师
  • 氧气设备市场深度解读:从生命支持到全场景氧疗的千亿赛道
  • 2026年AI开发平台选型指南:如何构建云端协同的智能生态
  • CIBF现场直击|三轴同步送钉拧紧、四轴同步拧紧,砺星展台人气拉满!
  • semi join和anti join
  • 苍穹外卖day8
  • 通过cmdline-jmxclient.jar采集TongWeb8.0监控值
  • 安顺制造业工厂如何做线上全网获客?2026年GEO优化与AI搜索推广指南 - 年度推荐企业名录
  • 别再一张张手动改了!用Python脚本批量解密微信PC版dat图片(附完整代码)
  • 红牛肝哪家好:此山中野生菌上乘臻品 - 17329971652
  • 别再“氛围编程”:Matt Pocock Skills 如何把 AI Agent 拉回真实工程
  • 3步搞定Live2D模型提取:UnityLive2DExtractor完整指南
  • MCP服务器集合:为AI编辑器注入本地环境访问与记忆能力
  • 基于YOLO与PyTorch的零售货架智能分析系统:从原理到部署实战
  • 全域矩阵系统增长引擎:自动化流程编排与事件驱动营销技术实践