惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

The Hacker News
The Hacker News
C
Cisco Blogs
Cyberwarzone
Cyberwarzone
N
News and Events Feed by Topic
AI
AI
P
Proofpoint News Feed
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
T
Threat Research - Cisco Blogs
S
SegmentFault 最新的问题
Webroot Blog
Webroot Blog
月光博客
月光博客
Simon Willison's Weblog
Simon Willison's Weblog
WordPress大学
WordPress大学
Blog — PlanetScale
Blog — PlanetScale
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
U
Unit 42
C
CERT Recently Published Vulnerability Notes
www.infosecurity-magazine.com
www.infosecurity-magazine.com
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
罗磊的独立博客
D
DataBreaches.Net
H
Hackread – Cybersecurity News, Data Breaches, AI and More
H
Heimdal Security Blog
S
Security @ Cisco Blogs
S
Securelist
M
MIT News - Artificial intelligence
Recorded Future
Recorded Future
Project Zero
Project Zero
K
Kaspersky official blog
Microsoft Security Blog
Microsoft Security Blog
T
Tenable Blog
Apple Machine Learning Research
Apple Machine Learning Research
P
Privacy International News Feed
小众软件
小众软件
T
Tor Project blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
F
Fortinet All Blogs
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
F
Full Disclosure
P
Palo Alto Networks Blog
Recent Commits to openclaw:main
Recent Commits to openclaw:main
Hugging Face - Blog
Hugging Face - Blog
L
LINUX DO - 最新话题
V
Vulnerabilities – Threatpost
博客园 - Franky
B
Blog RSS Feed
云风的 BLOG
云风的 BLOG
T
Troy Hunt's Blog
V
Visual Studio Blog

博客园 - 立体风

brainstorming SKILL技能完整中文翻译版 更新 claude code 官方插件市场 Sigmoid 函数的数学起源与定义详解 路径在powershell 配置文件 Profile 和 环境变量 PATH 的区别 当AI构建自身 nana gui库的回调函数 Nana c++ gui库的对话框函数 -- 理解 nana 的运行机制 介绍 MSVC 的编译命令/ Zc CMake 变量 ${CMAKE_CURRENT_BINARY_DIR} 学习 nana c++ 库 (一) AutoHotkey v2 的源码学习路线 Visual Studio 中行号右边的黄色竖条 大O表示法推导 allocate 中为什么有两个L vs的cl.exe 编译器 c++20 基本配置 IT高频词 address Python Install Manager (PIM,官方安装管理器)简介 debian 中 contrib 软件仓库 debian 版本号及 apt 命令对软件的区分 sysctl的历史及常用命令 极限运算的法则 TeX 的 ctex 宏包的基本用法 XeLaTeX 的基本用法 XeLaTeX 介绍 为什么梯度向量 ∇f 指向函数值增长最快的方向 三角函数的余弦定理的证明 向量点积的几何定义的证明 方向导数公式的证明 仿射函数的定义及用途 凸集的定义及证明 在 LaTeX 公式中处理英文单词 梯度下降法 (Gradient Descent)的数学原理。 向量形式表达最小二乘法 线性回归模型的核心数学表达式 risidual 音标和本义 coefficients的音标及本义(线性模型)
梯度下降法简介
立体风 · 2025-09-06 · via 博客园 - 立体风

梯度下降法(Gradient Descent)是一种非常重要的优化算法,常用于机器学习中,用来寻找函数的最小值。它的核心思想很简单:就像一个人下山一样,每一步都朝着当前位置最陡峭的方向(即梯度的反方向)走,最终就能走到山谷的最低点。

梯度(Gradient)是什么?

要理解梯度下降,首先要明白“梯度”这个概念。

  • 梯度是一个向量,它指向函数值增长最快的方向。
  • 梯度的大小表示函数在该方向上的变化率。
  • 对于一个多元函数(有多个输入变量),梯度向量的每个分量是函数对相应变量的偏导数

例如,对于一个简单的函数 \(J(w, b) = w^2 + b^2\)

  • 函数对 \(w\) 的偏导数是 \(\frac{\partial J}{\partial w} = 2w\)
  • 函数对 \(b\) 的偏导数是 \(\frac{\partial J}{\partial b} = 2b\)
  • 梯度向量就是 \((\frac{\partial J}{\partial w}, \frac{\partial J}{\partial b}) = (2w, 2b)\)

这个向量 \((2w, 2b)\) 就指明了在任意点 \((w, b)\) 函数值增长最快的方向。

梯度下降的数学原理

在机器学习中,我们的目标是最小化损失函数(Loss Function)\(J(w)\),它衡量了模型的预测值与真实值之间的差距。这里的 \(w\) 就是模型的参数(比如线性回归中的系数和截距)。

梯度下降法的基本思想是迭代地更新参数 \(w\),使其沿着损失函数梯度的反方向移动。

每次迭代的更新公式可以表示为:

\[w := w - \alpha \nabla J(w) \]

我们来分解一下这个公式:

  • \(w\):需要优化的参数。
  • \(:=\):表示赋值操作,即用右侧计算出的新值来更新左侧的变量。
  • \(\alpha\):这被称为学习率(Learning Rate),是一个很小的正数。它控制着我们每一步移动的步长
    • 如果 \(\alpha\) 太大,可能会跳过最小值点,导致算法不收敛。
    • 如果 \(\alpha\) 太小,算法会收敛得非常慢。
  • \(\nabla J(w)\):这是损失函数 \(J(w)\)梯度。它告诉我们当前参数 \(w\) 所在位置,函数值增长最快的方向。
  • \(-\alpha \nabla J(w)\):这部分是参数的更新量。因为梯度指向增长最快的方向,所以我们沿着其反方向走,才能到达函数的最小值。

梯度下降的步骤

  1. 初始化参数:随机选择一组参数 \(w\) 的初始值。
  2. 计算梯度:计算损失函数在当前参数 \(w\) 上的梯度 \(\nabla J(w)\)
  3. 更新参数:利用更新公式 \(w := w - \alpha \nabla J(w)\) 来更新参数。
  4. 重复:重复步骤2和3,直到满足某个停止条件(例如,梯度非常小、损失函数变化很小或达到最大迭代次数)。

线性回归中的梯度下降

以最简单的线性回归为例,其损失函数是均方误差(Mean Squared Error, MSE)

\[J(w) = \frac{1}{2n} \sum_{i=1}^{n}(y_i - (w_0 + w_1x_i))^2 \]

为了使用梯度下降法,我们需要计算 \(J(w)\) 对参数 \(w_0\)\(w_1\) 的偏导数:

\[\frac{\partial J}{\partial w_0} = -\frac{1}{n} \sum_{i=1}^{n}(y_i - \hat{y}_i) \]

\[\frac{\partial J}{\partial w_1} = -\frac{1}{n} \sum_{i=1}^{n}(y_i - \hat{y}_i)x_i \]

然后,我们就可以根据这些梯度来迭代更新 \(w_0\)\(w_1\)

\[w_0 := w_0 - \alpha (-\frac{1}{n} \sum_{i=1}^{n}(y_i - \hat{y}_i)) \]

\[w_1 := w_1 - \alpha (-\frac{1}{n} \sum_{i=1}^{n}(y_i - \hat{y}_i)x_i) \]

通过不断重复这个过程,参数 \(w_0\)\(w_1\) 就会逐渐接近使得损失函数最小的最优解。


总结

梯度下降法通过迭代地朝着损失函数梯度反方向移动,来逐步逼近最优参数,从而最小化损失函数。它是一种通用且强大的优化工具,是许多复杂机器学习模型训练的基础。