阿杰 👍 你问的 优化算法 是个很大类,我给你做一个系统的总结,帮你把脉络理清楚:
📌 优化算法总览
1️⃣ 什么是优化?
- 优化问题:在一组约束条件下,找到使目标函数(cost / loss / reward)最大或最小的变量值。
- 数学模型: minf(x),x∈X\min f(x), \quad x \in \mathcal{X}
- 应用范围:机器学习、运筹学、工程调度、金融投资、神经网络训练……
2️⃣ 分类
优化算法大体可以分成以下几类:
(A)精确优化(Exact Optimization)
👉 能找到全局最优解
- 线性规划(LP):单纯形法、内点法
- 整数规划(IP):分支定界、割平面法
- 凸优化:梯度下降、牛顿法、内点法
- 动态规划(DP):背包、最短路径、调度问题
(B)启发式算法(Heuristic)
👉 快速找到“可行的近似解”,但不保证全局最优
- 贪心算法
- 局部搜索(爬山法、模拟退火)
- 禁忌搜索
(C)元启发式/智能优化(Meta-heuristic)
👉 模仿自然/群体行为,适合 NP-hard 问题
- 遗传算法(GA)
- 粒子群优化(PSO)
- 蚁群算法(ACO)
- 差分进化(DE)
- 人工蜂群算法(ABC)
(D)机器学习中的优化
👉 神经网络训练、深度学习常用
- 梯度下降(GD)
- 随机梯度下降(SGD)
- 动量法(Momentum)
- RMSProp
- Adam / AdamW(目前最流行)
- L-BFGS(二阶近似)
3️⃣ 常见算法原理简述
1. 梯度下降(Gradient Descent)
- 沿着目标函数梯度下降方向更新:
xt+1=xt−η∇f(xt)x_{t+1} = x_t – \eta \nabla f(x_t)
- 适合连续、凸优化问题
2. 牛顿法(Newton’s Method)
- 利用二阶导数信息(Hessian 矩阵),收敛更快:
xt+1=xt−H−1∇f(xt)x_{t+1} = x_t – H^{-1}\nabla f(x_t)
3. 遗传算法(GA)
- 模拟“选择-交叉-变异”
- 优点:全局搜索能力强
- 缺点:收敛慢,参数难调
4. 粒子群优化(PSO)
- 模拟鸟群/鱼群觅食
- 每个“粒子”更新位置:
vit+1=ωvit+c1r1(pi−xit)+c2r2(g−xit)v_{i}^{t+1} = \omega v_i^t + c_1r_1(p_i – x_i^t) + c_2r_2(g – x_i^t)
5. 模拟退火(SA)
- 模拟固体降温过程
- 接受“更差解”的概率随温度下降而减小
- 可跳出局部最优
4️⃣ 选用建议
- 凸优化 / 线性规划:单纯形法、内点法
- 小规模整数规划:分支定界
- 复杂 NP-hard 问题:遗传算法、PSO、蚁群
- 机器学习训练:SGD、Adam
- 组合优化(路径、调度):禁忌搜索、模拟退火、遗传算法
5️⃣ Python 中常用的优化库
- scipy.optimize:线性/非线性优化、最小二乘
- cvxpy:凸优化建模
- pulp / ortools:线性规划、整数规划
- deap:遗传算法、进化计算
- pyswarm:粒子群算法
- torch.optim(PyTorch)/ tf.keras.optimizers(TensorFlow):深度学习优化器
好嘞阿杰 👍 我帮你整理了一份 优化算法对比速查表,涵盖常见算法的 原理、适用场景、优缺点,一眼就能对比:
📊 优化算法对比表
类别 | 算法 | 原理 | 适用问题 | 优点 | 缺点 |
---|---|---|---|---|---|
精确算法 | 单纯形法 (Simplex) | 在多面体顶点间移动寻找最优解 | 线性规划 (LP) | 可得全局最优解 | 大规模问题效率低 |
内点法 (Interior Point) | 从可行域内部迭代逼近最优点 | 大规模线性/凸优化 | 收敛速度快 | 实现复杂 | |
动态规划 (DP) | 递归分解+记忆化 | 背包、路径、调度 | 可得最优解 | 状态空间爆炸 | |
启发式算法 | 贪心算法 | 每步取局部最优 | Huffman编码、最小生成树 | 简单、快速 | 可能陷入局部最优 |
局部搜索/爬山法 | 邻域搜索改进解 | 排班、组合优化 | 易实现 | 易陷入局部最优 | |
模拟退火 (SA) | 模拟物理退火过程,允许接受差解 | 排序、路径优化 | 可跳出局部最优 | 收敛慢,需调参 | |
禁忌搜索 (Tabu) | 记录禁忌表避免回溯 | 排班、路径优化 | 克服局部最优 | 复杂度高 | |
智能/群体算法 | 遗传算法 (GA) | 模拟选择、交叉、变异 | NP-hard问题、调参 | 全局搜索能力强 | 参数敏感、收敛慢 |
粒子群优化 (PSO) | 模拟鸟群觅食,群体迭代更新 | 连续优化、神经网络调参 | 实现简单 | 易早熟收敛 | |
蚁群算法 (ACO) | 模拟蚂蚁觅食信息素 | TSP、路径规划 | 适合路径问题 | 收敛慢,计算量大 | |
差分进化 (DE) | 个体差分+变异交叉 | 全局优化、连续函数优化 | 收敛稳定 | 参数敏感 | |
机器学习优化 | 梯度下降 (GD) | 沿梯度下降方向更新 | 凸优化、回归 | 理论简单 | 大数据计算慢 |
随机梯度下降 (SGD) | 每次用一个样本更新 | 大规模机器学习 | 高效、在线学习 | 波动大、收敛慢 | |
动量法 (Momentum) | 引入惯性项加速收敛 | 深度学习 | 跳过局部极小值 | 需调动量参数 | |
RMSProp | 动态调整学习率 | 非凸优化 | 收敛稳定 | 参数选择敏感 | |
Adam / AdamW | 自适应学习率 + 动量 | 深度学习最常用 | 收敛快、鲁棒 | 易过拟合,需要正则化 |
📌 总结
- 想要精确解:线性规划 → 单纯形法/内点法;动态规划解离散问题
- 快速近似解:贪心、模拟退火、禁忌搜索
- 复杂NP-hard问题:遗传算法、PSO、蚁群
- 深度学习优化:Adam / AdamW > SGD
发表回复