TTT:Tree-of-Thought with Sperm Competition —— 一种受人类生殖选择启发的 LLM 创意演化框架
大语言模型(LLM)在开放创意任务上的一个核心缺陷是多样性坍缩:对同一提示反复采样,输出会迅速趋同,导致搜索陷入局部最优。本文把生物有性生殖中的精子竞争(sperm competition)过程抽象为一组演化算子,提出 TTT(Tree-of-Thought with Sperm Competition):先用思维树把提示扩散成一批结构化候选,再把每个候选视为一枚"配子",经过多代"精英保留—锦标赛选择—重组—变异—真实 LLM 重评"的竞争,最终仅有一个"受精"胜出。
本文的贡献是:(1) 形式化"过量生产 → 多级过滤 → 重组变异 → 单一胜出"的生殖选择类比;(2) 给出在 Super IDE 中的工程实现,包括真实 LLM 生成/评分、批量化、限流与失败降级;(3) 给出默认配置、LLM 调用预算的推导分析,并如实指出当前实现的语义交叉缺失、早熟收敛与缺乏受控评测等局限。
说明:本文是系统与方法报告,不包含受控实验的量化结果。文中所有数值均为实现中的参数或由其推导出的算术量,不是实测性能。
当把 LLM 当作"点子生成器"时,常遇到两个问题。其一是趋同:用较高的温度反复采样,得到的方案在语义上高度重叠;其二是无法择优:模型能生成大量文本,却缺少一个稳定、可加权的选择机制把"好点子"从"多点子"里筛出来。
Chain-of-Thought(CoT)让模型"说出推理过程",Tree-of-Thought(ToT)进一步把推理组织成树并做评估与剪枝,但它们本质上仍是单条精英路线的搜索:一旦评估函数偏置,错误就会被固化。我们希望在"探索"与"利用"之间引入一种更接近自然选择的机制。
有性生殖提供了一个极端的范式:过量生产 + 多级过滤 + 单一胜出。一次射精产生数亿枚遗传上各异的配子,经女性生殖道与卵丘—透明带层层筛选,最终通常只有一个精子与卵子结合。我们把这个过程形式化为算法算子,称之为 TTT。
精子竞争(sperm competition)由 Parker 在 1970 年提出,指当雌性在短时间内与多个雄性交配时,不同雄性的精子在雌性生殖道内相互竞争以获得受精机会的现象。它是交配后性选择的核心组成,解释了精子数量、精子形态、交配策略等性状的演化。
人类一次射精通常约 2–5 mL,精子浓度以世界卫生组织参考下限约为每毫升 1500 万,总量常达 10^8 数量级(约 2–3 亿)。然而:
"竞争"并非简单的"谁游得快"。形态、活力、DNA 完整性、顶体状态都会影响存活;卵丘与透明带以及输卵管环境构成物理与分子层面的过滤器;此外还存在卵子主动参与选择("卵子选择"假说)与部分物种的精子储存现象。因此更准确的图景是:大量廉价、各异的候选 × 多级、异质的筛选 × 单一胜出。
| 生物学现象 | 算法对应 |
|---|---|
| 过量生产配子(数亿) | 在思维树上批量生成远超需求的候选(>预算) |
| 多级过滤(生殖道、卵丘、透明带) | 多代重评 + 精英保留,逐步收敛 |
| 重组与突变 | 均匀交叉 + 特征/文本变异 |
| 精子储存(部分物种) | 精英池(每代保留 top-10%) |
| 单一受精 | 返回 argmax 的最佳方案 |
CoT 通过显式推理链提升复杂任务表现;ToT 把推理组织为树,以模型的自我评估来扩展与剪枝;Graph-of-Thoughts 进一步允许思想的合并与聚合;Self-Consistency 通过对多条推理链投票提升稳健性。这些方法共享"生成—评估—选择"的骨架,但选择算子通常较简单(投票或贪心)。
FunSearch 用 LLM 生成候选程序并由自动评分器筛选,在数学组合问题上超越了人类已知结果;AlphaEvolve 把这一思想推广到算法发现;EvoPrompt、OPRO 等把提示本身作为演化对象。它们证明了"LLM 生成 + 自动评估 + 演化循环"的可行性。
遗传算法、遗传编程、NSGA-II 提供了选择—重组—变异的经典算子;新颖性搜索与 MAP-Elites 强调用"多样性"而非单一适应度来对抗早熟收敛。TTT 的选择/重组算子直接借自这些经典机制,而用 LLM 充当适应度函数与生成器。
LLM-as-a-Judge 已被广泛用于开放式任务的自动评估,但存在位置偏差、长度偏差与自洽性不足。TTT 以低温(0.2)+ 批量打分 + 启发式兜底来缓解,但仍不能消除该问题(见第 7 节)。
一个"创意"被表示为一个节点 idea = (id, text, features, score, parent, children)。其中 text 是自然语言点子,features 是四个 0–1 的适应度分量,score 是它们的加权和。TTT 分两阶段:思维树扩散,以及精子竞争演化。
从空种子生成根节点,然后逐层分裂:第 d 层产生 branching^d 个节点,共 Σ_{d=0..depth} branching^d 个节点。这一步提供结构化的、覆盖不同思路的初始多样性,而非同一提示的随机重复。
把树的所有节点收集为初始"配子",若少于预算 N 则批量生成补足,再截断/采样到 N。每个配子都用 LLM 打分。
每一代重复以下步骤(伪代码见算法 1):按分数排序;精英保留 E = max(2, ⌊0.1·N⌋);用 锦标赛选择(k=3) 产生父代;均匀交叉混合两个父代的特征向量;变异以概率 pm 扰动特征并标记文本;然后对整代用真实 LLM 重新评分。精英保留对应"精子储存",最终 argmax 对应"受精"。
Algorithm 1 Sperm-competition evolution Input: prompt, budget N, generations G, pc, pm 1 tree = buildTree(prompt, b=4, depth=2) // 扩散,Σ b^d 个节点 2 P = treeNodes ∪ topUpTo(N) // 配子池 3 P = scoreLLM(P) // 批量 LLM 评分 4 for g = 1..G: 5 E = top max(2, floor(0.1·|P|)) by score // 精英 = 精子储存 6 for each slot in |P|-|E|: 7 p1, p2 = tournament(P, k=3) 8 c = uniformCrossover(p1, p2, pc) // 重组 9 c = mutate(c, pm) // 变异 10 P = E ∪ offspring 11 P = scoreLLM(P) // 每代真实 LLM 重评 12 return argmax score, top10
适应度由四个语义维度加权而成,权重在实现中固定:
| 维度 | 含义 | 权重 |
|---|---|---|
| novelty | 新颖度 | 0.25 |
| feasibility | 可行性 | 0.25 |
| relevance | 与任务的相关性 | 0.30 |
| elegance | 优雅度 | 0.20 |
评分由 LLM 批量完成(每批 16 条,温度 0.2,严格返回 JSON)。当调用失败或解析失败时,回退到启发式评分(基于文本长度、与提示的字符重叠、关键词等),以保证演化不会中断。
TTT 以纯前端模块形式集成在 Super IDE 中(通过 Electron 主进程的 ai-direct:send-message 通道调用模型),入口返回 {best, top10, stats, trace}。实现重点在于在限流环境下稳定运行。
2^attempt · 900ms + 抖动,最多 3 次;命中限流(429/503 等)才继续重试。任一环节失败都不会中断整体流程:生成降级为逐条生成,再降级为占位文本;评分降级为启发式。这保证了"永远返回一个结果",代价是降级时结果质量下降(需在日志中显式标注 realLLM 标志)。
| 参数 | LLM 版(默认) | 早期本地版 |
|---|---|---|
| 分支数 branching | 4 | 6 |
| 树深 depth | 2 | 3 |
| 种群 population | 40 | 200 |
| 代数 generations | 5 | 5 |
| 变异率 pm | 0.15 | 0.15 |
| 交叉率 pc | 0.4 | 0.4 |
按默认参数与"每次调用覆盖一整批"的实现逻辑,可推导出单次运行的调用量:
| 阶段 | 说明 | 调用数(约) |
|---|---|---|
| 树生成 | 根 / 第 1 层 / 第 2 层,各 1 次 | 3 |
| 补足生成 | 一次批量索要 19 条 | 1 |
| 初始评分 | 21 个节点,每批 16 | 2 |
| 补足项评分 | 19 条,每批 16 | 2 |
| 每代重评 × 5 | 40 条/代,每批 16 | 15 |
| 合计 | 不含重试与降级 | ≈ 23 |
精子竞争之所以适合作为 LLM 搜索的选择算子,在于它同时解决了三个问题:
与 ToT 的关键区别在于:ToT 是"生成—评估—剪枝"的树搜索,而 TTT 在其之上叠加了一个种群级的演化循环,并以生物学隐喻明确了"过量、筛选、单一胜出"的设计约束。
隐喻的价值不在生物学细节的忠实,而在于它指出了搜索的三个"旋钮":候选的产量、筛选的级数、以及最终萃取的唯一性。
我们认为诚实地列出以下问题比给出漂亮数字更重要。
当前实现里,交叉只混合特征向量,变异只对特征做数值扰动并给文本追加标记。也就是说,后代文本基本等同父代文本,演化实际搜索的是"评分空间"而非"创意空间"。由于 LLM 对相同文本的打分高度相关,这一机制难以产生真正的新点子,并可能导致早熟收敛——精英每代被保留,特征被反复微调直到饱和。
适应度完全依赖 LLM 裁判,存在位置/长度/自洽性偏差;批量打分时同批候选可能相互影响;启发式兜底会引入非语义的噪声。
branching / depth / population / generations / 权重均未经过系统消融;本文不含对照实验、置信区间或显著性检验,因此任何"更好"的说法都缺乏证据。
生物选择发生在开放的物理—生化环境中,选择压力是自然形成的;而这里的选择压力由 LLM 代理,是可被操纵、可漂移的。把"精子竞争"直接等同于算法优势是过度类比。
本文提出 TTT:把人类生殖中的精子竞争抽象为"过量生产—多级筛选—重组变异—单一胜出"的算子,叠加在思维树搜索之上,用于缓解 LLM 创意生成的多样性坍缩。我们给出了形式化描述、Super IDE 中的工程实现(批量、限流、降级)、默认配置与调用预算的推导分析。同时明确指出当前实现存在语义交叉缺失这一根本性局限,并给出以语义重组、质量-多样性档案与受控评测为核心的后续路线。
ttt-engine-llm.js;默认参数见 5.3。本文所有数值均为参数或由参数推导,未做性能声明。欢迎在此基础上开展消融与基准实验。