优化的基础(人工智能之数学基础 优化理论第一章 优化基础)

优化的基础(人工智能之数学基础 优化理论第一章 优化基础)

adminqwq 2026-01-01 信息披露 6 次浏览 0个评论
人工智能之数学基础 优化理论----公式关注

第一章 优化基础

前言

优化(Optimization) 是在给定条件下寻找“最佳”决策的数学过程,广泛应用于机器学习、工程设计、经济学、运筹学等领域。本文系统讲解优化问题的基本要素(目标函数、变量、约束)、局部最优 vs 全局最优、无约束与约束优化方法,并提供完整的 Python(SciPy / CVXPY / Matplotlib)代码实现与可视化。

一、优化问题的基本形式

一个标准的优化问题可表示为:

$$ \begin{aligned} \min{\mathbf{x} \in \mathbb{R}^n} \quad & f(\mathbf{x}) \\ \text{s.t.} \quad & gi(\mathbf{x}) \leq 0, \quad i = 1, \dots, m \quad \text{(不等式约束)} \\ & h_j(\mathbf{x}) = 0, \quad j = 1, \dots, p \quad \text{(等式约束)} \end{aligned} $$

其中:

$ \mathbf{x} = (x1, x2, \dots, x_n)^\top $:决策变量$ f(\mathbf{x}) $:目标函数(Objective Function),需最小化(或最大化)$ gi, hj $:约束函数(Constraints)

✅ 若无约束($ m = p = 0 $),称为无约束优化;否则为约束优化。

二、关键概念解析1. 可行解与可行域可行解:满足所有约束的 $ \mathbf{x} $可行域(Feasible Set):所有可行解的集合

$$ \mathcal{F} = \{ \mathbf{x} \mid gi(\mathbf{x}) \leq 0, \, hj(\mathbf{x}) = 0 \} $$

2. 局部最优解(Local Minimum)

存在 $ \delta > 0 $,使得对所有 $ \mathbf{y} \in \mathcal{F} \cap B_\delta(\mathbf{x}^*) $(邻域内可行点),有:

$$ f(\mathbf{x}^*) \leq f(\mathbf{y}) $$

3. 全局最优解(Global Minimum)

对所有 $ \mathbf{y} \in \mathcal{F} $,有:

$$ f(\mathbf{x}^*) \leq f(\mathbf{y}) $$

重要区别:

局部最优 ≠ 全局最优(除非目标函数是凸函数且可行域是凸集)非凸问题可能有多个局部最优解

三、无约束优化:必要与充分条件

设 $ f: \mathbb{R}^n \to \mathbb{R} $ 二阶连续可微。

1. 一阶必要条件(驻点)

若 $ \mathbf{x}^* $ 是局部极小值点,则:

$$ \nabla f(\mathbf{x}^*) = \mathbf{0} 即梯度为零(驻点)。 $$

2. 二阶充分条件

若 $ \nabla f(\mathbf{x}^) = \mathbf{0} $且 Hessian 矩阵$\mathbf{H}_f(\mathbf{x}^) $正定,则 $ \mathbf{x}^* $ 是严格局部极小值点。

✅ 正定:所有特征值 > 0

四、约束优化:KKT 条件(Karush–Kuhn–Tucker)

对于凸优化问题(目标函数凸、不等式约束函数凸、等式约束线性),KKT 条件是全局最优的充要条件。

设拉格朗日函数:

$$ \mathcal{L}(\mathbf{x}, \boldsymbol{\lambda}, \boldsymbol{\mu}) = f(\mathbf{x}) + \sum{i=1}^m \lambdai gi(\mathbf{x}) + \sum{j=1}^p \muj hj(\mathbf{x}) $$

则最优解 $ \mathbf{x}^* $ 满足:

稳定条件:$ \nabla_x \mathcal{L} = \mathbf{0} $原始可行性:$ gi(\mathbf{x}^*) \leq 0,\ hj(\mathbf{x}^*) = 0$对偶可行性:$ \lambda_i \geq 0 $互补松弛性:$ \lambdai gi(\mathbf{x}^*) = 0 $

互补松弛性:若约束不起作用($ gi < 0 $),则对应乘子 $\lambdai = 0 $

五、Python 代码实现1. 导入库import numpy as npimport matplotlib.pyplot as pltfrom mpl_toolkits.mplot3d import Axes3Dfrom scipy.optimize import minimize, Bounds, LinearConstraint, NonlinearConstraintimport cvxpy as cp # 需安装:pip install cvxpynp.random.seed(42)2. 无约束优化:寻找局部/全局最优示例1:单峰函数(凸)→ 全局最优def f1(x): return x[0]**2 + x[1]**2 # 凸函数,全局最小值在 (0,0)res1 = minimize(f1, x0=[2, 2], method='BFGS')print("凸函数优化:")print(f"解: {res1.x}, 目标值: {res1.fun:.6f}, 成功? {res1.success}")示例2:多峰函数(非凸)→ 局部最优依赖初值def f2(x): return (x[0]**2 - 1)**2 + (x[1] - x[0]**2)**2 # Rosenbrock 函数(非凸)# 不同初值x0_list = [[0, 0], [-1, 1], [2, 2]]for i, x0 in enumerate(x0_list): res = minimize(f2, x0=x0, method='BFGS') print(f"初值 {x0} → 解: {res.x}, f={res.fun:.6f}")

输出显示:不同初值可能收敛到不同局部最优(Rosenbrock 全局最小在 (1,1))

3. 可视化:目标函数与最优解# 定义非凸函数def f_vis(x, y): return (x**2 - 1)**2 + (y - x**2)**2x = np.linspace(-2, 2, 200)y = np.linspace(-1, 3, 200)X, Y = np.meshgrid(x, y)Z = f_vis(X, Y)plt.figure(figsize=(10, 4))# 等高线图plt.contour(X, Y, Z, levels=30, cmap='viridis')# 标出全局最优 (1,1)plt.plot(1, 1, 'r*', markersize=15, label='全局最优 (1,1)')plt.xlabel('x'); plt.ylabel('y')plt.title('非凸函数的等高线(多个局部最优)')plt.legend(); plt.grid(True)plt.show()4. 约束优化:使用 SciPy场景:最小化 $ f(x, y) = x^2 + y^2 $,满足$ x + y \geq 1 $def obj(x): return x[0]**2 + x[1]**2# 不等式约束:g(x) <= 0 → -(x + y - 1) <= 0def cons_ineq(x): return x[0] + x[1] - 1 # 要求 >=1 → 改写为 -cons_ineq <= 0nonlinear_cons = NonlinearConstraint(cons_ineq, lb=0, ub=np.inf) # cons_ineq >= 0res_con = minimize(obj, x0=[0, 0], method='SLSQP', constraints=[nonlinear_cons])print("\n约束优化结果:")print(f"解: {res_con.x}, f={res_con.fun:.6f}")print(f"约束值: x+y = {res_con.x.sum():.4f} (应 ≥1)")线性约束示例:投资组合优化# 最小化风险:x^T Σ x,满足 sum(x)=1, x≥0Sigma = np.array([[0.1, 0.02], [0.02, 0.2]]) # 协方差矩阵def portfolio_risk(x): return x @ Sigma @ x# 约束:sum(x) = 1linear_cons = LinearConstraint([[1, 1]], lb=1, ub=1)bounds = Bounds([0, 0], [1, 1]) # 0 ≤ x_i ≤ 1res_port = minimize(portfolio_risk, x0=[0.5, 0.5], method='SLSQP', constraints=[linear_cons], bounds=bounds)print("\n投资组合优化:")print(f"最优权重: {res_port.x}, 风险: {res_port.fun:.6f}")5. 凸优化:使用 CVXPY(声明式建模)

CVXPY 允许以数学形式直接编写优化问题,自动选择求解器。

示例:二次规划(QP)

$$ \min \frac{1}{2} x^\top P x + q^\top x \quad \text{s.t. } Gx \leq h, \ Ax = b $$

# 定义变量x = cp.Variable(2)# 参数P = np.array([[2, 0], [0, 2]])q = np.array([-2, -5])G = np.array([[-1, 0], [0, -1], [1, 1]]) # -x1 ≤ 0, -x2 ≤ 0, x1+x2 ≤ 1h = np.array([0, 0, 1])A = None # 无等式约束# 构建问题objective = cp.Minimize(0.5 * cp.quad_form(x, P) + q.T @ x)constraints = [G @ x <= h]prob = cp.Problem(objective, constraints)# 求解prob.solve()print("\nCVXPY 二次规划:")print(f"状态: {prob.status}")print(f"最优解: {x.value}")print(f"最优值: {prob.value:.6f}")凸优化优势:保证全局最优# 验证:目标函数是凸的(P 正定)eigvals = np.linalg.eigvals(P)print(f"P 的特征值: {eigvals} → 全部 >0 ⇒ 凸问题 ⇒ 全局最优")6. 全局优化:避免陷入局部最优

对于非凸问题,可使用全局优化算法:

from scipy.optimize import differential_evolutiondef nonconvex_obj(x): return np.sin(x[0]) * np.cos(x[1]) + 0.1 * (x[0]**2 + x[1]**2)# 全局搜索范围bounds = [(-5, 5), (-5, 5)]result_global = differential_evolution(nonconvex_obj, bounds)result_local = minimize(nonconvex_obj, x0=[0, 0])print("\n全局 vs 局部优化:")print(f"全局最优: x={result_global.x}, f={result_global.fun:.6f}")print(f"局部最优: x={result_local.x}, f={result_local.fun:.6f}")六、常见优化问题类型总结

类型

目标函数

约束

求解方法

是否保证全局最优

无约束优化

任意

梯度下降、牛顿法、BFGS

否(除非凸)

线性规划(LP)

线性

线性

单纯形法、内点法

二次规划(QP)

二次(凸)

线性

QP 求解器

凸优化

凸集

内点法、CVXPY

非线性规划(NLP)

非线性

非线性

SLSQP、IPOPT

全局优化

非凸

任意

遗传算法、模拟退火

近似

七、在机器学习中的应用线性回归:最小化 MSE(无约束凸优化)

$$

\min_{\mathbf{w}} \|\mathbf{y} - \mathbf{X}\mathbf{w}\|^2 $$

支持向量机(SVM):带约束的凸二次规划神经网络训练:非凸无约束优化(使用 SGD、Adam)Lasso 回归:带 L1 约束的凸优化

$$

\min{\mathbf{w}} \|\mathbf{y} - \mathbf{X}\mathbf{w}\|^2 \quad \text{s.t. } \|\mathbf{w}\|1 \leq t $$

八、总结目标函数定义了“最优”的标准;约束条件限定了可行决策的范围;局部最优是邻域内最好,全局最优是整体最好;凸优化是“好问题”——任何局部最优即全局最优;KKT 条件是约束优化的理论基石;SciPy 适合一般优化,CVXPY 适合凸优化建模;全局优化算法用于逃离局部最优陷阱。

实践建议:

先分析问题是否为凸优化;优先使用专业建模工具(如 CVXPY);对非凸问题,尝试多个初值或全局优化器;始终验证解的可行性和合理性。

后续

python过渡项目部分代码已经上传至gitee,后续会逐步更新。

资料关注

:咚咚王 gitee:https://gitee.com/wy18585051844/ai_learning

人工智能之数学基础 优化理论:第一章 优化基础

《Python编程:从入门到实践》 《利用Python进行数据分析》 《算法导论中文第三版》 《概率论与数理统计(第四版) (盛骤) 》 《程序员的数学》 《线性代数应该这样学第3版》 《微积分和数学分析引论》 《(西瓜书)周志华-机器学习》 《TensorFlow机器学习实战指南》 《Sklearn与TensorFlow机器学习实用指南》 《模式识别(第四版)》 《深度学习 deep learning》伊恩·古德费洛著 花书 《Python深度学习第二版(中文版)【纯文本】 (登封大数据 (Francois Choliet)) (Z-Library)》 《深入浅出神经网络与深度学习+(迈克尔·尼尔森(Michael+Nielsen)》 《自然语言处理综论 第2版》 《Natural-Language-Processing-with-PyTorch》 《计算机视觉-算法与应用(中文版)》 《Learning OpenCV 4》 《AIGC:智能创作时代》杜雨+&+张孜铭 《AIGC原理与实践:零基础学大语言模型、扩散模型和多模态模型》 《从零构建大语言模型(中文版)》 《实战AI大模型》 《AI 3.0》

转载请注明来自海坡下载,本文标题:《优化的基础(人工智能之数学基础 优化理论第一章 优化基础)》

每一天,每一秒,你所做的决定都会改变你的人生!

发表评论

快捷回复:

评论列表 (暂无评论,6人围观)参与讨论

还没有评论,来说两句吧...