郑州大学科技园手机网站建设网站开发后台能用c语言吗
郑州大学科技园手机网站建设,网站开发后台能用c语言吗,学seo,网站备案太麻烦人工智能之数学基础 优化理论
第四章 凸函数与非凸函数----公式关注公众号 文章目录人工智能之数学基础 优化理论前言一、凸函数的数学定义1. 凸集#xff08;Convex Set#xff09;2. 凸函数#xff08;Convex Function#xff09;3. 严格凸 强凸二、凸函数的判别方…人工智能之数学基础 优化理论第四章 凸函数与非凸函数----公式关注公众号文章目录人工智能之数学基础 优化理论前言一、凸函数的数学定义1. 凸集Convex Set2. 凸函数Convex Function3. 严格凸 强凸二、凸函数的判别方法1. 一阶条件可微函数2. 二阶条件二阶可微三、常见凸函数 vs 非凸函数四、AI 中的非凸优化挑战与应对1. 为什么 AI 问题是非凸的2. 非凸优化的典型地貌3. AI 中处理非凸优化的策略五、Python 代码实现1. 导入库2. 凸性判别符号计算SymPy3. 可视化凸 vs 非凸函数(a) 一维函数(b) 二维函数Rosenbrock非凸 vs 二次型凸4. 优化行为对比凸 vs 非凸5. 神经网络非凸损失的优化PyTorch 简例6. 鞍点检测Hessian 特征值分析六、总结凸性在 AI 中的意义补充后续资料关注前言在优化理论中凸性Convexity是决定问题“难易程度”的核心属性。凸优化问题具有全局最优解可高效求解的优良性质而非凸问题则充满局部极小值、鞍点等挑战。本文系统讲解凸函数的定义与判别方法、常见凸/非凸函数示例、AI 中非凸优化的典型场景与应对策略并提供完整的PythonNumPy / Matplotlib / SciPy / SymPy代码实现与可视化。一、凸函数的数学定义1. 凸集Convex Set集合 $ \mathcal{C} \subseteq \mathbb{R}^n $ 是凸集若对任意 $ \mathbf{x}, \mathbf{y} \in \mathcal{C} $ 和 $ \theta \in [0,1] $有θ x ( 1 − θ ) y ∈ C \theta \mathbf{x} (1 - \theta) \mathbf{y} \in \mathcal{C}θx(1−θ)y∈C✅ 直观集合内任意两点连线仍在集合内如球、多面体非凸如月牙形2. 凸函数Convex Function函数 $ f: \mathbb{R}^n \to \mathbb{R} $ 是凸函数若其定义域为凸集且对任意 $ \mathbf{x}, \mathbf{y} \in \text{dom}(f) $ 和 $ \theta \in [0,1] $有f ( θ x ( 1 − θ ) y ) ≤ θ f ( x ) ( 1 − θ ) f ( y ) f(\theta \mathbf{x} (1 - \theta) \mathbf{y}) \leq \theta f(\mathbf{x}) (1 - \theta) f(\mathbf{y})f(θx(1−θ)y)≤θf(x)(1−θ)f(y)几何意义函数图像上任意两点连线位于图像上方3. 严格凸 强凸严格凸不等式严格成立$ $当 $ \mathbf{x} \ne \mathbf{y}, \theta \in (0,1) $强凸存在 $ \mu 0 $ 使得f ( y ) ≥ f ( x ) ∇ f ( x ) ⊤ ( y − x ) μ 2 ∥ y − x ∥ 2 → 保证唯一全局最小值加速收敛 f(\mathbf{y}) \geq f(\mathbf{x}) \nabla f(\mathbf{x})^\top (\mathbf{y} - \mathbf{x}) \frac{\mu}{2} \|\mathbf{y} - \mathbf{x}\|^2 → 保证唯一全局最小值加速收敛f(y)≥f(x)∇f(x)⊤(y−x)2μ∥y−x∥2→保证唯一全局最小值加速收敛二、凸函数的判别方法1. 一阶条件可微函数$ f $ 是凸函数 ⇔ 对所有 $ \mathbf{x}, \mathbf{y} \in \text{dom}(f) $f ( y ) ≥ f ( x ) ∇ f ( x ) ⊤ ( y − x ) f(\mathbf{y}) \geq f(\mathbf{x}) \nabla f(\mathbf{x})^\top (\mathbf{y} - \mathbf{x})f(y)≥f(x)∇f(x)⊤(y−x)✅ 即函数始终在其切平面之上2. 二阶条件二阶可微$ f $ 是凸函数 ⇔Hessian 矩阵半正定$ \nabla^2 f(\mathbf{x}) \succeq 0 $对所有 $ \mathbf{x} \in \text{dom}(f) $半正定所有特征值 $ \lambda_i \geq 0 $正定强凸所有 $\lambda_i 0 $ 对标量函数 $ f: \mathbb{R} \to \mathbb{R} $即 $ f’(x) \geq 0 $三、常见凸函数 vs 非凸函数函数类型表达式凸性说明二次函数$ f(x) ax^2 bx c $$ a \geq 0 $ 时凸$ a 0 $强凸指数函数$ f(x) e^{ax} $凸任意 $ a $Hessian $ a^2 e^{ax} \geq 0 $负熵$ f(x) x \log x $$( x 0 $凸信息论基础范数$ f(\mathbf{x}) |\mathbf{x}|_p $凸$ p \geq 1 $$ p1,2 $ 常用最大值函数$ f(\mathbf{x}) \max_i x_i $凸分段线性Log-sum-exp$ f(\mathbf{x}) \log \sum_i e^{x_i} $凸softmax 的平滑近似ReLU$ f(x) \max(0, x) $凸神经网络激活函数正弦函数$ f(x) \sin x $非凸振荡多极值Rosenbrock 函数$f(x,y) (a-x)^2 b(y-x2)2 $非凸经典测试函数神经网络损失$ \mathcal{L}(\mathbf{W}) $非凸参数耦合导致四、AI 中的非凸优化挑战与应对1. 为什么 AI 问题是非凸的神经网络多层非线性变换 → 损失函数高度非凸矩阵分解如推荐系统中的 $ \min_{U,V} |X - UV\top|_F2 $ → 双线性项非凸聚类K-means 目标函数非凸2. 非凸优化的典型地貌局部极小值Local Minima邻域内最小但非全局鞍点Saddle Points某些方向上升某些下降高维中更常见平坦区域Plateaus梯度接近零优化停滞关键发现深度学习大多数“坏”临界点是鞍点而非局部极小随机梯度噪声有助于逃离3. AI 中处理非凸优化的策略策略原理工具/算法随机初始化从不同起点开始增加找到好解概率多次训练取 best动量 自适应学习率加速穿越平坦区逃离鞍点Adam, RMSProp批量归一化BN平滑损失景观减少内部协变量偏移torch.nn.BatchNorm残差连接缓解梯度消失改善优化地形ResNet课程学习从简单样本开始逐步增加难度Curriculum Learning二阶方法近似利用曲率信息计算昂贵K-FAC, Shampoo全局优化启发式探索整个空间遗传算法、贝叶斯优化超参调优✅实践共识尽管非凸现代深度学习优化器如 Adam在实践中表现惊人地好——“优化容易泛化难”五、Python 代码实现1. 导入库importnumpyasnpimportmatplotlib.pyplotaspltfrommpl_toolkits.mplot3dimportAxes3Dimportsympyasspfromscipy.optimizeimportminimize np.random.seed(42)2. 凸性判别符号计算SymPy# 定义符号变量x,ysp.symbols(x y)# 示例1凸函数 f(x) x^2f1x**2f1_hessiansp.diff(f1,x,2)print(ff1(x) x², f(x) {f1_hessian}→ 凸≥0)# 示例2非凸函数 f(x) sin(x)f2sp.sin(x)f2_hessiansp.diff(f2,x,2)print(ff2(x) sin(x), f(x) {f2_hessian}→ 非凸符号不定)# 示例3二元函数 f(x,y) x^2 y^2凸f3x**2y**2hess_f3sp.hessian(f3,(x,y))eigvals_f3hess_f3.eigenvals()print(ff3(x,y) x²y², Hessian 特征值:{list(eigvals_f3.keys())}→ 正定 ⇒ 强凸)# 示例4Rosenbrock 函数非凸a,b1,100f4(a-x)**2b*(y-x**2)**2hess_f4sp.hessian(f4,(x,y))# 在 (0,0) 处计算 Hessianhess_at_0hess_f4.subs({x:0,y:0})eigvals_f4[ev.evalf()forevinhess_at_0.eigenvals().keys()]print(fRosenbrock 在 (0,0) 处 Hessian 特征值:{eigvals_f4}→ 一正一负 ⇒ 鞍点)3. 可视化凸 vs 非凸函数(a) 一维函数xnp.linspace(-2,2,400)plt.figure(figsize(12,4))# 凸函数x²plt.subplot(1,3,1)plt.plot(x,x**2,b-,labelr$f(x)x^2$)plt.title(凸函数开口向上)plt.grid(True);plt.legend()# 非凸函数sin(x)plt.subplot(1,3,2)plt.plot(x,np.sin(x),r-,labelr$f(x)\sin x$)plt.title(非凸函数振荡)plt.grid(True);plt.legend()# 非凸函数x^4 - x^2plt.subplot(1,3,3)plt.plot(x,x**4-x**2,g-,labelr$f(x)x^4 - x^2$)plt.title(非凸函数多极值)plt.grid(True);plt.legend()plt.tight_layout()plt.show()(b) 二维函数Rosenbrock非凸 vs 二次型凸# 定义函数defrosenbrock(xy,a1,b100):x,yxyreturn(a-x)**2b*(y-x**2)**2defquadratic(xy):x,yxyreturnx**22*y**2# 凸椭圆等高线# 网格xnp.linspace(-2,2,200)ynp.linspace(-1,3,200)X,Ynp.meshgrid(x,y)Z_rosennp.array([rosenbrock([xi,yi])forxi,yiinzip(X.ravel(),Y.ravel())]).reshape(X.shape)Z_quadnp.array([quadratic([xi,yi])forxi,yiinzip(X.ravel(),Y.ravel())]).reshape(X.shape)plt.figure(figsize(12,5))# Rosenbrock非凸plt.subplot(1,2,1)contour1plt.contour(X,Y,Z_rosen,levelsnp.logspace(-0.5,3.5,20),cmapviridis)plt.clabel(contour1,inlineTrue,fontsize8)plt.plot(1,1,r*,markersize15,label全局最小 (1,1))plt.title(Rosenbrock 函数非凸峡谷地形)plt.xlabel(x);plt.ylabel(y)plt.legend();plt.grid(True)# 二次型凸plt.subplot(1,2,2)contour2plt.contour(X,Y,Z_quad,levels20,cmapplasma)plt.clabel(contour2,inlineTrue,fontsize8)plt.plot(0,0,r*,markersize15,label全局最小 (0,0))plt.title(二次型函数凸椭圆等高线)plt.xlabel(x);plt.ylabel(y)plt.legend();plt.grid(True)plt.tight_layout()plt.show()4. 优化行为对比凸 vs 非凸# 使用不同初值优化 Rosenbrockinitial_points[[-1,1],[0,0],[2,2]]results[]forx0ininitial_points:resminimize(rosenbrock,x0,methodBFGS)results.append((x0,res.x,res.fun,res.success))print(Rosenbrock 优化结果非凸:)forx0,x_opt,f_opt,successinresults:print(f初值{x0}→ 解{x_opt}, f{f_opt:.6f}, 成功?{success})# 优化凸函数应总成功res_convexminimize(quadratic,x0[2,-1],methodBFGS)print(f\n凸函数优化: 解{res_convex.x}, f{res_convex.fun:.6f}) 输出显示非凸问题对初值敏感可能失败或陷入局部最优凸问题稳定收敛。5. 神经网络非凸损失的优化PyTorch 简例importtorchimporttorch.nnasnnimporttorch.optimasoptim# 构造简单非线性回归np.random.seed(0)Xnp.random.randn(100,1).astype(np.float32)y(X.squeeze()**30.5*X.squeeze()).astype(np.float32)# 两层神经网络非凸modelnn.Sequential(nn.Linear(1,10),nn.ReLU(),nn.Linear(10,1))criterionnn.MSELoss()optimizeroptim.Adam(model.parameters(),lr0.01)losses[]forepochinrange(200):optimizer.zero_grad()outputsmodel(torch.tensor(X))losscriterion(outputs.squeeze(),torch.tensor(y))loss.backward()optimizer.step()losses.append(loss.item())# 绘制损失曲线plt.figure(figsize(8,4))plt.plot(losses,b-)plt.title(神经网络训练损失非凸优化)plt.xlabel(Epoch);plt.ylabel(Loss)plt.grid(True)plt.show()print(f最终损失:{losses[-1]:.6f})✅ 尽管损失函数非凸Adam 仍能有效降低损失。6. 鞍点检测Hessian 特征值分析# 在 Rosenbrock 的 (0,0) 处计算数值 Hessiandefnumerical_hessian(func,x,eps1e-5):nlen(x)hessnp.zeros((n,n))foriinrange(n):forjinrange(n):dxnp.zeros(n);dx[i]eps dynp.zeros(n);dy[j]eps hess[i,j](func(xdxdy)-func(xdx)-func(xdy)func(x))/(eps**2)returnhess x_saddlenp.array([0.0,0.0])hess_numnumerical_hessian(rosenbrock,x_saddle)eigvals_numnp.linalg.eigvals(hess_num)print(fRosenbrock 在 (0,0) 处数值 Hessian 特征值:{eigvals_num})print(→ 一正一负 ⇒ 鞍点)六、总结凸性在 AI 中的意义属性凸优化非凸优化如深度学习全局最优可保证通常不能算法收敛理论保证实践有效理论有限初值敏感否是典型问题SVM、Lasso、LP/QPDNN、GAN、强化学习求解工具CVXPY、MOSEKPyTorch、TensorFlow关键洞见凸性是“好问题”的标志但现实世界多是非凸的深度学习的成功部分源于其损失景观的“良性”非凸性鞍点多局部极小少理解凸性有助于设计更好的模型和正则化如使用凸代理损失非凸 ≠ 不可解现代优化器 良好实践 实用解。补充没有其他机器学习相关基础的只需要理解理论部分内容知道其含义是什么就足够了后续会逐渐补充机器学习到大模型的整个过程从理论部分到整体的实现理论部分相当于理解其原理过程其数学为解决更多的问题提供解决问题的基础以及模型的构建基础。后续python过渡项目部分代码已经上传至gitee后续会逐步更新。资料关注公众号咚咚王giteehttps://gitee.com/wy18585051844/ai_learning《Python编程从入门到实践》《利用Python进行数据分析》《算法导论中文第三版》《概率论与数理统计第四版 (盛骤) 》《程序员的数学》《线性代数应该这样学第3版》《微积分和数学分析引论》《西瓜书周志华-机器学习》《TensorFlow机器学习实战指南》《Sklearn与TensorFlow机器学习实用指南》《模式识别第四版》《深度学习 deep learning》伊恩·古德费洛著 花书《Python深度学习第二版(中文版)【纯文本】 (登封大数据 (Francois Choliet)) (Z-Library)》《深入浅出神经网络与深度学习(迈克尔·尼尔森MichaelNielsen》《自然语言处理综论 第2版》《Natural-Language-Processing-with-PyTorch》《计算机视觉-算法与应用(中文版)》《Learning OpenCV 4》《AIGC智能创作时代》杜雨张孜铭《AIGC原理与实践零基础学大语言模型、扩散模型和多模态模型》《从零构建大语言模型中文版》《实战AI大模型》《AI 3.0》