想象你被蒙上眼睛,空降到一片陌生地形,任务只有一个:找到整片区域的最低点,那里埋着宝藏。你什么都看不见,只能靠脚尖感受坡度,一步步往低处走。如果你落在碗形地形里,无论站在碗沿的哪一侧,只要一直向下,最终一定会滚到碗底——那是全区域唯一的最低点。但如果你落在丘陵地带,麻烦就来了:你可能走进一个小洼地,四周都是坡,你以为自己到达了终点,其实翻过山丘还有更深的谷。这个“碗”与“丘陵”的区别,就是数学里“凸”与“非凸”的区别。凸优化研究的正是这样一类“碗形问题”:只要可行域是凸集、目标函数是凸函数、约束是凸约束,那么局部最低点就是全局最低点,求解像滚珠入碗一样又快又稳。机器学习里大量损失函数——线性回归、逻辑回归、SVM——都被刻意设计成“碗形”,就是为了享受这份确定性。下面,就让我们跟着蒙眼探险家小优,一起去认识凸优化这张藏宝图。

岗位关联

建模初期判断问题难度、选择求解算法、设计可收敛的损失函数——凸优化思维是 AI 工程师的“地形侦察术”,让你少走弯路、多出稳定好解。

目录
  1. 可视化演示
  2. 凸优化核心价值
  3. 凸集判定方法
  4. 凸函数识别
  5. 凸约束体系
  6. 损失函数设计
  7. 求解算法保障
  8. 建模实战价值
  9. AI 应用场景
  10. Python 演示
  11. 常见误区
  12. 面试题

可视化演示

展示系统处理流水线、实时性能指标曲线及多方案对比分析,包含数据流转、吞吐延迟监控与方案评估。

本节配有交互动效(进入视口后自动加载,约 3KB)。

系统可视化 处理流程:输入→处理→模型→输出 性能监控:实时指标 P=L×T

凸优化核心价值

蒙眼探险家小优拿到寻宝任务后,最关心一件事:脚下的地形会不会骗人?如果是一片丘陵,他可能在一个小洼地里转圈圈,误以为那是最低点;如果是碗形地形,他只需要一路向下,终点必是唯一碗底。所谓凸优化问题,就是数学上严格刻画“碗形”的一类问题:目标函数 $f(x)$ 是凸函数(碗面),可行域 $C$ 是凸集(碗口的规矩范围),二者叠加,就得到了“怎么走都不会迷路”的寻宝地图。

在机器学习里,训练模型本质上就是在解一个优化问题:找到一组参数,让损失函数最小。线性回归、逻辑回归、SVM 这些经典模型的求解,最终都落到一个凸优化问题上。凸性带来的不是“碰巧能找到好解”,而是三个硬保证:第一,局部最优就是全局最优——没有浅坑骗你;第二,算法高效——梯°下降等一阶方法从任意起点都能收敛;第三,结果稳定——换个初始化,解还是同一个,实验可复现。

正式地,凸优化问题写成下面的标准形式:

所以对小优来说,凸优化意味着:只要地形是碗、活动范围是规矩区域,蒙眼向下走就是最聪明的策略。对 AI 工程师来说,这意味着建模时优先把问题构造成凸问题,能省下大把“对抗随机性”的精力。

min⁡x∈Cf(x)\displaystyle \min_{x \in C} f(x)
这个式子说:在凸集 $C$ 内找一个点 $x$,让凸函数 $f$ 的值最小。只要“碗面”和“碗口范围”都满足凸性,小优闭着眼也能走到宝藏。
  1. min(求最小值)在允许的范围内寻找使目标函数值最小的那个点,相当于“找最低点”。
    min⁡x∈C\min_{x \in C}
  2. x(决策变量)我们要找的答案,在机器学习里通常是模型的权重向量。
    x∈Rdx \in \mathbb{R}^d
  3. f(x)(目标函数)度量“当前位置有多高”的函数,在机器学习里是损失函数,值越小代表模型越好。
    f:Rd→Rf: \mathbb{R}^d \to \mathbb{R}
  4. C(可行域)答案被限制在集合 $C$ 内,$C$ 必须是凸集,相当于探险时双脚只能踩在“规矩区域”里。
    C⊆Rd,C 为凸集C \subseteq \mathbb{R}^d, \quad C \text{ 为凸集}

凸集判定方法

小优的活动范围是有讲究的。如果主办方把寻宝区域划成圆形或矩形,他在场地里任意站两个点,用一根拉紧的绳子连接,绳子上每个点都稳稳落在场地里——这种区域走起来放心。但如果区域是月牙形或圆环,绳子中段会悬到区域外面,他可能被“地形”骗到边界外。前者就是凸集,后者不是。

数学上,凸集的定义可以写成一句话:集合内任意两点之间的整条线段,仍然完全落在集合内。常见凸集包括:实轴上的区间 $[a,b]$、整个 $\mathbb{R}^d$ 空间、超平面(一面墙)、半空间(墙的一侧)、球(到圆心距离不超过半径的点集)、多面体(一组线性不等式围出的区域)。判断一个集合是否为凸集,最直接的办法就是回到定义,检查任意连线是否越界。

凸集还有一个非常实用的性质:任意多个凸集的交集仍然是凸集。多个约束叠加时,可赌区域只是被“切”得更小,却不会变成月牙形或沙漏形。这就像场地里同时立起多道围栏,围出来的公共区域依然规矩——只要每道围栏本身是直的或向外凸的。

∀x,y∈C, ∀λ∈[0,1]:λx+(1−λ)y∈C\displaystyle \forall x,y \in C,\ \forall \lambda \in [0,1]: \quad \lambda x + (1-\lambda)y \in C
这个式子描述的是“任意两点连线不越界”:$x$ 和 $y$ 是集合里任意两个点,把它们按比例混合,得到的点仍然在集合里。
  1. ∀x,y∈C(任取两点)从集合里随便挑两个位置,对应小优站的两个点。
    ∀x,y∈C\forall x,y \in C
  2. ∀λ∈[0,1](任取混合比例)$\lambda$ 决定连线上的位置,0 表示在 $x$ 处,1 表示在 $y$ 处,0.5 表示正中间。
    λ∈[0,1]\lambda \in [0,1]
  3. λx+(1−λ)y(连线上的点)两个点按比例加权混合,当 $\lambda$ 从 0 滑到 1,这个点就扫过整条线段。
    λx+(1−λ)y\displaystyle \lambda x + (1-\lambda)y
  4. ∈C(仍然在集合内)要求线段上任何一个位置都不越界,这就是“连线封闭性”。
    ∈C\in C

凸函数识别

如果说凸集规定了小优能去哪,凸函数则刻画了地形的“碗形程度”。把函数的图像想象成地形的剖面:凸函数的剖面像一个碗,而凹函数像山包。怎么识别?在图像上任取两点,拉一根笔直的弦,如果弦永远在曲线上方,这就是凸函数。换句话说,曲线上任意两点之间的函数值,不会高于连线的值——“弦在上、弧在下”。

这个弦在上方的性质,用数学语言写就是著名的 Jensen 不等式:

对于可导函数,还有更省事的二阶判据:一元函数 $f''(x) \ge 0$,多元函数 Hessian 矩阵半正定:

除了这些判据,凸函数还像乐高积木一样可以组合:凸函数的非负加权和仍是凸函数;凸函数与仿射映射复合(如 $f(Ax+b)$)仍是凸函数;多个凸函数逐点取最大仍是凸函数。这些“保凸运算”让工程师不必每个函数都从头验证,而是像搭积木一样拼出复杂的凸损失。

f(λx+(1−λ)y)≤λf(x)+(1−λ)f(y)\displaystyle f(\lambda x + (1-\lambda)y) \le \lambda f(x) + (1-\lambda) f(y)
$\nabla^2 f(x)$ 是二阶导数组成的矩阵(海森矩阵),$\succeq$ 表示半正定(所有特征值非负)。它好比检查碗壁的每一处是否都在“向上弯”。
  1. ∇²f(x)(海森矩阵)多元函数所有二阶偏导数排成的矩阵,刻画局部弯曲程度。
    ∇2f(x)\nabla^2 f(x)
  2. ⪰(半正定)矩阵所有特征值大于等于零,等价于沿任意方向看都是“向上弯”。
    ⪰\succeq
  3. 一元特例 f''(x)≥0只有一个变量时,海森矩阵退化为普通二阶导数。
    f′′(x)≥0f''(x) \ge 0

凸约束体系

探险规则不是无限自由的。主办方会立围栏:有的围栏说“你不能越过这条等高线”(不等式约束),有的说“你必须踩在这条小径上”(等式约束)。关键问题是:这些围栏会不会把活动区域圈成月牙形?如果会,小优的好运气就结束了。

答案在约束函数的形状里。形如 $g_i(x) \le 0$ 的不等式约束,当 $g_i$ 是凸函数时,它圈出的区域 $\{x : g_i(x) \le 0\}$ 一定是凸集;形如 $h_j(x) = 0$ 的等式约束,只有 $h_j$ 是仿射函数(线性加常数)时才保凸。多个约束合在一起,可行域就是这些凸集的交集——根据凸集理论,交集仍然凸。于是“规则再多,地盘依然规矩”。

一个完整的凸优化标准形式长这样:

对小优来说,凸约束体系意味着主办方无论加多少道“规矩围栏”,只要每道围栏形状正确,活动区域就一定是凸的。对工程师来说,这意味着在业务约束很多时,只要逐条检查 $g_i$ 凸、$h_j$ 仿射,就可以放心继续用凸优化求解。

C={x∈Rd∣gi(x)≤0, i=1,…,m;hj(x)=0, j=1,…,p}\displaystyle C = \{ x \in \mathbb{R}^d \mid g_i(x) \le 0,\ i=1,\dots,m; \quad h_j(x) = 0,\ j=1,\dots,p \}
可行域 $C$ 是所有约束的公共解集。要求 $g_i$ 为凸函数、$h_j$ 为仿射函数,集合 $C$ 才是凸集。
  1. 集合构造(大括号)大括号把所有满足条件的点收集起来,形成可行域。
    {x∣⋯ }\{ x \mid \cdots \}
  2. 不等式约束 g_i(x)≤0(围栏内侧)目标必须站在第 $i$ 道围栏的内侧;$g_i$ 凸时该区域是凸集。
    gi(x)≤0g_i(x) \le 0
  3. 等式约束 h_j(x)=0(必经小径)目标必须恰好落在这条小径上;只有仿射等号约束才保凸。
    hj(x)=0h_j(x) = 0
  4. i=1..m, j=1..p(约束数量)围栏和小道的编号范围,约束个数可以是零。
    i=1,…,m;j=1,…,pi=1,\dots,m; \quad j=1,\dots,p

损失函数设计

为什么机器学习工程师痴迷于把损失函数设计成凸的?因为损失函数就是训练时的“寻宝地形”。如果地形是丘陵,模型很可能在浅坑里自以为是地停下;如果地形是碗,梯度下降从任何起点出发都会滚到唯一的碗底。设计一个凸损失函数,等于在建模型之前,先把寻宝地形修成了碗。

线性回归是最经典的例子。它的均方误差(MSE)损失是:

同样的“修碗术”也用在逻辑回归和 SVM 上:逻辑回归用交叉熵损失,由于 sigmoid 函数的对数复合性质,整体关于参数仍是凸的;SVM 用合页损失 $\max(0, 1 - y_i f(x_i))$,这是凸函数逐点取最大得到的,天然保凸。工程师选这些损失,不是巧合,而是刻意为之——把训练问题变成凸优化,享受“随便起点都能到碗底”的待遇。

L(θ)=1n∑i=1n(yi−θ⊤xi)2\displaystyle \mathcal{L}(\theta) = \frac{1}{n} \sum_{i=1}^{n} \left( y_i - \theta^{\top} x_i \right)^2
这个损失关于参数 $\theta$ 是开口向上的二次函数,它的 Hessian 矩阵恒半正定,所以是凸函数。
  1. y_i(真实答案)第 $i$ 个样本的真实标签。
    yiy_i
  2. θᵀx_i(模型预测)权重与特征的线性组合,也就是模型的预测值。
    θ⊤xi\theta^{\top} x_i
  3. 平方(误差放大)预测与真实的差取平方,对大误差施加更重的惩罚,同时保证关于 $\theta$ 是二次结构。
    (yi−θ⊤xi)2\left( y_i - \theta^{\top} x_i \right)^2
  4. 1/n Σ(全体平均)把所有样本的平方误差加起来取平均,得到“平均碗深”。
    1n∑i=1n\frac{1}{n} \sum_{i=1}^{n}

求解算法保障

蒙眼的小优在碗形地形上要怎么走?办法很简单:感受脚下最陡的上升方向,然后朝反方向迈步,一直重复。这就是梯度下降。在碗形地形上,这个方法有理论保障:只要步长迈得不太大,每步都在逼近碗底,而且最坏情况需要多少步都被算得明明白白。

梯度下降的更新规则是:

凸性还给出了收敛速率的硬指标。对光滑凸函数,梯度下降第 $T$ 步的误差有个明确上界:

对小优来说,碗形地形的意义是:闭眼一路向下就有保底承诺,不需要“多试几个起点”的运气成分。对工程师来说,凸性保证了训练曲线理论上单调下降、迭代次数有上界,这让“训练多久能好”变得可预测。

θt+1=θt−η∇f(θt)\displaystyle \theta_{t+1} = \theta_t - \eta \nabla f(\theta_t)
这个不等式把“迟早到达”翻译成“最多多少步到达”:误差上界与迭代次数 $T$ 成反比。
  1. f(θ_T)−f(θ*)(剩余误差)第 $T$ 步离碗底还差多少高度。
    f(θT)−f(θ∗)f(\theta_T) - f(\theta^*)
  2. L(光滑常数)梯度的变化有多“温和”,$L$ 越小地形越平缓。
    LL
  3. ‖θ_0−θ*‖²(初始距离)起点到碗底的距离平方。
    ∥θ0−θ∗∥2\|\theta_0 - \theta^*\|^2
  4. 2T(反比于步数)$T$ 越大误差上界越小,收敛速率为 $O(1/T)$。
    ∥θ0−θ∗∥22T\displaystyle \frac{\|\theta_0 - \theta^*\|^2}{2T}

建模实战价值

小优学会了看地形图。出发前,他先判断目标区域是碗还是丘陵,再决定带什么装备:碗形地带闭眼下坡即可,丘陵地带才需要多起点、随机化这些“探查花招”。AI 工程师建模时也该做同样的情报工作:先写优化问题的标准形式,判断 $f$ 是否凸、可行域是否凸,然后选择对应工具。

这个判断可以浓缩成一页“检查清单”:

拿到这个判断后,还能进一步指导细节:凸且光滑的问题用梯度下降或牛顿法;凸但不可微的问题(如带 L1 正则)用次梯度法或近端梯度法;大规模凸问题用坐标下降、随机梯度下降。凸问题的超参数(正则系数、学习率)与解的关系也更单调清晰,调参时看的收敛曲线是稳定下降的,什么时候该停一目了然——这些“确定性”正是工业界偏爱凸模型的原因。

类型={凸:放心使用全局收敛算法f 凸且 C 凸非凸:需多起点或随机化否则\displaystyle \text{类型} =\begin{cases}\text{凸:放心使用全局收敛算法} & f \text{ 凸且 } C \text{ 凸} \\[4pt]\text{非凸:需多起点或随机化} & \text{否则}\end{cases}
这不是严谨定理,而是建模初期的实用速判表:凸性决定了下山策略的“保底程度”。
  1. cases 分段(分类器)根据判定条件把问题归入两类。
    {⋯\displaystyle \begin{cases} \cdots \end{cases}
  2. 条件(f 凸且 C 凸)目标函数与可行域同时凸,问题才属于凸优化。
    f 凸 ∧ C 凸f \text{ 凸} \ \wedge \ C \text{ 凸}
  3. 结论一(放心求解)凸问题用全局收敛算法,任意初始点都能到达碗底。
    全局收敛算法\text{全局收敛算法}
  4. 结论二(多起点/随机化)非凸问题只能多试几个起点,或用随机化方法碰运气。
    多起点 / 随机化\text{多起点 / 随机化}

AI 应用场景

风控评分卡模型的可复现训练

阶段:模型训练与离线评估

解决的问题:银行风控评分卡要求每次跑批结果一致、可审计。逻辑回归是凸问题,梯度下降从任何初始权重出发都收敛到同一个最优权重;若换成深度网络(非凸),不同随机种子训出的参数不同,监管解释困难。

具体案例:某消费金融公司每月用 200 万笔样本训练逻辑回归评分卡,采用凸优化求解器(L-BFGS),连续 12 个月权重波动小于 0.5%,顺利通过审计。

Lasso 稀疏特征选择的快速求解

阶段:特征工程与模型选型

解决的问题:电商特征动辄上千维,如果用 L0 约束(非凸)做特征选择,问题是 NP 难的;改成 L1 正则(Lasso)后问题保持凸,坐标下降可以高效地逐系数求解。凸性让“稀疏 + 可解”兼得。

具体案例:推荐系统冷启动特征筛选中,3000 维特征用 Lasso 坐标下降 30 秒跑完,选出 120 个有效特征,暴力搜索方式则完全不可行。

广告 CTR 预估的凸代理损失

阶段:目标函数设计

解决的问题:0-1 误分类损失不可微且非凸,无法直接优化。用交叉熵、合页损失等凸代理损失替代,保证梯度下降稳定收敛,同时保持与业务指标(AUC、LogLoss)的相关性。

具体案例:广告点击率预估使用逻辑回归加交叉熵损失,分布式 SGD 训练时损失曲线单调下降,工程师据此设定早停阈值,训练时间缩减 40%。

Python 演示

python56 行
import numpy as np  def is_psd(A, tol=1e-8):    """判断对称矩阵是否半正定(特征值全非负)。"""    vals = np.linalg.eigvalsh((A + A.T) / 2)    return bool(np.all(vals >= -tol))  def mse_hessian(X):    """线性回归 MSE 损失对权重 theta 的 Hessian。"""    n = X.shape[0]    return (2.0 / n) * np.dot(X.T, X)  def f_convex(theta):    """碗形凸函数: 双变量二次。"""    return theta[0] ** 2 + 3 * theta[1] ** 2  def grad_convex(theta):    """对应梯度。"""    return np.array([2 * theta[0], 6 * theta[1]])  def f_nonconvex(t):    """带局部陷阱的非凸地形(与可视化同款)。"""    a = t - 0.30    b = t - 0.72    return 16 * a * a * b * b - 0.02 * t  def numeric_grad(f, t, eps=1e-6):    """中心差分近似导数。"""    return (f(t + eps) - f(t - eps)) / (2 * eps)  def main():    rng = np.random.default_rng(0)    X = rng.normal(size=(50, 3))    print("MSE Hessian 半正定(凸):", is_psd(mse_hessian(X)))     theta = np.array([4.0, -3.0])    eta = 0.05    for _ in range(300):        theta = theta - eta * grad_convex(theta)    print("凸函数梯度下降终点:", np.round(theta, 4))     t = 0.13    for _ in range(200):        t = t - 0.05 * numeric_grad(f_nonconvex, t)    print("非凸地形从 0.13 出发停在:", round(t, 3), "(真深坑约 0.72)")  if __name__ == "__main__":    main()
目的:用数值方法验证“凸损失 Hessian 半正定”这一结论,并对比凸函数与非凸函数在梯度下降下的不同命运。
  1. vals = np.linalg.eigvalsh((A + A.T) / 2)求对称化矩阵的特征值,判断半正定(凸性判据)。
  2. return (2.0 / n) * np.dot(X.T, X)MSE 的 Hessian 公式 $2/n \cdot X^{\top}X$,一行代码算出凸性证据。
  3. theta = theta - eta * grad_convex(theta)梯度下降的核心更新式,对应正文中的 $\theta_{t+1}=\theta_t-\eta\nabla f(\theta_t)$。
  4. return (f(t + eps) - f(t - eps)) / (2 * eps)中心差分求数值梯度,用于没有解析梯度的非凸地形。
  5. if __name__ == "__main__":可执行入口,确保脚本能被直接运行。

常见误区

误区我一直以为凸函数就是函数图像中间鼓起来像个山包,比如 $f(x)=-x^2$ 这种。可书上又说它是 convex,我彻底糊涂了。

正解数学的凸函数图像是“碗”(向下凹的弧线),任意两点连线(弦)在图像上方;山包形其实是凹函数。中文“凸”与图像方向相反是翻译带来的错觉,英文 convex 强调的是“任意两点连线不穿过函数下方”。记住“弦在上、弧在下”就不会错。

为何常见:日常语言里“凸”= 向外鼓出,数学却用它指“连线夹在曲线与上方之间”的性质,一词两意造成混淆。

误区只要损失函数处处可导,梯度下降一直迭代总能找到全局最优,局部最优只是传说。

正解可微只保证梯度存在,不保证梯度下降去对地方。凸函数才能保证任意局部最优等于全局最优;非凸可微函数(如 $\cos$ 或深度网络)的梯度下降会停在浅坑。可微是“能迈步”,凸性是“迈步必到碗底”,两者缺一不可。

为何常见:课本例子几乎都是凸问题,让人误以为可微本身就有全局收敛的魔力。

误区模型不收敛或者解不稳定,加个 L2 正则就行,不是都说正则化让问题变凸吗?

正解L1/L2 正则项本身是凸函数,加到凸损失上确实保持凸;但如果原损失非凸(比如深度网络、含 L0 惩罚的目标),加正则只是压了压碗边,丘陵还是丘陵。正则化控制复杂度,不能改变地形本质。

为何常见:听到“加正则=变凸”的粗放总结,没有区分线性模型与非线性模型。

误区加了这么多业务约束,可行域肯定被切得七零八落,多半不是凸问题了。

正解凸集的交集仍是凸集。只要每个约束都是凸约束(凸函数 $\le 0$、仿射等号),加一万个约束可行域依旧凸。真正破坏凸性的是非凸约束,比如 $x^2=1$ 或凹函数的不等式约束。数量不是问题,形状才是。

为何常见:把“复杂”与“非凸”画等号,忽略了凸性在交集运算下是封闭的。

面试题

Q1. 凸优化给机器学习带来的最核心保证是什么?

单选题 · easy

  • A.凸问题一定存在闭式解
  • B.局部最优解必为全局最优解← 正确答案
  • C.任意算法都线性收敛
  • D.初始点不影响运行耗时

答案:B。凸优化的灵魂是“局部最优即全局最优”,就像碗形地形里没有浅坑骗你。A 错,多数凸问题(如逻辑回归)仍需迭代求解;C 错,收敛速度取决于光滑性等条件;D 错,初始点不影响最终解,但影响迭代步数。

Q2. 判断一个集合是否为凸集,最核心的标准是?

单选题 · easy

  • A.连线上所有点都在集合内← 正确答案
  • B.连线上所有点都在集合外
  • C.连线上至少有一点在集合内
  • D.只有连线的中点在集合内

答案:A。凸集要求任意两点之间的整条线段都在集合内,对应 $\lambda \in [0,1]$ 时 $\lambda x+(1-\lambda)y \in C$。圆环和月牙形失败,正是因为有些连线中段越界。

Q3. 一元二阶可导函数为凸函数的充分必要条件是?

单选题 · mid

  • A.一阶导数恒大于零
  • B.二阶导数处处非负← 正确答案
  • C.一阶导数单调递减
  • D.二阶导数处处非正

答案:B。凸函数的曲率“处处向上弯”,即 $f''(x) \ge 0$。一阶导数恒大于零只是单调递增,不能推出凸性;一阶导数单调递减($f''\le 0$)对应凹函数。

Q4. 下列哪个函数在整个实数域上是凸函数?

单选题 · mid

  • A.f(x)=−x²,图像向下开口
  • B.f(x)=cos x,波浪形曲线
  • C.f(x)=x³,S 形拐弯曲线
  • D.f(x)=eˣ,指数增长曲线← 正确答案

答案:D。$f(x)=e^x$ 的二阶导数恒为正,处处凸。$-x^2$ 二阶导为负是凹函数;$\cos x$ 二阶导变号;$x^3$ 二阶导为 $6x$,在原点两侧变号,非凸非凹。

Q5. 若 $g_i$ 是凸函数,那么集合 $\{x : g_i(x) \le 0\}$ 是什么?

单选题 · mid

  • A.凸集(围栏内侧区域)← 正确答案
  • B.凹集(围栏外侧区域)
  • C.线性子空间(必过原点)
  • D.有界凸区域(必有限)

答案:A。凸函数的子水平集 $\{g_i \le 0\}$ 一定是凸集,这是“不等式约束保凸”的理论基础。它不一定过原点,也不一定有界,C、D 都是过度推断。

Q6. 线性回归的 MSE 损失是凸函数,最直接的数学原因是什么?

单选题 · hard

  • A.损失函数中包含指数项
  • B.Hessian 矩阵恒半正定← 正确答案
  • C.所有特征都经过标准化
  • D.只要训练样本量足够大

答案:B。MSE 关于参数 $\theta$ 是二次函数,其 Hessian 为 $\frac{2}{n}X^{\top}X$,对任意数据都半正定,所以处处“向上弯”,是凸函数。特征标准化和样本量都不影响凸性。

Q7. 关于梯度下降学习率 $\eta$,下列说法正确的是?

单选题 · mid

  • A.学习率越大收敛就越快
  • B.学习率过大会震荡甚至发散← 正确答案
  • C.凸问题学习率可任意取
  • D.学习率大小与收敛无关

答案:B。学习率是迈步大小。过大时会越过碗底来回震荡甚至发散;过小则收敛缓慢。即使凸问题,学习率也要选在合适范围内,不是任意取,也并非越大越好。

Q8. 下列哪些操作一定能保持函数的凸性?

多选题 · mid

  • A.凸函数的非负加权求和← 正确答案
  • B.凸函数与仿射映射复合← 正确答案
  • C.多个凸函数的逐点取最大← 正确答案
  • D.与任意非线性函数复合

答案:ABC。非负加权和、仿射复合、逐点取最大是三大保凸运算,合页损失就是靠“逐点取最大”构造的。任意非线性复合会破坏凸性,例如凸函数与 $\sin$ 复合通常不再凸。

Q9. 机器学习把损失函数设计成凸函数的原因包括哪些?

多选题 · hard

  • A.局部最优解即全局最优解← 正确答案
  • B.梯度下降收敛结果可复现← 正确答案
  • C.无需多起点等初始化花招← 正确答案
  • D.保证任意数据都能线性可分

答案:ABC。凸性带来“局部即全局、结果可复现、任意起点都能收敛”三大好处,让训练稳定可审计。但凸性与数据是否线性可分无关,线性不可分的数据用凸模型照样会误分类。

Q10. 关于非凸优化问题,下列说法正确的有哪些?

多选题 · extreme

  • A.梯度下降可能停在某个浅坑← 正确答案
  • B.常需多起点或随机化策略← 正确答案
  • C.凸松弛是常用近似求解手段← 正确答案
  • D.建模难度一定高于全部凸问题

答案:ABC。非凸地形存在局部陷阱,常用多起点、随机化或凸松弛(将原问题近似为凸问题)来求解。但“难度一定更高”说得太绝对——有些非凸问题规模小、启发式效果好,难度需要具体分析。