当前位置: 首页 > 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.lryc.cn/news/581496.html

相关文章:

  • 探寻《答案之书》:在随机中寻找生活的指引
  • 5种高效解决Maven依赖冲突的方法
  • Golang读取ZIP压缩包并显示Gin静态html网站
  • c++对象池
  • 数据库|达梦DM数据库安装步骤
  • [论文阅读] 人工智能 + 软件工程 | 自然语言驱动结构代码搜索:突破DSL学习壁垒的创新方法
  • 分布式压测
  • python高级变量XIII
  • jenkins安装
  • 分布式事务解决方案(二)
  • 探索实现C++ STL容器适配器:优先队列priority_queue
  • react当中的this指向
  • (C++)学生管理系统(正式版)(map数组的应用)(string应用)(引用)(文件储存的应用)(C++教学)(C++项目)
  • .NET9 实现字符串拼接(StringConcatenation)性能测试
  • 深入探索 pnpm:高效磁盘利用与灵活的包管理解决方案
  • jmm,`as - if - serial` 与 `happens - before` 原则
  • 【一起来学AI大模型】算法核心:数组/哈希表/树/排序/动态规划(LeetCode精练)
  • OpenSearch 向量搜索与Qwen3-Embedding 集成示例
  • @Data、@AllArgsConstructor、@NoArgsConstructor不生效。lombok不起作用怎么解决?
  • Web前端开发-Vue
  • 多人协同开发时Git使用命令
  • 锁和事务的关系
  • 深入探索开源爬虫MediaCrawler,从入门到掌握多平台数据收集
  • HarmonyOS学习6 --- 数据存储
  • 9. 【Vue实战--孢子记账--Web 版开发】-- 账户账本管理(二)
  • MySQL CDC与Kafka整合指南:构建实时数据管道的完整方案
  • 1.线性神经网络--线性回归
  • 华为云 银河麒麟 vscode远程连接
  • 前端开发问题:SyntaxError: “undefined“ is not valid JSON
  • Flutter 每日翻译之 Widget