问题
你的 prompt 在任务评测上得分为 62%。你想改进它。朴素的做法是无梯度的人工反复调整,可扩展性很差。强化学习需要奖励信号和足够多的 rollout 才能训练。通过 prompt 做反向传播实际上不可能——prompt 是离散字符串,不是可微参数。
经典的仿生优化——PSO 用于连续搜索空间,ACO 用于路径选择——正是为这种情形设计的:无梯度、基于种群、单次评估成本低。把它们与 LLM 结合起来完成无梯度的搜索步骤,你会得到一个出奇实用的优化器。
同样的模式也适用于多 Agent 系统中的 Agent路由。ACO 风格的信息素轨迹记录哪个 Agent 在哪类任务上表现最好,让路由器能利用这条轨迹,同时信息素会衰减,使路由可以被重新发现。
概念
PSO 回顾(Kennedy & Eberhart 1995)
粒子群优化(Particle Swarm Optimization):连续搜索空间中的一个粒子种群。每个粒子有位置 x_i 和速度 v_i。每次迭代:
v_i <- w * v_i + c1 * r1 * (p_best_i - x_i) + c2 * r2 * (g_best - x_i)
x_i <- x_i + v_i
evaluate fitness(x_i)
update p_best_i if improved
update g_best if global best其中 p_best 是粒子自身的历史最优,g_best 是整个群体的历史最优,w, c1, c2 分别是惯性、认知和社会权重,r1, r2 是随机因子。
在 LLM 输出上应用 PSO —— LMPSO
arXiv:2504.09247 将 PSO 适配到 LLM 生成的结构化输出(数学表达式、程序)。每个粒子是一个候选输出。速度是一段prompt,描述如何把当前输出朝个体最优/全局最优修改。LLM 根据速度 prompt 生成新输出。速度的「惯性」是一段类似「做小幅增量修改」的 prompt。
它在以下情况下效果良好:
- 输出是结构化的(可解析、可评估)。
- 适应度是自动的(测试运行、算术求值)。
- 种群规模小(约 10-30 个粒子),使 LLM 调用总量可控。
当适应度需要人工评审时效果不佳——每次迭代的成本会变得难以承受。
Model Swarms
arXiv:2410.11163 把 PSO 从输出层移到模型层。每个「粒子」是一个专家 LLM(参数)。群体通过无梯度更新把参数朝集体最优移动。报告结果:在 9 个数据集上相比 12 个基线平均增益 13.3%,每次迭代仅用 200 个实例。
关键洞察是,LLM 专家模型本来就位于共享参数流形上的邻近位置(adapter 权重、LoRA 增量)。在这个低维子空间上做 PSO 既便宜又有效。
ACO 回顾(Dorigo 1992)
蚁群优化(Ant Colony Optimization):蚂蚁在图上遍历;每条路径带有信息素轨迹。蚂蚁的移动概率按信息素强度加权。完成任务的蚂蚁会按解的质量沉积信息素。信息素随时间衰减。
AMRO-S —— 用于 Agent 路由的 ACO
arXiv:2603.12933 将 ACO 用于多 Agent 路由。每种任务类型是一个「目的地」;每个 Agent 是一条可能的路线。信息素会强化产出良好输出的路线。关键贡献:
- 可解释的路由证据。 信息素强度是一个人类可读的信号。
- 质量门控的异步更新。 只有在质量检查通过后才更新信息素,将推理与学习解耦。
- 4.7 倍加速,在多 Agent 路由基准上。
质量门控很重要:没有它,快但错的 Agent 会累积信息素,系统会锁定在糟糕的路线上。
何时对 LLM 使用 PSO / ACO
在以下情况使用 PSO:
- 搜索空间是连续的,或可映射到连续参数(prompt embedding、LoRA 权重、数值生成参数)。
- 适应度计算便宜且自动。
- 种群规模可以很小(10-30)。
在以下情况使用 ACO:
- 你面对的是路由或路径选择问题。
- 决策随时间得到强化(相同任务类型会反复出现)。
- 你需要可解释的路由决策证据。
在以下情况两者都不要用:
- 适应度需要人工评审(每次迭代太贵)。
- 搜索空间是离散组合式的,PSO 覆盖不了(改用遗传算法)。
- 实时决策需要严格延迟(PSO/ACO 相对单遍启发式收敛太慢)。
仿生方法为何仍然胜出
基于梯度的方法需要可微信号。LLM 输出和路由决策并不容易求导。伪梯度方法(强化学习路由、DPO 式 prompt 调优器)可行,但需要昂贵的训练。
PSO 和 ACO 只需要一个评估器函数。只要你能给候选输出或路由决策打分,就能在该空间上优化。这大大降低了适用门槛。
实际限制
- 种群预算。 N 个粒子 × T 次迭代 × 每次评估成本。按每次调用约 $0.02 的 LLM 评估计算,20 个粒子、50 次迭代的 PSO 约需 $20。要提前规划。
- 探索与利用。 信息素衰减率和 PSO 惯性需要权衡;衰减太快 → 忘记解;太慢 → 卡在早期局部最优。
- 灾难性漂移。 两种算法都可能先收敛再发散——如果适应度景观发生偏移(新的数据分布)。要监控最优适应度的稳定性。
构建它
code/main.py 实现了:
LMPSO——在数值 prompt 参数(temperature、top_k 权重)上的 PSO。每个粒子的「LLM 生成」用一个脚本化的适应度函数模拟。运行算法 30 次迭代,展示 g_best 收敛。AMRO_S——ACO 风格的路由。3 个 Agent、4 种任务类型、信息素矩阵、100 个路由任务。打印(任务类型 → Agent 选择)随时间的分布,以展示轨迹的形成。- 对比:在同一任务流上比较随机路由与 ACO 路由。测量质量与延迟。
运行:
python3 code/main.py预期输出:
- LMPSO:g_best 适应度从随机水平提升到接近最优,历经 30 次迭代。
- AMRO-S:信息素表在每种任务类型上稳定到正确的 Agent;ACO 路由在质量上比随机路由高约 30-40%,同时降低延迟(重试更少)。
使用它
outputs/skill-swarm-optimizer.md 帮助在 PSO、ACO、遗传算法和基于梯度的优化器之间做选择,用于 LLM / Agent 优化问题。
交付它
- 从小开始。 10-20 个粒子,20-50 次迭代。只有在收敛曲线显示明显增益时才扩大规模。
- 每次迭代记录信息素或 g_best。 没有轨迹可看时调试群体优化器十分痛苦。
- 对更新做质量门控。 尤其对 ACO 路由:快而错的 Agent 绝不能累积信息素。
- 在分布偏移时重置衰减。 当评估分布变化时,陈旧的信息素已过时;重置或暂时把衰减率加倍。
- 限制每次迭代成本。 输出每次迭代成本的指标。每次迭代花 $500 却只提升 0.5% 的 PSO 不可交付。
练习
- 运行
code/main.py。观察 LMPSO 的收敛。将种群规模改为 5、10、20、50。规模多大时收敛时间饱和? - 实现「灾难性漂移」实验:在第 30 次迭代后改变适应度函数。PSO 适应得有多快?重置
p_best是否有帮助? - 给 AMRO-S 添加质量门:仅在评估分数 > 0.7 的运行中沉积信息素。这与无门控版本相比如何改变收敛?
- 阅读 LMPSO(arXiv:2504.09247)。把论文中「速度即 prompt」映射回你的数值速度。仿真中丢失了什么,又保留了什么?
- 阅读 AMRO-S(arXiv:2603.12933)。用异步信息素更新实现解耦的「推理快路径」。在持续负载下这会如何改变系统延迟?
关键术语
| 术语 | 常见说法 | 真实含义 |
|---|---|---|
| PSO | 「粒子群优化」 | Kennedy-Eberhart 1995。基于种群的无梯度优化器。 |
| ACO | 「蚁群优化」 | Dorigo 1992。通过信息素轨迹进行路径/路线优化。 |
| LMPSO | 「带 LLM 生成的 PSO」 | arXiv:2504.09247。速度是一段 prompt;LLM 产生候选。 |
| Model Swarms | 「在专家权重上做 PSO」 | arXiv:2410.11163。在模型参数子空间上做无梯度更新。 |
| AMRO-S | 「用于 Agent 路由的 ACO」 | arXiv:2603.12933。任务类型 × Agent 的信息素矩阵。 |
| p_best / g_best | 「个体最优 / 全局最优」 | 每个粒子以及整个群体迄今找到的最优解。 |
| 信息素 | 「路由记忆」 | 边上的强度;随时间衰减;按质量沉积。 |
| 质量门控更新 | 「只从好的运行中学习」 | 信息素沉积以质量检查为条件。 |
| 灾难性漂移 | 「分布偏移」 | 适应度景观变化;旧的 p_best 和信息素变得过时。 |
延伸阅读
- Kennedy & Eberhart — 粒子群优化 — 1995 年的 PSO 论文
- Dorigo — 蚁群优化 — 1992 年 ACO 基础
- LMPSO — 语言模型粒子群优化 — 用于结构化 LLM 输出的 PSO
- Model Swarms — 无梯度 LLM 专家优化 — 模型权重子空间上的 PSO
- AMRO-S — 蚁群多 Agent 路由 — 带质量门控的信息素驱动路由