math-skill 1.0.0 → 2.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.en-US.md +280 -0
- package/README.md +280 -278
- package/agents/math-critic.md +235 -203
- package/commands/abstraction.md +13 -34
- package/commands/algorithmic-thinking.md +13 -34
- package/commands/ask.md +20 -21
- package/commands/axiomatization.md +13 -34
- package/commands/causal-inference.md +13 -34
- package/commands/discrete-combinatorial.md +13 -34
- package/commands/game-theory.md +13 -34
- package/commands/induction-analogy.md +13 -34
- package/commands/information-theory.md +13 -34
- package/commands/logic-deduction.md +13 -34
- package/commands/modeling.md +13 -37
- package/commands/optimization.md +13 -33
- package/commands/probability-statistics.md +13 -36
- package/commands/symmetry-invariance.md +13 -34
- package/commands/topological-thinking.md +13 -33
- package/commands/transformation.md +13 -33
- package/knowledge-base/overview.md +228 -230
- package/package.json +71 -59
- package/references/agentic-workflow.md +53 -0
- package/references/books/abstract-algebra.md +120 -0
- package/references/books/algebraic-geometry-rising-sea.md +167 -0
- package/references/books/differential-geometry.md +136 -0
- package/references/books/matrix-analysis.md +142 -0
- package/references/books/micro-lie-theory.md +112 -0
- package/references/books/optimization-ml.md +160 -0
- package/references/books/smooth-manifolds.md +101 -0
- package/references/gpu-friendly-math.md +65 -0
- package/skills/abstraction/SKILL.md +119 -264
- package/skills/algorithmic-thinking/SKILL.md +136 -371
- package/skills/axiomatization/SKILL.md +149 -213
- package/skills/causal-inference/SKILL.md +149 -374
- package/skills/discrete-combinatorial/SKILL.md +129 -286
- package/skills/game-theory/SKILL.md +121 -318
- package/skills/induction-analogy/SKILL.md +150 -310
- package/skills/information-theory/SKILL.md +138 -242
- package/skills/logic-deduction/SKILL.md +133 -280
- package/skills/math-research-activator/SKILL.md +134 -0
- package/skills/{meta-selector → math-research-activator}/original-texts.md +104 -104
- package/skills/modeling/SKILL.md +137 -318
- package/skills/optimization/SKILL.md +133 -292
- package/skills/probability-statistics/SKILL.md +149 -312
- package/skills/symmetry-invariance/SKILL.md +137 -358
- package/skills/topological-thinking/SKILL.md +126 -273
- package/skills/transformation/SKILL.md +122 -264
- package/docs/CLAUDE.md +0 -187
- package/skills/meta-selector/SKILL.md +0 -188
- /package/{docs → references}/inspiration.md +0 -0
|
@@ -1,292 +1,133 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: optimization
|
|
3
|
-
description: |
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
>
|
|
13
|
-
>
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
>
|
|
25
|
-
|
|
26
|
-
>
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
>
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
-
|
|
83
|
-
-
|
|
84
|
-
-
|
|
85
|
-
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
| 凸优化 | 凸 | 凸不等式 + 线性等式 | 局部=全局 | 梯度下降、内点法 |
|
|
135
|
-
| 非凸优化 | 非凸 | 任意 | 多局部极值 | 全局搜索、模拟退火 |
|
|
136
|
-
| 组合优化 | 离散域 | 任意 | NP-hard 常见 | 分支定界、启发式 |
|
|
137
|
-
| 随机优化 | 含随机项 | 可能含随机 | 期望最优 vs 随机可行 | SAA、鲁棒优化 |
|
|
138
|
-
|
|
139
|
-
#### 生活模式 / Life Mode
|
|
140
|
-
|
|
141
|
-
判断你的问题属于哪种类型——这决定了你的求解策略:
|
|
142
|
-
|
|
143
|
-
- **有明确最优答案**的问题:目标清晰、限制明确,存在一个"最好的"选择——直接找到它
|
|
144
|
-
- **看似最好但未必真正最好的问题**:你可能在局部最优中——当前环境下最好的选择,换一个环境可能更好
|
|
145
|
-
- **没有完美方案的问题**:多个目标互相矛盾,不可能同时满足——必须取舍
|
|
146
|
-
- **信息不足的问题**:不确定选项的后果——找到"足够好"的方案即可,不必追求最优
|
|
147
|
-
|
|
148
|
-
#### 共通要点 / Common Key Points
|
|
149
|
-
|
|
150
|
-
问题类型决定求解策略。不同类型需要不同方法——对"没有完美方案"的问题追求最优是浪费时间。
|
|
151
|
-
|
|
152
|
-
### 第四步:寻找最优解 / Find the Optimal Solution
|
|
153
|
-
|
|
154
|
-
#### 科研模式 / Research Mode
|
|
155
|
-
|
|
156
|
-
根据类型分类选择求解策略:
|
|
157
|
-
- **LP/QP/凸优化**:利用凸性,梯度类方法或内点法可保证收敛到全局最优
|
|
158
|
-
- **非凸优化**:需警惕局部最优——尝试多起点、全局搜索策略,或松弛为凸近似
|
|
159
|
-
- **组合优化**:精确求解往往 NP-hard——分支定界求小规模精确解,启发式求大规模近似解
|
|
160
|
-
- **随机优化**:样本平均近似(SAA)将随机问题转化为确定性近似问题
|
|
161
|
-
- **信息不足**:使用满意解(satisficing)——找到"足够好"的解即可
|
|
162
|
-
|
|
163
|
-
#### 生活模式 / Life Mode
|
|
164
|
-
|
|
165
|
-
根据问题类型采取不同策略:
|
|
166
|
-
|
|
167
|
-
- **有明确最优答案**:系统比较各选项,直接选最优
|
|
168
|
-
- **可能陷入局部最优**:多探索不同领域,避免过早锁定——"多试几个方向再决定"比"在当前领域精雕细琢"有时更有效
|
|
169
|
-
- **没有完美方案**:明确各目标的权重,在取舍中找平衡——接受"不完美但足够好"
|
|
170
|
-
- **信息不足**:先收集关键信息,或采用"满意解"策略——找到"足够好"就行动,不必等"最优"
|
|
171
|
-
|
|
172
|
-
#### 共通要点 / Common Key Points
|
|
173
|
-
|
|
174
|
-
求解策略必须匹配问题类型。对没有完美方案的问题追求最优是徒劳——满意解往往比最优解更务实。
|
|
175
|
-
|
|
176
|
-
### 第五步:灵敏度分析 / Sensitivity Analysis
|
|
177
|
-
|
|
178
|
-
#### 科研模式 / Research Mode
|
|
179
|
-
|
|
180
|
-
拉格朗日乘子的经济学含义:$\lambda_i^*$ 为第 $i$ 个不等式约束的**影子价格**——约束放松一个单位,目标函数改善约 $\lambda_i^*$ 个单位。互补松弛性表明:若 $\lambda_i^* = 0$,则该约束对最优解无影响(非活跃约束);若 $\lambda_i^* > 0$,则约束活跃且最优解恰好在其边界上。
|
|
181
|
-
|
|
182
|
-
**关键问题**:如果约束条件或目标函数发生微小变化,最优解会如何变化?哪些约束是活跃的?影子价格是多少?
|
|
183
|
-
|
|
184
|
-
#### 生活模式 / Life Mode
|
|
185
|
-
|
|
186
|
-
搞清楚哪个限制最重要——如果某个限制放宽一点,你的选择空间会大幅扩展。
|
|
187
|
-
|
|
188
|
-
- **关键限制的优先级**:哪个限制一旦放宽,你获得的选择改善最大?——这告诉你应该优先争取什么资源
|
|
189
|
-
- **限制的活跃性**:有些限制根本不影响你的最佳选择(你离它的边界很远),有些限制恰好卡住你(你就在它的边界上)——只关注活跃的限制
|
|
190
|
-
- 核心追问:如果我只能放宽一个限制,应该选哪个?这往往指向你该优先争取的资源
|
|
191
|
-
|
|
192
|
-
#### 共通要点 / Common Key Points
|
|
193
|
-
|
|
194
|
-
灵敏度分析告诉你"什么最重要"——不是所有限制都同等重要,活跃限制对结果的影响远大于非活跃限制。
|
|
195
|
-
|
|
196
|
-
### 第六步:多目标与帕累托 / Multi-Objective and Pareto
|
|
197
|
-
|
|
198
|
-
#### 科研模式 / Research Mode
|
|
199
|
-
|
|
200
|
-
当存在多个目标 $f_1, f_2, \dots, f_k$ 时,通常不存在单一最优解。帕累托最优解集定义:不存在另一个可行解使所有目标同时改善。
|
|
201
|
-
|
|
202
|
-
常用方法:
|
|
203
|
-
- **加权求和法**:$\min \sum w_i f_i(x)$,权重 $w_i > 0$——不同权重对应帕累托前沿上不同点
|
|
204
|
-
- **$\epsilon$-约束法**:将一个目标作为主目标,其余转为不等式约束 $\min f_1(x)$ s.t. $f_i(x) \leq \epsilon_i$——遍历 $\epsilon_i$ 可覆盖帕累托前沿
|
|
205
|
-
|
|
206
|
-
#### 生活模式 / Life Mode
|
|
207
|
-
|
|
208
|
-
当追求多个目标且它们互相矛盾时,没有完美方案——必须取舍。
|
|
209
|
-
|
|
210
|
-
- **取舍的本质**:有些目标之间必须牺牲一个来成就另一个,不存在同时满足所有目标的完美方案
|
|
211
|
-
- **如何取舍**:明确各目标的权重——哪个对你更重要?或者先把最重要的目标做到位,其余只要"不太差"就行
|
|
212
|
-
- 核心追问:你的各目标之间,哪些可以同时满足,哪些必须取舍?取舍时你优先保哪个?
|
|
213
|
-
|
|
214
|
-
#### 共通要点 / Common Key Points
|
|
215
|
-
|
|
216
|
-
多目标问题没有唯一最优解——取舍是不可避免的。关键不是"找到完美方案",而是"在取舍中做出有意识的选择"。
|
|
217
|
-
|
|
218
|
-
### 第七步:监控约束变化 / Monitor Constraint Changes
|
|
219
|
-
|
|
220
|
-
#### 科研模式 / Research Mode
|
|
221
|
-
|
|
222
|
-
最优解不是永恒的——当约束条件变化时,需要重新优化。活跃约束的变化对最优解影响最大(影子价格高),非活跃约束的微小变化通常不影响最优解。
|
|
223
|
-
|
|
224
|
-
#### 生活模式 / Life Mode
|
|
225
|
-
|
|
226
|
-
你的最佳选择不是一成不变的——当限制条件变了,你该重新审视选择。
|
|
227
|
-
|
|
228
|
-
- **什么变化最值得关注**:那些恰好卡住你的限制如果变化了,你的最优选择会随之改变;离你很远的限制即使变化,对你的选择也没什么影响
|
|
229
|
-
- **何时需要重新决策**:当你面临的限制发生了明显变化(新的机会出现、旧的约束消失),就该重新审视选择
|
|
230
|
-
- 核心追问:最近我的限制条件有没有变化?如果有,我的选择是否还合适?
|
|
231
|
-
|
|
232
|
-
#### 共通要点 / Common Key Points
|
|
233
|
-
|
|
234
|
-
最优解依赖约束——约束变了,最优解就变了。定期审视限制条件是否发生变化,是持续优化的关键。
|
|
235
|
-
|
|
236
|
-
## 常见错误 / Common Errors
|
|
237
|
-
|
|
238
|
-
| 错误 / Error | 批评 / Critique | 正确做法 / Correct Approach | 模式 |
|
|
239
|
-
|-------------|-------------------------------|---------------------------|------|
|
|
240
|
-
| 没有明确目标就优化 | 目标不清晰,方向不确定 | 先精确定义目标 | `[通用]` |
|
|
241
|
-
| 忽略隐式约束 | 未发现的约束使"最优解"不可行 | 穷尽检查所有可能的约束 | `[通用]` |
|
|
242
|
-
| 陷入局部最优 | 非凸问题中贪心策略不保证全局最优 | 验证凸性;非凸时用多起点或全局方法 | `[科研]` |
|
|
243
|
-
| 把最优当唯一 | 最优解可能不唯一 | 检查是否存在多个等价最优解 | `[科研]` |
|
|
244
|
-
| 多目标用单目标方法 | 不同目标需 trade-off | 使用帕累托分析 | `[科研]` |
|
|
245
|
-
| 忘记重新优化 | 约束变了但未更新 | 定期检查约束是否变化 | `[通用]` |
|
|
246
|
-
| 未验证凸性 | 非凸问题误用凸优化方法 | 先判断凸性,再选方法 | `[科研]` |
|
|
247
|
-
| 忽略对偶理论 | 对偶问题可能更易求解 | 构造对偶问题,利用强对偶性 | `[科研]` |
|
|
248
|
-
| 混淆可行与最优 | 可行解不一定最优;最优解必须可行 | 先验证可行性,再验证最优性 | `[科研]` |
|
|
249
|
-
| 忽略计算复杂度 | 组合优化问题可能 NP-hard | 对大规模问题使用启发式或近似算法 | `[科研]` |
|
|
250
|
-
| 把软约束当硬约束 | 以为不可突破的限制其实可以协商 | 严格区分不可逾越的限制和可以协商的限制 | `[生活]` |
|
|
251
|
-
| 追求完美方案 | 多目标问题不存在完美方案,取舍不可避免 | 有意识地做取舍,接受"足够好" | `[生活]` |
|
|
252
|
-
| 不关注哪个限制最关键 | 所有限制看似同等重要,但活跃限制的影响远大于非活跃限制 | 找出哪个限制一旦放宽收益最大,优先争取 | `[生活]` |
|
|
253
|
-
| 在当前领域死磕 | 可能陷入局部最优——换个领域可能更好 | 多探索不同方向,不要过早锁定 | `[生活]` |
|
|
254
|
-
|
|
255
|
-
## 操作规程 / Operating Procedure
|
|
256
|
-
|
|
257
|
-
**模式选择**:根据问题性质自动选择——
|
|
258
|
-
- **科研模式**触发条件:涉及数学推导、定理证明、算法设计、论文审查、实验设计优化、需要判断凸性或使用对偶理论
|
|
259
|
-
- **生活模式**触发条件:涉及日常决策、人际互动、时间管理、生活规划、资源分配、取舍判断
|
|
260
|
-
|
|
261
|
-
当本 skill 被触发时,根据选择的模式执行以下步骤:
|
|
262
|
-
|
|
263
|
-
### 科研模式输出格式 / Research Mode Output Format
|
|
264
|
-
|
|
265
|
-
1. **目标函数**:用一句话明确"我们要最大化/最小化什么" `[目标]: [描述]`,并判断凸性 `[凸性]: [凸/非凸/未知]`
|
|
266
|
-
2. **约束清单**:标注每个约束为 `[硬约束]` 或 `[软约束]`,并分类 `[不等式/等式]` `[线性/非线性]`
|
|
267
|
-
3. **类型分类**:判定问题类别 `[类型]: [LP/QP/凸/非凸/组合/随机]`
|
|
268
|
-
4. **可行域分析**:在约束下,哪些选项是可行的?活跃约束是哪些?
|
|
269
|
-
5. **最优解/满意解**:标注使用的策略 `[策略]: [梯度法/内点法/全局搜索/satisficing/帕累托]`
|
|
270
|
-
6. **灵敏度分析**:关键约束的影子价格是多少?若关键约束变化 X%,结论如何变化?
|
|
271
|
-
7. **行动建议**:明确写出"接下来我将……"
|
|
272
|
-
|
|
273
|
-
**科研模式输出必须包含以上 7 项,不得只输出分析性文字而不给出结论。**
|
|
274
|
-
|
|
275
|
-
### 生活模式输出格式 / Life Mode Output Format
|
|
276
|
-
|
|
277
|
-
1. **核心追求**:一句话说清"我最想要什么" `[追求]: [描述]`——单一目标还是多个矛盾目标?
|
|
278
|
-
2. **现实限制**:标注每个限制 `[不可逾越]` 或 `[可以协商]`——哪些是真正的硬约束,哪些只是你给自己设的软约束?
|
|
279
|
-
3. **可选范围**:在这些限制下,我实际有哪些选择?最受限的选择维度是什么?
|
|
280
|
-
4. **最优选择/满意选择**:标注策略 `[策略]: [系统比较/多方向探索/取舍平衡/满意即可]`
|
|
281
|
-
5. **关键限制的优先级**:哪个限制一旦放宽收益最大?——这告诉我该优先争取什么资源
|
|
282
|
-
6. **行动建议**:明确写出"接下来我将……"
|
|
283
|
-
|
|
284
|
-
**生活模式输出必须包含以上 6 项,不得只输出分析性文字而不给出结论。**
|
|
285
|
-
|
|
286
|
-
## 与其他 skill 的关系 / Relations to Other Skills
|
|
287
|
-
|
|
288
|
-
- **建模思想**:优化前需要先建模——定义目标函数和约束本身就是一个建模过程
|
|
289
|
-
- **概率与统计**:在不确定性下做优化需要随机优化或鲁棒优化方法
|
|
290
|
-
- **变换思想**:有时变换到对偶问题更容易求解;对偶性是优化中最深刻的变换
|
|
291
|
-
- **博弈思想**:当多个决策者同时优化时,问题变为博弈论中的均衡问题——纳什均衡即多人优化中的稳定点
|
|
292
|
-
- **算法思想**:优化问题的求解依赖于算法设计——凸优化可用梯度法,组合优化需分支定界或启发式算法
|
|
1
|
+
---
|
|
2
|
+
name: optimization
|
|
3
|
+
description: |
|
|
4
|
+
触发:问题涉及资源分配、取舍、最大化/最小化目标、约束下决策;或需判断凸性、使用拉格朗日/KKT、分析对偶结构;或为算法/算子/训练设计选择优化方法时调用。
|
|
5
|
+
English: Trigger when a problem involves resource allocation, trade-offs, maximizing/minimizing objectives, decisions under constraints; or needs convexity analysis, Lagrangian/KKT methods, duality structure; or choosing optimization methods for algorithm/operator/training design.
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# ⚖️ 优化思想 / Optimization
|
|
9
|
+
|
|
10
|
+
> "在最一般的约束条件下,寻找目标函数的极值——凸性决定难度,KKT 给出必要条件,对偶揭示结构。"
|
|
11
|
+
> "Under the most general constraints, find extrema of the objective — convexity determines difficulty, KKT gives necessity, duality reveals structure."
|
|
12
|
+
>
|
|
13
|
+
> —— 最优化理论与运筹学 / Optimization Theory & Operations Research
|
|
14
|
+
|
|
15
|
+
## 核心原则 / Core Principle
|
|
16
|
+
|
|
17
|
+
**任何决策问题都可以表述为优化问题:在约束条件下最大化(或最小化)某个目标。优化的本质不是追求'最好',而是在约束下追求'可行中的最好'。**
|
|
18
|
+
|
|
19
|
+
**Any decision problem can be formulated as optimization: maximizing (or minimizing) an objective subject to constraints. The essence is not 'the best' in the abstract, but 'the best among the feasible'.**
|
|
20
|
+
|
|
21
|
+
优化的三个核心要素:**目标(Objective)**、**约束(Constraints)**、**可行域(Feasible set)**。
|
|
22
|
+
|
|
23
|
+
> **数学形式化 / Mathematical Formalization**
|
|
24
|
+
>
|
|
25
|
+
> 一般优化问题:$\min_{x \in \mathbb{R}^n} f(x) \quad \text{s.t.} \quad g_i(x) \leq 0,\; i=1,\dots,m; \quad h_j(x) = 0,\; j=1,\dots,p$
|
|
26
|
+
>
|
|
27
|
+
> 拉格朗日函数:$L(x, \lambda, \mu) = f(x) + \sum_i \lambda_i g_i(x) + \sum_j \mu_j h_j(x)$
|
|
28
|
+
>
|
|
29
|
+
> KKT 条件(核心必要条件,Slater 等正则性下):① 驻点 $\nabla_x L = 0$;② 原始可行 $g_i \le 0, h_j = 0$;③ 对偶可行 $\lambda_i \ge 0$;④ 互补松弛 $\lambda_i g_i = 0$。
|
|
30
|
+
>
|
|
31
|
+
> 凸性:若 $f$ 与各 $g_i$ 凸、各 $h_j$ 线性,则问题凸;此时 **KKT 充分**,局部最优 = 全局最优。
|
|
32
|
+
|
|
33
|
+
## GPU 友好性 / GPU-Friendliness(横切检查)
|
|
34
|
+
|
|
35
|
+
当优化用于**算法/算子/训练设计**时,求解方法本身必须过 `../../references/gpu-friendly-math.md` 八维门:
|
|
36
|
+
|
|
37
|
+
- **一阶法(SGD/Adam)**:GEMM 友好、可并行、低精度可行;注意优化器状态精度与分布式通信开销。
|
|
38
|
+
- **二阶/牛顿法**:Hessian 求逆 $O(n^3)$、显存爆炸——典型"美但不可算"→ 改造为 **K-FAC / 低秩 / 对角近似**(见 `../../references/books/optimization-ml.md`、`matrix-analysis.md`)。
|
|
39
|
+
- **约束投影**:投影是否有闭式、可张量化?迭代投影警惕串行依赖。
|
|
40
|
+
- **分布式**:计算/通信能否 overlap;是否需要梯度压缩。
|
|
41
|
+
|
|
42
|
+
八维最低判定(正式术语):**张量化**看目标/约束/梯度能否批量;**GEMM 可映射**看主计算是否为矩阵乘、HVP、K-FAC 小矩阵;**复杂度**明确一阶/二阶/组合求解阶;**显存与 KV-Cache**检查优化器状态、Hessian、激活保存;**低精度稳定**检查条件数、阻尼、loss scaling;**并行与通信**检查梯度同步和通信 overlap;**稀疏结构**看预条件/约束是否块结构化;**算子融合**看更新、裁剪、正则能否融合。
|
|
43
|
+
|
|
44
|
+
> 配合 `../../references/books/optimization-ml.md`(Chong/Lu/Żak)与 `../../references/books/matrix-analysis.md`。
|
|
45
|
+
|
|
46
|
+
## 不适用场景 / When NOT to Use
|
|
47
|
+
|
|
48
|
+
- **没有明确评价标准**(不知道什么是"好")——先定义目标再优化。
|
|
49
|
+
- **纯执行性任务**(如格式化代码)——没有优化空间。
|
|
50
|
+
- **用户已确定方案**——优化已完成。
|
|
51
|
+
- **本质是定性判断而非定量极值**——应先建模再优化。
|
|
52
|
+
|
|
53
|
+
## 何时使用 / When to Use
|
|
54
|
+
|
|
55
|
+
- 需要判断问题是否为凸优化以决定求解难度。
|
|
56
|
+
- 为算法/算子/训练设计选择优化方法,并评估其 GPU 可行性。
|
|
57
|
+
- 在约束条件下做可量化目标的理性决策。
|
|
58
|
+
- 实验设计、资源分配、超参/结构搜索的系统优化。
|
|
59
|
+
- 不确定当前策略是否最优,想系统分析(凸性、对偶、灵敏度)。
|
|
60
|
+
|
|
61
|
+
## 方法流程 / Method
|
|
62
|
+
|
|
63
|
+
### 第一步:定义目标 / Define the Objective
|
|
64
|
+
明确最大化/最小化什么。关键:单目标还是多目标?是否可量化(否则找代理变量)?静态还是动态?**$f$ 是否凸**(凸则局部=全局,非凸需警惕局部极值)?方向错了,走得越远越偏。
|
|
65
|
+
|
|
66
|
+
### 第二步:列出约束 / List the Constraints
|
|
67
|
+
区分**硬约束**(物理/预算/deadline)与**软约束**(偏好/质量下限);数学上分类:不等式 $g_i(x)\le 0$(定义可行域边界)、等式 $h_j(x)=0$(降维)、线性(可行域为凸多面体)vs 非线性(可能非凸)。
|
|
68
|
+
|
|
69
|
+
### 第三步:类型分类 / Classify the Problem Type
|
|
70
|
+
|
|
71
|
+
| 类型 | 目标 | 约束 | 核心性质 | 典型方法 |
|
|
72
|
+
|------|------|------|----------|----------|
|
|
73
|
+
| LP 线性规划 | 线性 | 线性不等式 | 最优在顶点 | 单纯形法 |
|
|
74
|
+
| QP 二次规划 | 二次 | 线性 | 正定 QP 为凸 | 内点法 |
|
|
75
|
+
| 凸优化 | 凸 | 凸不等式+线性等式 | 局部=全局 | 梯度下降、内点法 |
|
|
76
|
+
| 非凸优化 | 非凸 | 任意 | 多局部极值 | 全局搜索、模拟退火 |
|
|
77
|
+
| 组合优化 | 离散域 | 任意 | NP-hard 常见 | 分支定界、启发式 |
|
|
78
|
+
| 随机优化 | 含随机项 | 可能含随机 | 期望最优 vs 随机可行 | SAA、鲁棒优化 |
|
|
79
|
+
|
|
80
|
+
### 第四步:寻找最优解 / Find the Optimal Solution
|
|
81
|
+
- **LP/QP/凸**:利用凸性,梯度类或内点法保证收敛到全局最优。
|
|
82
|
+
- **非凸**:多起点、全局搜索,或松弛为凸近似。
|
|
83
|
+
- **组合**:精确解常 NP-hard——小规模分支定界,大规模启发式/近似。
|
|
84
|
+
- **随机**:样本平均近似(SAA)转化为确定性近似。
|
|
85
|
+
- **信息不足**:满意解(satisficing)即可。
|
|
86
|
+
|
|
87
|
+
### 第五步:灵敏度分析 / Sensitivity Analysis
|
|
88
|
+
拉格朗日乘子 $\lambda_i^*$ 为第 $i$ 个约束的**影子价格**——约束放松一单位,目标改善约 $\lambda_i^*$。互补松弛:$\lambda_i^*=0$ 为非活跃约束(对最优解无影响);$\lambda_i^*>0$ 为活跃约束(最优解恰在其边界)。关注:约束/目标微小变化时最优解如何变、哪些约束活跃。
|
|
89
|
+
|
|
90
|
+
### 第六步:多目标与帕累托 / Multi-Objective & Pareto
|
|
91
|
+
多目标 $f_1,\dots,f_k$ 通常无单一最优解。帕累托最优:不存在使所有目标同时改善的可行解。方法:**加权求和** $\min\sum w_i f_i$(不同权重对应前沿不同点);**$\epsilon$-约束法** $\min f_1$ s.t. $f_i\le\epsilon_i$(遍历 $\epsilon_i$ 覆盖前沿)。
|
|
92
|
+
|
|
93
|
+
### 第七步:监控约束变化 / Monitor Constraint Changes
|
|
94
|
+
最优解依赖约束——约束变了就要重新优化。活跃约束的变化影响最大(影子价格高),非活跃约束的微小变化通常不影响最优解。
|
|
95
|
+
|
|
96
|
+
## 常见错误 / Common Errors
|
|
97
|
+
|
|
98
|
+
| 错误 / Error | 批评 / Critique | 正确做法 / Correct Approach |
|
|
99
|
+
|-------------|----------------|---------------------------|
|
|
100
|
+
| 没有明确目标就优化 | 方向不确定 | 先精确定义目标 |
|
|
101
|
+
| 忽略隐式约束 | "最优解"实则不可行 | 穷尽检查所有约束 |
|
|
102
|
+
| 陷入局部最优 | 非凸贪心不保证全局 | 验证凸性;非凸用多起点/全局法 |
|
|
103
|
+
| 把最优当唯一 | 最优解可能不唯一 | 检查是否存在多个等价最优解 |
|
|
104
|
+
| 多目标用单目标方法 | 不同目标需 trade-off | 使用帕累托分析 |
|
|
105
|
+
| 未验证凸性 | 非凸误用凸方法 | 先判断凸性再选方法 |
|
|
106
|
+
| 忽略对偶理论 | 对偶问题可能更易解 | 构造对偶,利用强对偶性 |
|
|
107
|
+
| 混淆可行与最优 | 可行不一定最优 | 先验证可行性再验证最优性 |
|
|
108
|
+
| 忽略计算/GPU 复杂度 | 二阶法/组合优化可能不可算 | 评估复杂度,过 GPU 八维门,必要时近似 |
|
|
109
|
+
| 忘记重新优化 | 约束变了未更新 | 定期检查约束变化 |
|
|
110
|
+
|
|
111
|
+
## 操作规程 / Operating Procedure
|
|
112
|
+
|
|
113
|
+
当本 skill 被触发时,输出必须包含:
|
|
114
|
+
|
|
115
|
+
1. **目标函数**:`[目标]: [描述]` + `[凸性]: [凸/非凸/未知]`
|
|
116
|
+
2. **约束清单**:每条标 `[硬/软]` 与 `[不等式/等式]` `[线性/非线性]`
|
|
117
|
+
3. **类型分类**:`[类型]: [LP/QP/凸/非凸/组合/随机]`
|
|
118
|
+
4. **可行域分析**:哪些选项可行?活跃约束是哪些?
|
|
119
|
+
5. **最优解/满意解**:`[策略]: [梯度法/内点法/全局搜索/satisficing/帕累托]`
|
|
120
|
+
6. **灵敏度分析**:关键约束影子价格?变化 X% 结论如何变?
|
|
121
|
+
7. **GPU 可行性**(若用于算法/算子/训练):求解方法过八维门,标注友好/可改造/不友好 + 改造建议。
|
|
122
|
+
8. **行动建议**:明确写出"接下来我将……"
|
|
123
|
+
|
|
124
|
+
**输出不得只给分析而无结论。**
|
|
125
|
+
|
|
126
|
+
## 与其他 skill 的关系 / Relations to Other Skills
|
|
127
|
+
|
|
128
|
+
- **建模思想**:优化前需先建模——定义目标与约束本身就是建模。
|
|
129
|
+
- **概率与统计**:不确定性下的优化需随机/鲁棒优化。
|
|
130
|
+
- **变换思想**:变换到对偶问题常更易求解;对偶是优化中最深刻的变换。
|
|
131
|
+
- **博弈思想**:多决策者同时优化即博弈,纳什均衡为多人优化的稳定点。
|
|
132
|
+
- **算法思想**:求解依赖算法设计——凸优化用梯度法,组合优化需分支定界/启发式。
|
|
133
|
+
- **现代数学激活**:`../../references/books/optimization-ml.md`(GPU 友好优化器、二阶法可行性)、`matrix-analysis.md`(条件数、低秩、预条件)。
|