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

从“下山”到AI引擎:全面理解梯度下降(下)

📘 梯度下降的学习率选择与线性回归实现 —— 从理论到可视化

✍️ 作者注:本文是学习笔记整理,内容覆盖学习率 α\alphaα 的选择策略、梯度下降的自适应特性,以及在线性回归中的完整实现与可视化。通过直觉、公式和代码,你将全面理解为什么梯度下降是机器学习最核心的优化算法之一。


一、引言:为什么学习率如此重要?

在前面的学习中,我们知道梯度下降的更新公式是:

w:=w−αdJdw w := w - \alpha \frac{dJ}{dw} w:=wαdwdJ

其中,α\alphaα(学习率,Learning Rate) 决定了每一步更新的“步长”。

  • 如果 α\alphaα 过小 → 训练极慢
  • 如果 α\alphaα 过大 → 参数震荡甚至发散
  • 如果 α\alphaα 适中 → 快速收敛,训练高效

可以说,学习率的选择往往决定了梯度下降能否成功


二、极端情况分析:太小 vs 太大

1. 学习率太小 🐢

  • 每次更新几乎看不到效果
  • 收敛需要成千上万次迭代
  • 计算和时间成本非常高

👉 虽然最终能收敛,但效率低下,不推荐。


2. 学习率太大 🚀

  • 更新步长过大,跨过最优解
  • 参数在两边来回震荡
  • 严重时,损失函数不断上升,算法发散

👉 这是灾难性的情况,必须避免。


3. 直观示例

假设当前 w=0w=0w=0,梯度 dJdw=2\frac{dJ}{dw}=2dwdJ=2

  • α=0.1\alpha=0.1α=0.1
    w_new=0−0.1×2=−0.2w\_{\text{new}} = 0 - 0.1 \times 2 = -0.2w_new=00.1×2=0.2 ✅ 合理

  • α=10\alpha=10α=10
    w_new=−20w\_{\text{new}} = -20w_new=20 ❌ 直接跳过碗底


三、理想情况:适中且自动减速

梯度下降有一个“智能”特性:即使学习率固定,算法也能自适应调整步长

阶段梯度大小步长行为
远离最小值快速下降
接近最小值缓慢逼近
到达最小值00自动停止

👉 这意味着:梯度下降不需要我们每一步手动调节学习率,它天然具备收敛性


四、局部最小值与停止条件

当导数为零时,更新公式变为:

wnew=w−α⋅0=w w_{\text{new}} = w - \alpha \cdot 0 = w wnew=wα0=w

  • 参数不再变化
  • 即使继续运行,结果保持不变
  • 算法自然收敛

在实践中,我们通常设置最大迭代次数收敛阈值,避免无限循环。


五、学习率选择策略(实战指南)

学习率行为推荐度
太小收敛慢
太大震荡/发散
适中收敛快、稳定

🔧 调参方法

  1. α=0.01\alpha=0.01α=0.010.0010.0010.001 开始尝试
  2. 观察成本函数下降曲线
  3. 若震荡 → 减小 α\alphaα
  4. 若过慢 → 增大 α\alphaα

六、梯度下降与线性回归结合

线性回归 中,我们的目标是:

f(x)=wx+b f(x) = wx + b f(x)=wx+b

成本函数(均方误差):

J(w,b)=12m∑i=1m(f(x(i))−y(i))2 J(w,b) = \frac{1}{2m}\sum_{i=1}^{m}(f(x^{(i)}) - y^{(i)})^2 J(w,b)=2m1i=1m(f(x(i))y(i))2

对应的偏导数:

∂J∂w=1m∑(f(x(i))−y(i))⋅x(i)∂J∂b=1m∑(f(x(i))−y(i)) \begin{align*} \frac{\partial J}{\partial w} &= \frac{1}{m}\sum (f(x^{(i)}) - y^{(i)}) \cdot x^{(i)} \\ \frac{\partial J}{\partial b} &= \frac{1}{m}\sum (f(x^{(i)}) - y^{(i)}) \end{align*} wJbJ=m1(f(x(i))y(i))x(i)=m1(f(x(i))y(i))

更新公式:

w:=w−α⋅∂J∂wb:=b−α⋅∂J∂b \begin{align*} w &:= w - \alpha \cdot \frac{\partial J}{\partial w} \\ b &:= b - \alpha \cdot \frac{\partial J}{\partial b} \end{align*} wb:=wαwJ:=bαbJ


七、为什么有 12m\frac{1}{2m}2m1

  • 1m\frac{1}{m}m1:取平均,不随样本数变化
  • 12\frac{1}{2}21:求导时抵消平方项的 2,简化计算

👉 让公式更简洁,计算更高效。


八、线性回归算法伪代码

初始化 w=0, b=0
设置学习率 alpha
设置迭代次数 epochs重复直到收敛:计算预测值 y_pred = w*x + b计算误差 err = y_pred - y计算梯度:dw = (1/m) * Σ(err * x)db = (1/m) * Σ(err)更新参数(同步更新):w = w - alpha * dwb = b - alpha * db

九、Python实现

import numpy as np# 数据集:y = 2x + 1
X = np.array([1, 2, 3, 4])
Y = np.array([3, 5, 7, 9])# 初始化
w, b = 0.0, 0.0
alpha = 0.01
epochs = 1000for i in range(epochs):y_pred = w * X + berror = y_pred - Ydw = np.mean(error * X)db = np.mean(error)w -= alpha * dwb -= alpha * dbif i % 200 == 0:cost = np.mean(error ** 2) / 2print(f"迭代{i}: w={w:.4f}, b={b:.4f}, cost={cost:.4f}")print(f"最终结果: w={w:.2f}, b={b:.2f}")

运行结果:w≈2,b≈1w \approx 2, b \approx 1w2,b1


十、可视化梯度下降过程

  1. 拟合直线随迭代变化

    • 初始直线与数据点差距较大
    • 随着更新,逐渐逼近数据
  2. 成本函数下降曲线

    • 起初下降迅速
    • 后期趋于平缓
    • 最终收敛
  3. 等高线图/三维曲面图

    • 展示 $J(w,b)$ 的形状
    • 梯度下降轨迹从高处逐步走向谷底

十一、批量梯度下降(BGD)

  • 每次迭代使用全部样本计算梯度
  • 更新方向更准确
  • 计算成本较高
  • 适合小规模数据集

👉 在后续学习中,还会遇到 随机梯度下降(SGD)小批量梯度下降(Mini-batch SGD)


十二、总结与思考

  1. 学习率决定收敛速度与稳定性
  2. 梯度下降天然具备自适应步长
  3. 线性回归的成本函数是凸函数 → 保证全局最优
  4. 梯度下降是所有机器学习优化的基石

✍️ 结语
梯度下降不仅是数学公式,更是机器学习的灵魂。掌握学习率的选择与线性回归的实现,你就真正迈出了 AI 学习的第一步。 🚀

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

相关文章:

  • 学习心得分享
  • 【OJ】C++ vector类OJ题
  • 使用国内镜像源解决 Electron 安装卡在 postinstall 的问题
  • 【Python - 类库 - BeautifulSoup】(01)“BeautifulSoup“使用示例
  • ESP-idf注册双服务器配置
  • SemiSAM+:在基础模型时代重新思考半监督医学图像分割|文献速递-深度学习人工智能医疗图像
  • 笔记:现代操作系统:原理与实现(2)
  • CLIP学习
  • 【C++】Vector完全指南:动态数组高效使用
  • Transformer核心—自注意力机制
  • 大批项目经理被迫上前线,酸爽
  • 图片在vue2中引用的方式和优缺点
  • 【数字孪生核心技术】什么是倾斜摄影?
  • 遇到 Git 提示大文件无法上传确实让人头疼
  • SVT-AV1编码器中实现WPP依赖管理核心调度
  • 门控MLP(Qwen3MLP)与稀疏混合专家(Qwen3MoeSparseMoeBlock)模块解析
  • 【开题答辩全过程】以 基于JSP的宠物医院管理系统设计为例,包含答辩的问题和答案
  • LTV-1008-TP1-G 电子元器件 LiteOn光宝 发光二极管 核心解析
  • 字符串(2)
  • 一文读懂 RAG 与 KAG:原理、工程落地与开源实战
  • scrypt 密钥派生算法(RFC7914)技术解析及源码示例
  • 流固耦合|08-1外部数据导入
  • 基于Django+Vue3+YOLO的智能气象检测系统
  • 【Python - 类库 - requests】(02)使用“requests“发起GET请求的详细教程
  • Markdown Editor开发文档(附下载地址)
  • AmbiSSL
  • 深度学习模型在边缘计算设备上的部署
  • python库 Py2exe 的详细使用(将 Python 脚本变为Windows独立软件包)
  • 孙宇晨被质疑“砸盘”川普家族项目WLFI,惨遭拉黑锁仓?自称无辜展开“维权”!
  • Process Explorer 学习笔记(第三章3.3.1):DLL和句柄