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

【深度学习与大模型基础】第12章-损失函数与梯度下降

1. 什么是损失函数?

想象你在玩一个“蒙眼飞镖”游戏:

  • 目标:把飞镖扔到靶心(正确答案)。

  • 每次扔飞镖:你会被告知离靶心有多远(比如“偏左10厘米”)。

  • 损失函数就是那个告诉你“误差有多大”的规则。它的作用是量化你的错误程度,帮你下一次扔得更准。

在机器学习中:

  • 模型(比如一个预测房价的程序)就像“蒙眼玩家”。

  • 损失函数是计算“预测值”和“真实答案”差距的数学公式。

  • 模型通过不断减少这个“损失值”来学习(就像你调整飞镖方向)。


2. 机器语言的例子

假设我们用最简单的机器语言(二进制)和逻辑,做一个“预测数字”的任务:

任务
  • 输入 x=1,模型输出预测值 y_pred,真实答案是 y_true=3

  • 损失函数用绝对误差:Loss = |y_true - y_pred|

机器中的表示(简化版)

import matplotlib.pyplot as plt# 定义输入和输出
x = 1
y_true = 3
y_pred = 2  # 假设的预测值# 计算损失(绝对误差)
loss = abs(y_true - y_pred)# 可视化
plt.figure(figsize=(8, 6))
plt.plot([x], [y_true], 'ro', label='真实值 (y_true)')
plt.plot([x], [y_pred], 'bo', label='预测值 (y_pred)')
plt.title('预测值 vs 真实值')
plt.xlabel('输入 (x)')
plt.ylabel('输出 (y)')
plt.legend()
plt.grid(True)# 添加损失值的文本标注
plt.text(x, y_pred - 0.5, f'Loss: {loss}', fontsize=12, color='green', ha='center')plt.show()


3. 为什么需要损失函数?

  • 指导学习:模型通过损失值知道“错得多离谱”(比如损失=2比损失=5更好)。

  • 自动调整:模型会反向传播这个误差,调整内部参数(比如把 y_pred 从1改成2,损失就从2降到1)。

  • 通用规则:不同的任务用不同的损失函数(比如预测房价用均方误差,分类用交叉熵)。


4. 现实类比

  • 考试评分:损失函数像“错一题扣1分”,总分(损失)越低说明答得越好。

  • 导航系统:如果你走错路,GPS会重新规划路线(像模型根据损失调整方向)。


5. 什么是梯度下降?

现实类比:蒙眼下山

想象你被蒙上眼睛,站在一座山上,目标是用最短路径走到山脚。你会怎么做?

  • 策略:用脚试探周围,找到最陡峭的下坡方向,迈一小步。

  • 重复:不断试探、迈步,直到踩到平地(最低点)。

梯度下降就是数学版的“蒙眼下山”

  • :代表模型的损失函数(预测误差)。

  • :就是模型的参数(比如线性回归中的权重)。

  • 目标:找到损失函数的最低点(误差最小)。


6. 机器语言中的梯度下降

简单任务

假设我们要拟合一条直线 y = w * xw是参数),用均方误差(MSE)作为损失函数:

机器指令流程(简化版)
  1. 初始化参数

    MOV w, 0.0  # 初始权重设为0

  2. 计算梯度(导数)
    梯度公式: 

                                                                                       

    # 假设x=[1,2,3], y_true=[2,4,6], w=0
    SUB error1, 2, 0*1  # error1=2 (真实值-预测值)
    SUB error2, 4, 0*2  # error2=4
    SUB error3, 6, 0*3  # error3=6
    MUL grad1, error1, 1  # grad1=2*1=2
    MUL grad2, error2, 2  # grad2=4*2=8
    MUL grad3, error3, 3  # grad3=6*3=18
    ADD grad_total, grad1, grad2
    ADD grad_total, grad_total, grad3
    DIV grad_avg, grad_total, 3  # 梯度平均值= (2+8+18)/3=9.33

  3. 更新参数(学习率 lr=0.01):

    MUL delta_w, grad_avg, 0.01  # delta_w=9.33*0.01=0.093
    ADD w, w, delta_w  # w=0+0.093=0.093

  4. 重复:用新的 w 重新计算梯度和损失,直到梯度接近0。


7. 关键概念

  1. 梯度(Gradient)

    • 就是“最陡的下山方向”(损失函数对参数的导数)。

    • 梯度是向量,可以指向多维空间的方向(比如多个参数时)。

  2. 学习率(Learning Rate)

    • 每次迈的步长(如 lr=0.01)。

    • 太大:可能跨过最低点(发散);太小:下山太慢。

  3. 终止条件

    • 梯度接近0(找到最低点),或达到最大迭代次数。


8. 直观图示

复制

下载

损失函数曲线:      /\/  \
_________/    \_________ ^| 梯度下降像小球滚下山,最终停在谷底(最优参数w)。

9. 为什么需要梯度下降?

  • 自动优化:模型通过梯度下降自动调整参数,无需人工试错。

  • 通用性:适用于几乎所有机器学习模型(神经网络、逻辑回归等)。


总结

梯度下降就是:

  1. 看方向(计算梯度),

  2. 迈小步(更新参数),

  3. 反复走(直到最优)。

就像蒙眼下山时,靠脚底感觉坡度找路!

http://www.xdnf.cn/news/51283.html

相关文章:

  • 高等数学同步测试卷 同济7版 试卷部分 上 做题记录 上册期中同步测试卷 B卷
  • 相对路径和绝对路径解析
  • windows下配置Ninja
  • 算法笔记—动态规划
  • Multisim使用教程详尽版--(2025最新版)
  • B树的异常恢复
  • pivot_root:原理、用途及最简单 Demo
  • 项目预期管理:超越甘特图,实现客户价值交付
  • 协程?协程与线程的区别?Java是否支持协程?
  • The_Planets_Earth靶场笔记(VulnHub)
  • 第一章,HCIA复习
  • 人形机器人马拉松:北京何以孕育“领跑者”?
  • C++ 基础:注意a == b; b == a;陷阱
  • 如何高效利用呼叫中心系统和AI语音机器人
  • (12)VTK C++开发示例 --- 生成高斯随机数
  • 苍穹外卖阶段性总结 (超详细版)
  • AIGC(生成式AI)试用 30 -- AI做软件程序测试 1
  • Redis入门
  • 按字符串长度升序,长度相同则按字典序
  • MyFamilyTree:专业家谱族谱制作工具
  • PHP实现图片自动添加水印效果
  • 在 Ubuntu 系统上安装 PostgreSQL
  • INFERENCE SCALING FOR LONG-CONTEXT RETRIEVAL AUGMENTED GENERATION
  • MIT6.S081-lab4
  • 【LeetCode】算法详解#5 ---轮转数组
  • Spring中Bean的作用域和生命周期
  • PICO4 Ultra MR开发 空间网格扫描 模型导出及预览
  • 【外研在线-注册/登录安全分析报告】
  • 聚宽策略----国九条后中小板微盘小改,年化135.40%
  • 【leetcode刷题日记】lc.152-乘积最大子数组