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

极简的神经网络反向传播例子

我之前一直没搞清楚,神经网络为什么要求导?反向传播又是什么?于是到现在深究回来……

本质就是拟合一个未知函数。 

高中的数理统计就学过最小二乘法这种回归方法(ŷ 代表自己的预测y,这个表达要记住),这个有点类似。

假设你有一个线性函数y=ax(下面a用w代替,weigh权重的意思),而目标函数是y=2x,求导(是对loss 损失函数求导!)的目的就是利用导函数中的斜率(预测值比真值大了斜率是正,就要减去变小,反之小了斜率负的,也减去则变大),来调整a的权重。


我们来举一个特别简单的例子:只有1个输入、1个权重、1个输出的神经网络,帮你彻底理解:

🧠 神经网络结构(超简版)

我们要学的是:

用一个参数 w 去逼近函数 y = 2x

我们拿一组训练数据:

输入 x = 1,希望输出 y = 2

我们的模型就是:(损失函数自己定,有能力衡量预测值和真值之间差距的函数就行,这里用的是二阶中心矩——方差)

预测值:ŷ = w * x 
损失函数:L = (ŷ - y)^2 

第一步:前向传播(计算预测和损失)

  • 假设初始权重 w = 0.5

  • 输入 x = 1

  • 那么预测值:ŷ = 0.5 × 1 = 0.5

  • 实际标签:y = 2

  • 损失:L = (0.5 - 2)^2 = 2.25


第二步:反向传播(计算梯度)

我们要对 损失函数L参数w 求导,看看w该怎么改。

损失函数展开:

L = (w*x - y)^2 

对w求导:

dL/dw = 2 * (w*x - y) * x 

代入数字得到具体x的导数(梯度)

dL/dw = 2 * (0.5*1 - 2) * 1 = 2 * (-1.5) = -3 

第三步:更新权重(学习)

用最简单的梯度下降更新公式:(这部分得到的是调整斜率变化的偏移量,是减)

w = w - 学习率 * 梯度 

假设学习率 lr = 0.1

w = 0.5 - 0.1 * (-3) = 0.5 + 0.3= 0.8 

🧪 下一次训练:

新的权重 w = 0.8

  • 预测值变成 ŷ = 0.8 × 1 = 0.8

  • 距离真实值 2更近了

  • 损失变小了!

这就是“通过反向传播 + 求导”,让网络“学到信息”的过程。


✅ 总结:

步骤做了什么
前向传播用当前参数做出预测
计算损失看预测错了多少
反向传播求导,看参数该怎么改
更新参数用梯度下降法调整参数

这里是最简单的一个例子,靠着AI辅助生成创作的,权作抛砖引玉。 

http://www.dtcms.com/a/268331.html

相关文章:

  • 用户中心Vue3项目开发2.0
  • Docker 容器编排原理与使用详解
  • 125.【C语言】数据结构之归并排序递归解法
  • FileZilla二次开发实战指南:C++架构解析与界面功能扩展
  • 操作系统王道考研习题
  • 76、覆盖最小子串
  • 【STM32】通用定时器PWM
  • 漫漫数学之旅046
  • ThreadLocal的挑战与未来:在响应式编程与虚拟线程中的演变
  • ARMv8 创建3级页表示例
  • 【嵌入式电机控制#11】PID控制入门:对比例算法应用的深度理解
  • Python数据容器-str
  • ch03 部分题目思路
  • 数据驱动实时市场动态监测:让商业决策跑赢时间
  • 端到端矢量化地图构建与规划
  • Solidity——什么是selfdestruct
  • Java线程池知识点
  • RAG技术新格局:知识图谱赋能智能检索与生成
  • 【机器学习笔记Ⅰ】2 线性回归模型
  • 图灵完备之路(数电学习三分钟)----逻辑与计算架构
  • 在phpstudy环境下配置搭建XDEBUG配合PHPSTORM的调试环境
  • ESMFold 安装教程
  • 手动使用 Docker 启动 MinIO 分布式集群(推荐生产环境)
  • list和list中的注意事项
  • 三位一体:Ovis-U1如何以30亿参数重构多模态AI格局?
  • K8s系列之:Kubernetes 的 RBAC (Role-Based Access Control)
  • 定时器怎么玩?做个LED渐变灯练手
  • 【面板数据】全球贸易救济立案案件(1995-2024年)
  • xyctf2025第三届京麒CTF
  • STM32之继电器模块