最优化理论期末复习攻略:凸性、KKT条件与经典算法考点全梳理 期末最优化理论这门课每年都能劝退一批人。原因倒不是数学有多深而是知识点散、符号多、算法杂老师上课讲得飞起你一翻书发现各种“强对偶”“LICQ”“半正定”扑面而来根本不知道复习从哪下手。我自己当年也是被KKT条件和单纯形法轮番折磨过的后来啃完几轮真题才摸到门道。这篇东西就是给正在抱佛脚的人准备的。我尽量把最优化理论期末复习的框架给你捋出来核心结论、常见题型、计算套路、必坑点一次说清。不管是平时学得还行但没系统梳理过的还是真的一学期没怎么听、准备突击的按这套思路走及格不难冲高分也有机会。1. 这门课到底在考什么1.1 学科定位它就是一张“建模-算法-理论”三角桌最优化理论本质上是数学规划数学规划就是你给一堆变量在限制条件下把某个目标函数搞到最大或最小。期末不管哪个学校出题翻来覆去跳不出三个角建模能力给你一个实际问题你能不能写出目标函数和约束条件。求解能力给定一个标准问题你能不能选用合适的算法算出最优解或迭代几步。理论证明最优性条件怎么推导对偶间隙怎么分析收敛性怎么证明。很多同学复习的误区是一头扎进算法细节里却忽略了理论框架。其实期末大题常常不是那种死算到天荒地老的题而是让你写步骤、判性质、说明理由。所以你把三个角分别搞清楚比盲目刷十道题都管用。1.2 高频考点全景图结合我见过的大多数高校历年卷子和本科教学大纲高频考点基本是这张表里的内容模块核心考点常考形式凸分析凸集、凸函数判定保凸运算次梯度判断题、证明题无约束优化梯度下降、牛顿法、线搜索条件计算迭代步骤、收敛性分析约束优化KKT条件、拉格朗日对偶、强对偶与Slater条件求解小规模约束问题、证明题线性规划单纯形法、对偶理论、灵敏度表格迭代计算、写对偶问题经典算法罚函数法、内点法、坐标下降算法思想简述、伪代码分析你按这个表去对照老师的课件如果还有没覆盖到的再加进去但大概率八九不离十。2. 核心理论必须先吃透的三个概念2.1 凸性为什么它这么重要凸性是这门课的胜负手。凸集的定义是集合内任意两点连线上的点都在集合内凸函数是满足f(θx (1-θ)y) ≤ θf(x) (1-θ)f(y)θ∈[0,1]的函数。看起来就是个不等式但它带来的结果极其重要凸优化问题的任何局部最优解都是全局最优解。这个性质在考试里有两层意义。第一判断题经常给你一个函数让你判断它是不是凸函数方法无非三种定义法、一阶判定f(y) ≥ f(x)∇f(x)ᵀ(y-x)、二阶判定∇²f(x)半正定。其中二阶判定最容易用但你一定要记得前提是定义域本身是凸集。第二证明题里你若能证明原问题是凸问题后面“极小值即为最小值”可以直接写这能省很多笔墨。我自己踩过的坑是混淆了“Hessian矩阵半正定”和“严格凸”。半正定对应凸函数正定才对应严格凸函数。考试写结论时一定要看清题目问的是凸还是严格凸。2.2 最优性条件从无约束到有约束的升级逻辑无约束问题的最优性条件很直白可微时一阶必要条件∇f(x*)0再往上一层的二阶充分条件要求∇²f(x*)正定。考试喜欢出“求函数驻点并判断极值类型”的题本质上就是算梯度和Hessian然后判断矩阵定号。到了约束优化事情变复杂了。KKT条件是在约束条件下最优解需要满足的必要条件。对于标准形式的约束优化问题min f(x)s.t. gᵢ(x) ≤ 0i1,...,mhⱼ(x) 0j1,...,l假设目标函数和约束函数都可微并且某些正则条件约束规格成立最优解x*一定存在乘子λᵢ≥0、μⱼ使下面四条同时成立驻定条件∇f(x*) Σλᵢ∇gᵢ(x*) Σμⱼ∇hⱼ(x*) 0原始可行性所有gᵢ(x*) ≤ 0、hⱼ(x*) 0对偶可行性λᵢ ≥ 0互补松弛λᵢgᵢ(x*) 0很多同学记KKT只记驻定条件和互补松弛考试一紧张就忘写λ≥0这分丢得特别冤枉。互补松弛的含义是如果约束没被激活即gᵢ(x*)0则对应的λᵢ0如果λᵢ0则约束必激活。关于约束规格最常见的是LICQ线性独立约束规格要求所有起作用约束的梯度线性无关。一般来说题目不会太为难你但你要知道如果不满足LICQKKT可能不成立这也是选择题的常见埋点。2.3 拉格朗日对偶原问题难解就换一边拉格朗日对偶的思路是把带约束的原问题转化为一个无约束或更易处理的对偶问题。通过拉格朗日函数 L(x,λ,μ) f(x) Σλᵢgᵢ(x) Σμⱼhⱼ(x)得到对偶函数 g(λ,μ) infₓ L(x,λ,μ)从而构建对偶问题。这里有一个考试特别爱考的点弱对偶性恒成立即对偶问题的最优值 ≤ 原问题最优值。如果满足某些凸性条件加约束规格比如Slater条件强对偶成立对偶间隙为零两边最优值相等。判断强对偶是否成立的套路通常是这样先把问题化成标准形式看目标函数是否为凸函数、不等式约束是否为凸函数、等式约束是否为仿射函数。如果是再找是否存在一个严格可行点让所有不等式约束严格小于0成立。如果存在强对偶成立那么你可以放心地对对偶问题求解。3. 两类必考算法无约束迭代与约束罚函数3.1 无约束梯度方法迭代格式要会写会算无约束优化算法考试范围通常包括最速下降法和牛顿法。它们的迭代框架都是同一个x_{k1} x_k α_k d_k。区别在于搜索方向d_k的选择。最速下降法取负梯度方向d_k -∇f(x_k)这时方向导数取得最小也就是下降最快。但“最速”只是局部性质不是全局最优把迭代过程画出来就能发现它会走出锯齿形路径。考试常让你用精确线搜索求步长比如二次函数f(x) xᵀQx bᵀx c最优步长可以直接用公式算。这类题考计算熟练度你最好考前把一元二次函数求极值的公式手推三遍。牛顿法则使用d_k -(∇²f(x_k))⁻¹∇f(x_k)它利用二阶信息收敛更快但需要Hessian正定才能保证方向下降而且每步要算逆矩阵代价高。考试常考的内容是判断这两种方法的“收敛速度”或者对给定函数迭代一两步算数值。这里有个实操提醒做题时如果没有特别说明线搜索步长默认取精确线搜索也就是沿方向d_k求一元函数φ(α)f(x_kαd_k)的最小值。如果是Armijo条件一般会用回溯法题目会给你参数c₁或ρ照公式代就行。3.2 线搜索条件的直觉为什么要管步长大小很多同学不理解为什么要搞Armijo条件和Wolfe条件明明沿下降方向走就行。实际问题是步长太大可能跨过最优点甚至导致函数值上升步长太小收敛得太慢。所以算法需要判断什么步长是可接受的。Armijo条件要求 f(x_kαd_k) ≤ f(x_k) c₁α∇f(x_k)ᵀd_k其中c₁∈(0,1)通常取1e-4。这保证了新点处函数值要有足够下降也就是用线性近似做下限。考试一般不要求从头证明Armijo,但会给你一个具体函数和参数问某个步长是否满足充分下降条件运算量不大代入数据算就行。Wolfe条件是在Armijo基础上额外要求曲率条件保证新点处导数不过于负避免步长过小。证明题里如果提到“Zoutendijk条件”基本就是靠Wolfe条件推导的难点在于记清楚每个不等式方向和范围。3.3 约束优化罚函数法和增广拉格朗日约束问题的经典算法期末高频的是外点罚函数法。思路是把约束条件“惩罚”进目标函数构造一个新问题F(x,ρ) f(x) ρP(x)其中P(x)是约束违反度的度量比如不等式约束可以用P(x) Σ[max(0, gᵢ(x))]²等式约束用Σ[hⱼ(x)]²。ρ是罚参数每次迭代后增大ρ再以当前最优解为初值重新求解无约束问题让迭代点逐渐逼近可行域。这个方法的思想是一层皮先把问题变成无约束问题然后反复解无约束子问题。期末常考的简答题就是给你这个式子让你解释罚函数法为什么有效、ρ无限增大时解的收敛性以及外点法的迭代点通常从可行域外部逼近最优解。偶尔也会让你手算一两步给定简单约束如x≥1写出罚函数用解析方法求某ρ下的最优点。这种题只要会求带参数的二次函数极值就能做。增广拉格朗日法在期末出现的频率略低但趋势在变高。它是在拉格朗日函数后面加上二次罚项既能保证收敛性又不会让ρ变得无穷大导致数值困难。记不住细节没关系至少要能说出它比纯罚函数法好在哪。4. 手把手拆解三道典型期末大题4.1 无约束优化计算题梯度、Hessian、步长一条龙题目假如是求f(x₁,x₂) x₁² 2x₂² - 2x₁x₂ - 2x₂的最小值点用最速下降法初值x₀(0,0)求x₁步长用精确线搜索。解这类题的步骤很固定求梯度∇f (2x₁-2x₂, 4x₂-2x₁-2)ᵀ。代入x₀(0,0)得d₀ -∇f(x₀) (0, 2)ᵀ。让x x₀ αd₀ (0, 2α)ᵀ代入目标函数得φ(α) 2(2α)² - 2·0·2α - 2·2α 8α² - 4α。对φ(α)16α-40求根得α*0.25。所以x₁ (0, 0.5)ᵀ。这类题丢分点主要集中在两步一是梯度求错二是目标函数代入不仔细导致最优步长算错。建议考前找三道求梯度的纯计算练练手把符号理清楚Kronecker符号、转置等细节别糊弄。如果题目用牛顿法就额外算Hessian∇²f [[2,-2],[-2,4]]然后求逆乘梯度。在二次函数上牛顿法一步就会收敛到最优点这是可以拿来检验结果对不对的常识。4.2 约束优化KKT计算题老老实实分类讨论题目假如是min x₁² x₂²s.t. x₁ x₂ ≥ 2很多同学上来就写拉格朗日函数然后联立方程这题最大的坑在于约束是不等式你需要先判定约束是否激活。标准套路把约束写成标准形式g(x) 2 - x₁ - x₂ ≤ 0。拉格朗日函数L x₁² x₂² λ(2 - x₁ - x₂)。KKT条件∇L0即2x₁ - λ02x₂ - λ0。互补松弛λ(2 - x₁ - x₂)0。对偶可行λ≥0。情况一约束不激活则λ0由∇L0得x₁0、x₂0但此时g(0,0)20违反原始可行性该情况不成立。情况二约束激活则2 - x₁ - x₂0加上2x₁ - λ0、2x₂ - λ0解得x₁x₂1λ2≥0。所以最优解是(1,1)最优值是2。这种题做的多了你会发现规律约束若是不等式先假设λ0再验证可行性或者先激活再解方程。两个都必须试别漏情况。另外等式约束没有λ≥0的限制考试时要注意区分。4.3 线性规划对偶与单纯形表格迭代要稳线性规划的典型考法是给了标准形式让你用单纯形法迭代两三步或者让你写出对偶问题。单纯形法计算量不小但步骤机械。我复习时用了一个笨但有效的办法把单纯形表每一行、每一步都画得清清楚楚检验数单独一行主元列用括号圈出来主元行用横线标出来这样迭代时不容易漏项。计算完一步就检查一下基本可行解是否满足约束对双向检验一下能省出不少回头改错的功夫。写对偶问题有几个记忆口诀原问题若是求min对偶问题是求max原问题变量对应一个对偶约束原问题约束对应一个对偶变量不等式约束方向在对偶里会反转原问题是等式约束对偶对应变量无约束。做题时先判断原问题形态再逐条对照写不要跳步。5. 常见复习误区和考前冲刺策略5.1 你以为懂了其实一算就错最优化理论的计算量不算大但错误率极高。我总结了几类高频错误你复习时对着自查常见问题具体表现对策梯度/Hessian计算不熟多元复合函数链式法则漏项每天开工前先默写3个函数的梯度和Hessian凸函数判定用错条件把正定当成半正定用把“必要”“充分”“充要”三个词整理成小卡片KKT条件漏写忘记λ≥0或互补松弛写成等式每次做题前先把KKT四条默写一遍对偶变量方向搞反原问题求min对偶求max时约束方向写错对照标准形式的表格写对偶不要凭记忆单纯形表迭代主元选错检验数判断失误每步都检查B⁻¹b是否仍非负5.2 48小时突击路线图如果离考试只剩两三天我建议你按这个顺序走第1个半天把凸集、凸函数、KKT、对偶四个理论板块的课件笔记重新过一遍。重点看定义和定理做题可以先放一放。目标是能在纸上默写出无约束和有约束最优性条件。第2个半天做6到8道完整计算题。推荐组成是两道无约束最速下降法、两道KKT条件解约束问题、两道线性规划单纯形法、一道对偶理论题、一道罚函数法推导。做完马上对答案错题标注在知识点旁边。第3个半天把所有错题重新做一遍然后刷一遍简答题库里的概念题比如“为什么凸优化问题局部最优即全局最优”“外点法和内点法的区别”这类能用自己的话讲清楚。考前晚上只看三样东西——KKT四条、单纯形表迭代规则、凸函数判定方法。其他不用再翻。5.3 考场答题顺序与时间分配最优化期末卷子通常由选择题/判断题、计算题、证明简答题构成。时间如果只有一个半小时我的经验是优先写计算题因为步骤分好拿证明题放在最后写因为容易卡壳。选择题至少预留给十分钟因为概念判断题看似简单实际上考点细容易一下子反应不过来。如果某道计算题卡在中间某步先跳过把后面会做的写完再回头补。改卷的时候关键步骤都在哪怕数字算错了也能拿大部分分。6. 一个考前一定要做的自查清单最后再分享一个我每次复习都会用的自查清单考前过一遍比盲目刷新题稳得多能默写无约束问题的一阶必要条件、二阶必要条件、二阶充分条件。能在五分钟内判断一个二次型是正定、半正定、负定还是不定。能准确写出KKT四条并清楚记得不等式约束对应的乘子非负。能解释为什么需要LICQ之类的约束规格。能写清楚最速下降法和牛顿法的迭代步骤并说出各自的优缺点。能背出Armijo条件和Wolfe条件的公式并解释它们的几何意义。能从原问题出发写出拉格朗日对偶问题判断强对偶何时成立。会算至少两次单纯形表迭代不出错。这些东西不要求你全背下来但至少能看着章节目录回忆出一个大概轮廓。如果哪一项你是完全懵的立刻回翻课件对应章节考前补上这个洞考试时就不会被钻空子。我个人实际复习下来最大的体会是这门课最怕的不是题难而是“好像都知道一下笔就漏洞百出”。所以无论时间多紧一定要亲手算几道题步骤写得越完整考场上心里越有底。祝你这学期的最后一战稳过。