全局最优 & 局部最优
结论
主要是为了探讨是逐行把 𝜆𝑖解成局部最优再写回,还是全向量更新!
准确说:没组装矩阵 ≠ 按行依次“解”。 APGD 做的是全向量更新:它每一轮都用当前整条 $\lambda$ 去算全局梯度 $g=N\lambda-b$,再一次性把 $\lambda$ 推进并做块投影;这和“逐行把 $\lambda_i$ 解成局部最优再写回”的 PGS/GS 完全不是一回事。
计算过程中是整个N带去去计算的,所以是全局的最优解,然后设计成算子乘的效果更佳,因为这样子可以更好的缓存,也可以适配动态拓扑,因为不会产生固定的稀疏矩阵Z。
定义
任何优化问题都像在“可行区域”里找一个点,让目标函数(误差/能量/花费)尽可能小。
可行区域:满足约束的那些点;目标函数:你想压低的那个量。
举个例子:
把目标函数想成“海拔”,可行区域就是你能走的地。
全局最优:整张地图里海拔最低的点。
局部最优:只在你脚边一小圈范围内最低,但地图别处可能更低。
凸问题的地形像一个大碗,只有一个底;非凸问题像群山起伏,到处是小洼地。
区别几个概念
全局最优:拿它和所有可行点比,谁都不比它更小。
严格全局最优:拿它和所有其他可行点比,别人都更大。
局部最优:只在它周围“足够小的一圈”里,别人都不更小。
严格局部最优:在那一小圈里,别人都更大。
注意边界点:比较的是“那一圈”与可行区域的交集。
无约束时:
一阶导为零(坡度为零)是必须的;
二阶导“非负”表示那是个凹下去的形状;若“严格正”,就是严格局部最小。
凸目标 + 凸可行域:任何局部最优自动就是全局最优。
分析APGD
APGD 流程在当前建模下求的是凸问题的解 —— 因此得到的是全局最优解
可行集 𝐾 是凸集(区间/半空间 + 二阶锥都凸) + 目标函数是个凸函数
\[f(\gamma)=\tfrac12\,\gamma^\top A\gamma - r^\top\gamma,\quad \nabla f(\gamma)=A\gamma-r.\]行域投影(盒约束 + 摩擦圆锥):
\[\gamma\leftarrow \Pi_{\mathcal K}\big(\gamma - t\nabla f(\gamma)\big),\quad \|\gamma_T\|\le \mu\,\gamma_N.\]