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

推荐订阅源

Apple Machine Learning Research
Apple Machine Learning Research
Help Net Security
Help Net Security
A
About on SuperTechFans
博客园_首页
M
MIT News - Artificial intelligence
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
量子位
F
Fortinet All Blogs
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
爱范儿
爱范儿
L
LINUX DO - 最新话题
The GitHub Blog
The GitHub Blog
Hacker News - Newest:
Hacker News - Newest: "LLM"
C
Cybersecurity and Infrastructure Security Agency CISA
N
News and Events Feed by Topic
S
Security @ Cisco Blogs
A
Arctic Wolf
V
Vulnerabilities – Threatpost
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
T
Tailwind CSS Blog
The Last Watchdog
The Last Watchdog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Security Latest
Security Latest
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
H
Heimdal Security Blog
H
Hacker News: Front Page
Simon Willison's Weblog
Simon Willison's Weblog
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Recent Announcements
Recent Announcements
N
Netflix TechBlog - Medium
SecWiki News
SecWiki News
酷 壳 – CoolShell
酷 壳 – CoolShell
I
InfoQ
MyScale Blog
MyScale Blog
C
Cyber Attacks, Cyber Crime and Cyber Security
L
LangChain Blog
Stack Overflow Blog
Stack Overflow Blog
Vercel News
Vercel News
AI
AI
L
LINUX DO - 热门话题
G
Google Developers Blog
P
Proofpoint News Feed
腾讯CDC
Schneier on Security
Schneier on Security
美团技术团队
V
V2EX
PCI Perspectives
PCI Perspectives
L
Lohrmann on Cybersecurity
Jina AI
Jina AI
博客园 - 司徒正美

博客园 - 小纸条

模型微调 ruoyiai 启动指南 反向传播 numpy的使用 B 和 B+树 红黑树 ruoyi-vue 博弈论 离散化 AcWing 907. 区间覆盖 AcWing 906. 区间分组 AcWing 908 最大不相交区间数量 AcWing 905. 区间选点 AcWing 104. 货仓选址 动态规划经典题 窗口函数 1226. 哲学家进餐 1195. 交替打印字符串 1117. H2O 生成 1116. 打印零与奇偶数 关联子查询
梯度下降法
小纸条 · 2025-12-22 · via 博客园 - 小纸条

一元函数梯度下降法求极小值

设一元函数 (y = f(x)) 具有一阶连续导数,目标是求解其局部极小值点 \(x^*\) 及对应的极小值 (f(x^*))。

一、核心理论基础

  1. 导数与函数单调性的关系
    对任意点 (x_k),若 (f'(x_k) > 0),则 (f(x)) 在 (x_k) 的邻域内单调递增;若 (f'(x_k) < 0),则 (f(x)) 在 (x_k) 的邻域内单调递减
    要使迭代点 (x_{k+1}) 满足 (f(x_{k+1}) < f(x_k)),需让 (x_{k+1}) 沿函数值下降的方向移动。

  2. 微分近似与步长方向推导
    函数 \(y=f(x)\) 在点 \(x_0\) 处的导数定义为:
    \( f'(x_0) = \lim_{\Delta x \to 0} \frac{f(x_0+\Delta x) - f(x_0)}{\Delta x} \)
    由一阶微分近似,当 (\Delta x) 充分小时:

    \[f(x_k+\Delta x) - f(x_k) \approx f'(x_k)\cdot\Delta x \]

    要满足 (f(x_k+\Delta x) < f(x_k)),需 (f'(x_k)\cdot\Delta x < 0)。因为函数是单调递减,所以\(f'(x)<0\)
    可令 (\Delta x = -\alpha \cdot f'(x_k))(其中 (\alpha>0) 为步长,也称学习率),
    导数的定义也可写成
    \( f'(x_0) = \lim_{x \to x_0} \frac{f(x) - f(x_0)}{x - x_0} \)。其中:$x-x_0=\Delta x$,因此迭代公式为:

    \[\boldsymbol{x_{k+1} -x_k= - \alpha \cdot f'(x_k)} \]

  3. 收敛性条件
    若 (f(x)) 是凸函数($ f(x)=x^2$ 为凸函数,这与同济的高数定义是相反的),则梯度下降法产生的序列 ({x_k}) 必收敛到全局极小值点 (x^*);若 (f(x)) 非凸,则可能收敛到局部极小值点。

二、严格数学步骤

  1. 初始化参数

    • 选取初始迭代点 (x_0 \in \mathbb{R})
    • 设定步长 (\alpha \in (0,1))、收敛精度 (\varepsilon > 0)
    • 设定最大迭代次数 (N_{\text{max}})(防止无限迭代)
    • 令迭代次数 (k = 0)
  2. 迭代计算
    执行以下循环,直到满足收敛条件或达到最大迭代次数:

    1. 上一步已经选出初始点
    2. 计算当前点的导数 (f'(x_k));
    3. 若 (\boldsymbol{|f'(x_k)| < \varepsilon}),停止迭代,取 (x^* \approx x_k);
    4. 否则,按迭代公式更新迭代点:

    \[x_{k+1} = x_k - \alpha \cdot f'(x_k) \]

    1. 若 (k+1 > N_{\text{max}}),停止迭代(迭代发散或收敛过慢);
    2. 令 (k = k+1),返回循环第一步。
  3. 输出结果
    极小值点近似值为 \(x^*\),极小值近似值为 (f(x^*))。

三、数学实例验证

设目标函数 (f(x) = x^2 - 4x + 5),求其极小值点。

  1. 求导:(f'(x) = 2x - 4)
  2. 初始化:取 (x_0 = 0),(\alpha = 0.1),(\varepsilon = 10^{-6}),(N_{\text{max}} = 1000)
  3. 迭代过程
    • (k=0): (f'(x_0)=-4),(|f'(x_0)|=4 > \varepsilon),(x_1 = 0 - 0.1\times(-4)=0.4)
    • (k=1): (f'(x_1)=2\times0.4-4=-3.2),(|f'(x_1)|=3.2 > \varepsilon),(x_2=0.4-0.1\times(-3.2)=0.72)
    • (\dots)
    • 当 (k=42) 时,(x_{42}\approx2),(f'(x_{42})\approx0 < \varepsilon),停止迭代
  4. 结果:极小值点 (x^* \approx 2),极小值 (f(x^*) = 2^2-4\times2+5 = 1)

四、参数的数学约束

参数 数学约束 约束原因
步长 (\alpha) (0 < \alpha < \frac{2}{L})((L) 为 (f''(x)) 的上界) 保证迭代收敛,(\alpha) 过大会震荡发散,过小会收敛过慢
收敛精度 (\varepsilon) \(\varepsilon \in (10^{-8},10^{-4})\) 平衡计算精度与迭代效率
初始点 (x_0) 尽量靠近真实极小值点 减少迭代次数,避免陷入局部极小值

二元函数梯度下降法求极小值

设二元函数 (z = f(x, y)) 具有一阶连续偏导数,目标是求解其局部极小值点 \(\theta^*=(x^*,y^*)\)及对应的极小值 \(f(x^*, y^*)\)

一、核心理论基础

  1. 偏导数与函数单调性的关系
    对任意点 (\theta_k=(x_k, y_k)),若 (f_x'(x_k, y_k) > 0),则 (f(x, y)) 在 (x_k) 邻域内关于 (x) 单调递增;若 (f_x'(x_k, y_k) < 0),则关于 (x) 单调递减;
    同理,若 (f_y'(x_k, y_k) > 0),则 (f(x, y)) 在 (y_k) 邻域内关于 (y) 单调递增;若 (f_y'(x_k, y_k) < 0),则关于 (y) 单调递减。
    要使迭代点 (\theta_{k+1}=(x_{k+1}, y_{k+1})) 满足 (f(\theta_{k+1}) < f(\theta_k)),需让 (\theta_{k+1}) 沿函数值下降的方向移动。

  2. 全微分近似与步长方向推导
    函数 (z=f(x, y)) 在点 (\theta_0=(x_0, y_0)) 处的全微分定义为:

    \[dz = f_x'(x_0, y_0)\Delta x + f_y'(x_0, y_0)\Delta y \]

    其中 (x=x_0+\Delta x),(y=y_0+\Delta y)。由全微分近似,当 (\Delta x)、(\Delta y) 充分小时:

    \[f(x_0+\Delta x, y_0+\Delta y) - f(x_0, y_0) \approx f_x'(x_0, y_0)\Delta x + f_y'(x_0, y_0)\Delta y \]

    要满足 (f(x_0+\Delta x, y_0+\Delta y) < f(x_0, y_0)),需 (f_x'(x_0, y_0)\Delta x + f_y'(x_0, y_0)\Delta y < 0)。

    定义二元函数的梯度 (\nabla f(\theta) = \left( f_x'(x, y), f_y'(x, y) \right)^T),令 (\Delta\theta = \left( \Delta x, \Delta y \right)^T = -\alpha \cdot \nabla f(\theta_k))(其中 (\alpha>0) 为步长,也称学习率),代入得:

    \[\nabla f(\theta_k)^T \cdot \Delta\theta = -\alpha \cdot \|\nabla f(\theta_k)\|^2 < 0 \]

    显然满足函数值下降的要求。将 (\theta=(x, y)) 写成向量形式 (\theta = \begin{pmatrix} x \ y \end{pmatrix}),则迭代公式为:

    \[\boldsymbol{\theta_{k+1} - \theta_k = -\alpha \cdot \nabla f(\theta_k)} \]

    展开为分量形式:

    \[\begin{cases} x_{k+1} = x_k - \alpha \cdot f_x'(x_k, y_k) \\ y_{k+1} = y_k - \alpha \cdot f_y'(x_k, y_k) \end{cases} \]

    可以证明,负梯度方向 (-\nabla f(\theta)) 是该点处函数值下降最快的方向。

  3. 收敛性条件
    若 (f(x, y)) 是机器学习意义下的凸函数(如下凸函数 \((f(x, y)=x^2+y^2)\),与同济高数的上凸函数定义体系不同),则梯度下降法产生的序列 ({\theta_k}) 必收敛到全局极小值点 (\theta^*);若 (f(x, y)) 非凸,则可能收敛到局部极小值点。

二、严格数学步骤

  1. 初始化参数

    • 选取初始迭代点 (\theta_0=(x_0, y_0) \in \mathbb{R}^2)
    • 设定步长 (\alpha \in (0,1))、收敛精度 (\varepsilon > 0)(通常取 (\varepsilon \in (10^{-8}, 10^{-4})))
    • 设定最大迭代次数 (N_{\text{max}})(防止无限迭代)
    • 令迭代次数 (k = 0)
  2. 迭代计算
    执行以下循环,直到满足收敛条件或达到最大迭代次数:

    1. 上一步已经选出初始点
    2. 计算当前点的梯度 (\nabla f(\theta_k) = \left( f_x'(x_k, y_k), f_y'(x_k, y_k) \right)^T);
    3. 若 (\boldsymbol{|\nabla f(\theta_k)| < \varepsilon})(或 (|f_x'(x_k, y_k)| < \varepsilon) 且 (|f_y'(x_k, y_k)| < \varepsilon)),停止迭代,取 (\theta^* \approx \theta_k);
    4. 否则,按迭代公式更新迭代点:

      \[\theta_{k+1} = \theta_k - \alpha \cdot \nabla f(\theta_k) \]

      \(\begin{cases} x_{k+1} = x_k - \alpha \cdot f_x'(x_k, y_k) \\ y_{k+1} = y_k - \alpha \cdot f_y'(x_k, y_k) \end{cases} \)
    5. 若 (k+1 > N_{\text{max}}),停止迭代(迭代发散或收敛过慢);
    6. 令 (k = k+1),返回循环第一步。
  3. 输出结果
    极小值点近似值为 \((\theta^*=(x^*, y^*))\),极小值近似值为 \((f(x^*, y^*)\))。

三、数学实例验证

设目标函数 (f(x, y) = x^2 + y^2),求其极小值点。

  1. 求偏导数:(f_x'(x, y) = 2x),(f_y'(x, y) = 2y),梯度 (\nabla f(x, y) = (2x, 2y)^T)
  2. 初始化:取 (\theta_0=(x_0, y_0)=(1, 2)),(\alpha = 0.4),(\varepsilon = 10^{-6}),(N_{\text{max}} = 1000)
  3. 迭代过程
  • \(k=0\)\(f_x'(x_0, y_0)=2\)\(f_y'(x_0, y_0)=4\)\(\|\nabla f(\theta_0)\|=\sqrt{2^2+4^2}=\sqrt{20} > \varepsilon\)
    \(x_1 = 1 - 0.4 \times 2 = 0.2\)\(y_1 = 2 - 0.4 \times 4 = 0.4\)\(f(x_1, y_1)=0.2^2+0.4^2=0.2\)
  • \(k=1\)\(f_x'(x_1, y_1)=0.4\)\(f_y'(x_1, y_1)=0.8\)\(\|\nabla f(\theta_1)\|=\sqrt{0.4^2+0.8^2}=\sqrt{0.8} > \varepsilon\)
    \(x_2 = 0.2 - 0.4 \times 0.4 = 0.04\)\(y_2 = 0.4 - 0.4 \times 0.8 = 0.08\)\(f(x_2, y_2)=0.04^2+0.08^2=0.008\)
  • \(\dots\)
  • \(k=6\)\(x_6 \approx 0.000064\)\(y_6 \approx 0.000128\)\(f_x'(x_6, y_6) \approx 0.000128\)\(f_y'(x_6, y_6) \approx 0.000256\)
    \(\|\nabla f(\theta_6)\| \approx \sqrt{(0.000128)^2+(0.000256)^2} < \varepsilon\),停止迭代

4. 结果

\(x_*=0.000064 ,y_*=0.000128\) 时,\(f(x^*, y^*) = 0.000064^2 + 0.000128^2 = 2.048×10^-8\) 。太小了可以认为极小值点 \(\theta^* \approx (0, 0)\),极小值 \(f(x^*, y^*) = 0^2 + 0^2 = 0\)

四、参数的数学约束

参数 数学约束 约束原因
步长 (\alpha) (0 < \alpha < \frac{2}{L})((L) 为海塞矩阵 (H(f)) 的最大特征值) 保证迭代收敛,(\alpha) 过大会震荡发散,过小会收敛过慢
收敛精度 (\varepsilon) \(\(\varepsilon \in (10^{-8},10^{-4})\)\) 平衡计算精度与迭代效率
初始点 (\theta_0=(x_0, y_0)) 尽量靠近真实极小值点 减少迭代次数,避免陷入局部极小值

梯度下降法总结

  1. 核心特点:实现简单,搜索方向始终沿梯度下降方向。
  2. 主要不足
    • 收敛速度不均:远离极小值时下降快,靠近极小值时下降慢,导致后期收敛慢。
    • 路径问题:在多峰值场景下,易走“之”字形路线。找极小值慢,甚至可能来回找极小值。