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

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

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

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

高中的数理统计就学过最小二乘法这种回归方法(ŷ 代表自己的预测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.xdnf.cn/news/14916.html

相关文章:

  • Vue计算属性(computed)全面解析:原理、用法与最佳实践
  • Web攻防-XMLXXE上传解析文件预览接口服务白盒审计应用功能SRC报告
  • 【Python】文件应用: 查找读取的文件内容
  • list和list中的注意事项
  • 使用ADSL接入Internet,用户端需安装什么协议?
  • Kubernetes 集群相关规范
  • 手机电工仿真软件更新了
  • 让你的asp.net网站在调试模式下也能在局域网通过ip访问
  • NLP之文本纠错开源大模型:兼看语音大模型总结
  • bottles安装网易云出现的问题01中文出现乱码问题
  • JavaScript基础语法之运算符和控制流
  • 程序员在线接单
  • 记录一点开发技巧
  • 七牛云前端面试题及参考答案 (上)
  • 隐马尔可夫模型(HMM):观测背后的状态解码艺术
  • 动手学深度学习-学习笔记【二】(基础知识)
  • 编程中的英语
  • 【C语言刷题】第十一天:加量加餐继续,代码题训练,融会贯通IO模式
  • cloudflare配合github搭建免费开源影视LibreTV一个独享视频网站 详细教程
  • HarmonyOS学习2---工程目录UIAbility
  • rk3128 emmc显示剩余容量为0
  • C++ 模板参数匹配、特化
  • openai和chatgpt什么关系
  • 11_架构演进:从单体到云原生的蜕变
  • 查看linux 系统中 支持哪些 ssh negotiate 算法
  • webpack+vite前端构建工具 -11实战中的配置技巧
  • 后端快捷代码
  • Redis服务器
  • JVM的位置和JVM的结构体系
  • ASP.NET 安装使用教程