Search Method

 
对比 5 种常见的一维搜索(optimization / line search)方法:

🧭 五种典型一维搜索算法

(从“只看函数值” → “利用导数” → “全局搜索”)
方法
是否用导数
是否需单峰
优势
劣势
常见应用
1️⃣ 网格搜索 (Grid Search)
简单、稳健、全局
函数评估次数多,效率低
粗搜索、全局探索
2️⃣ 三分搜索 (Ternary Search)
实现简单、收敛性好
每次需两次函数计算,略慢于黄金分割
竞赛、数学优化
3️⃣ 黄金分割搜索 (Golden-section Search)
函数评估最少、线性收敛
只能用于单峰
黑盒优化、工程试验
4️⃣ 牛顿法 (Newton’s Method)
✅(一阶和二阶)
收敛快(平方收敛)
需可导、易震荡、不全局
平滑函数精确最小化
5️⃣ 割线法 (Secant / Quasi-Newton)
✅(近似导数)
比牛顿稳健、仍快
仍需平滑性
无显式导数时的快速法

🔍 详细介绍与对比


① 网格搜索 (Grid Search)

思想:
把区间 [a,b] 均匀划分成 n 个点,计算每个点的 f(x),取最小值点。
然后可在该点附近再细化。
优点:
  • 不需要任何假设(可多峰、不连续、带噪声)。
  • 保证找到全局最小值的近似(只要网格够密)。
缺点:
  • 函数评估次数非常多。
  • 精度和计算量呈线性关系
适用场景:
函数复杂、非单峰、但区间有限,且函数调用不贵。

② 三分搜索 (Ternary Search)

前提: (f(x)) 单峰(unimodal)。
核心思想:
每次在 [a,b] 之间取两个内部点 (m_1, m_2):
  • 若 (f(m_1)<f(m_2)),说明最小点在左边;
  • 否则在右边。
    • 每次缩小区间到 2/3。
优点:
  • 简单,不需要导数。
  • 收敛速度稳定。
缺点:
  • 每次需要两次函数评估。
  • 收敛率稍慢于黄金分割。
复杂度:
 

③ 黄金分割搜索 (Golden-section Search)

改进点:
在三分搜索的基础上使用最优比例
 
以便在每步缩减时能重用上一步的一个点,只计算 1 个新函数值。
优点:
  • 无导数,最优利用函数值,评估次数最少。
  • 数值稳定,简单易实现。
  • 对非光滑函数鲁棒。
缺点:
  • 必须单峰。
  • 线性收敛(速度比牛顿慢)。
适用:
一维黑盒最优化的标准算法。

④ 牛顿法 (Newton’s Method)

前提: (f(x)) 连续可导且二阶可导。
更新公式:
 
优点:
  • 收敛快(平方收敛)。
  • 对平滑凸函数非常高效。
缺点:
  • 需要计算一阶、二阶导数。
  • 若初始点远离极小值,可能发散或跳错方向。
适用:
平滑凸函数(例如二次函数、对数似然函数等)。

⑤ 割线法 (Secant Method / Quasi-Newton)

思想:
用差分近似二阶导数,不显式计算 (f''(x))。
 
优点:
  • 不需要二阶导。
  • 收敛比线性快(约 1.618 阶)。
缺点:
  • 仍需一阶导(或有限差分近似)。
  • 对噪声、非光滑函数不稳。
适用:
有导函数但不易算二阶导时(数值优化常用)。

⚙️ 综合对比表

方法
单峰要求
需导数
函数调用数
收敛速率
全局性
实现难度
网格搜索
三分搜索
中(2/步)
线性
黄金分割搜索
最低(1/步)
线性
牛顿法
✅ (一/二阶)
超线性
★★★
割线法
✅ (一阶近似)
超线性
★★

💡 简要建议

场景
推荐算法
只知道函数值(黑盒、实验数据)
黄金分割搜索
函数平滑、可导
牛顿法 / 割线法
函数多峰或不规则
网格搜索 / 多起点策略
只想快速近似单峰最小点
三分搜索(简单好写)

📘 一句话总结

黄金分割搜索在“无导数 + 单峰 + 黑盒”场景下最优;牛顿法在“可导 + 局部凸”场景下最快;网格搜索在“多峰 + 无假设”场景下最稳;三分搜索是黄金分割的简洁变体;割线法是牛顿法的实用近似。

是否希望我接下来用一张图表+Python示例直观展示这几种搜索方法的收敛路径对比?(比如同一个目标函数、起点不同)