← 科研空间 首页
ICLR 2026LLM-AADBehavioral Diversity

代码不像,算法就不同吗?

Rethinking Code Similarity for Automated Algorithm Design with LLMs — 用 problem-solving trajectory 重新定义算法相似性,并把 exploration 的单位从代码表面改成行为族。

📄 arXiv 论文页 ⬇️ 原版 PDF 🧾 OpenReview 💻 官方代码

阅读依据:ICLR 2026 / OpenReview 公开论文、arXiv 2603.02787 与官方代码仓库;检索日期 2026-07-15。本页为来源忠实的中文深读,不是逐句翻译。

先给结论

核心判断BehaveSim 真正改变的不是“相似度公式”,而是搜索中的多样性对象:从 code novelty 转向 behavior family。论文在三个 AAD 任务、两种搜索框架和匹配预算下观察到稳定性能改进;但它没有证明何时应切换 exploration/exploitation,也没有给出动态 controller。
14 / 14论文 active graphics 在本页全部覆盖
3 tasksASP、TSP、CPP;每种方法 3 次独立运行
2 integrationsFunSearch niche management 与 EoH helper objective

五句话抓住论文

  1. 代码相似性不等于算法相似性:BFS/DFS、递归/迭代实现、相同输出的不同排序过程都会让现有度量产生概念错位。
  2. 行为可以表示为中间解序列:PSTraj 记录算法从初始解到最终解的 problem-solving trajectory。
  3. BehaveSim 比较“怎么走”:先定义解间距离,再用 DTW 对齐不同长度轨迹,最后对问题实例与起点做双重期望。
  4. 行为多样性可成为搜索算子:FunSearch 按行为分岛,EoH 把与强解的行为差异作为辅助目标;两者在论文协议下均优于原方法。
  5. 这还不是节奏理论:论文支持“探索什么很重要”,尚未回答“何时探索、探索多久、哪条分支该探索”。

研究动机:代码表面会骗你

LLM-AAD 生成的是代码,但我们真正关心的是其中隐含的算法策略。若 archive、去重、聚类或 novelty reward 只看 token、AST、embedding 或最终输出,搜索可能把同一种行为的改写误当作探索,也可能把真正不同的策略合并掉。

代码相似性与算法行为错位的反例
Figure 1 · 反例总览。图中展示静态代码特征与最终输出都可能和求解行为错位。它提供的是代表性反例,不足以推出所有代码指标在所有任务上都失效。
TSP 中 argmin 与 argmax 导致不同轨迹
Figure 2 · 小改动,大行为差异。两个 TSP 实现仅在 `argmin()` / `argmax()` 上不同,却分别选择最近与最远城市;现有指标仍给出高相似度。该图只支持这个受控案例。

八种理论组合,为什么只保留四种?

类型 Text Result Behavior 处理
Type 1 相似 相似 不同 保留
Type 2 相似 不同 不同 保留
Type 3 不同 相似 相似 保留
Type 4 不同 相似 不同 保留
平凡 1 相似 相似 相似 排除:全相似
平凡 2 不同 不同 不同 排除:全不同
不可行 1 相似 不同 相似 排除:相同行为不应给出不同结果
不可行 2 不同 不同 相似 排除:同上

现有指标的平均分:它们到底混淆了什么?

方法 Type 1 Type 2 Type 3 Type 4
ROUGE 0.95 0.96 0.70 0.47
BLEU 0.83 0.94 0.42 0.16
CrystalBLEU 0.97 0.99 0.68 0.51
AST 0.96 1.00 0.76 0.57
CodeBLEU 0.97 0.94 0.91 0.75
CodeBERTScore 0.84 0.97 0.60 0.38
Jina-Code-Embedding 0.99 0.99 0.90 0.84
Qwen3-Embedding-0.6B 0.94 0.93 0.87 0.73
Execution Results 1.00 0.00 1.00 1.00
Exe-Trace + BLEU 0.86 0.95 0.61 0.54
Exe-Trace + Jina 1.00 1.00 0.87 0.77
Exe-Trace + Qwen3 0.99 1.00 0.91 0.78
BehaveSim 0.56 0.73 1.00 0.46
如何读这张表BehaveSim 的目标不是“所有列越高越好”,而是 Type 3 应高、Type 1/2/4 应低。表格支持它与人工定义的行为关系更一致;但数据集规模、案例构造与行为标签的外部有效性仍需更广泛验证。

数学表示及建模

1. 用 PSTraj 表示 problem-solving behavior

对迭代算法 $x_{t+1}=f(x_t)$,把求解时产生的中间解收集为:

$$\mathcal{T}=(x_0,x_1,\ldots,x_T).$$

这里记录的是“问题解如何被逐步更新”,不是全部变量、指令或函数调用。因此它比低层 execution trace 更接近作者想测量的求解逻辑。

2. 先定义单步解间距离

类别 / 序数 / 排列型
$$d(x,y)=\frac{d_{\mathrm{edit}}(x,y)}{d_{\max}}.$$
离散 / 连续型
$$d(x,y)=\frac{\lVert x-y\rVert_2}{D}.$$

3. 用 DTW 对齐不同速度、不同长度的轨迹

$$DTW(X,Y)=\min_{\pi\in\mathcal{A}(m,n)}\sum_{(i,j)\in\pi}d(x_i,y_j),$$
$$\operatorname{Sim}_{\mathrm{PSTraj}}(X,Y)=1-\frac{DTW(X,Y)}{\min\{|X|,|Y|\}}.$$

DTW 的作用是允许局部时间错位:两个算法可能以不同步速经过相似的中间状态。需要注意,归一化方式和解距离都带有问题特定假设。

4. 对实例和起点做双重期望

$$\operatorname{BehaveSim}(A_1,A_2)=\mathbb{E}_{I\sim P^I}\!\left[\mathbb{E}_{s\sim S_I}\!\left[\operatorname{Sim}_{\mathrm{PSTraj}}\big(\mathcal{T}(A_1,I,s),\mathcal{T}(A_2,I,s)\big)\right]\right].$$

这让相似度不只依赖单个实例或单一起点。实际计算只能用有限样本近似;若算法本身含随机状态,还需多次采样行为分布或固定随机种子。

BehaveSim 在 Rosenbrock 与 TSP 上的行为轨迹比较
Figure 3 · 构造效度示例。连续优化与排列解上的可视轨迹大体对应 DTW / mean-distance 相似度。它展示方法直觉,不是覆盖所有算法类型的验证。

轨迹压缩是否破坏结果?

设置 Type 1 Type 2 Type 3 Type 4
完整轨迹 0.56 0.73 1.00 0.46
截断 10% 0.55 0.73 1.00 0.47
截断 20% 0.55 0.73 1.00 0.48
截断 30% 0.57 0.73 1.00 0.52
截断 50% 0.65 0.75 1.00 0.64
每 1 步采样 0.57 0.72 1.00 0.52
每 2 步采样 0.56 0.74 1.00 0.59
每 5 步采样 0.62 0.82 1.00 0.74

中等程度截断/采样较稳定;激进压缩会明显改变 Type 1/2/4 分数。因此“轨迹可以便宜采样”是有条件的工程结论。

算法流程:把 behavior diversity 放进搜索

LLM 生成候选代码
从父代与提示产生算法
执行与评估
得到 fitness 与 PSTraj
计算 BehaveSim
识别行为族与差异
更新 archive
按行为 niche 或辅助目标管理
继续搜索
局部精炼并保留跨族信息流

FunSearch+BehaveSim:行为 niche

FunSearch 加 BehaveSim 的搜索流程
Figure 8 · FunSearch+BehaveSim 流程。图中展示数据库、选择、生成、评估与按行为注册。它解释机制,不单独构成绩效证据。

EoH+BehaveSim:辅助目标

EoH 版本不显式分岛,而是把 behavior dissimilarity 与 dominance 联合起来做父代选择和 population management。它偏向既有 fitness 竞争力、又与其他候选行为不同的个体。

共同抽象两种集成表面不同,但都在做同一件事:不要把代码变得不同本身当成探索,而要让 archive 保留不同的 problem-solving trajectories。

实验设计

ASP

Admissible Set Problem;最大评估 10,000 次。

TSP

5 个实例、每实例 50 城市;最大评估 2,000 次。

CPP

Circle Packing;最大评估 2,000 次。

维度 设置 为什么重要
LLM GPT-5-Nano via API 结论尚未验证跨模型稳健性
候选 timeout 50 秒 限制不可行或过慢程序
重复 3 次独立运行 曲线阴影与主表报告标准差
对照 FunSearch vs +BehaveSim;EoH vs +BehaveSim 同一基础框架内比较
指标 ASP/TSP relative gap 越低越好;CPP radii sum 越高越好 跨任务方向不同,不能直接比较绝对数值
识别边界这是强匹配对照,但不是把“behavior diversity”当作单一可操纵处理的纯因果实验:集成也改变了 archive assignment、parent selection 与 population management。

实验结果

三项任务的收敛曲线

ASP 收敛曲线
ASP。Top-10 相对 gap 的三次运行均值与标准差。
TSP 收敛曲线
TSP。Top-10 相对 gap 的三次运行均值与标准差。
CPP 收敛曲线
CPP。Top-10 半径和的三次运行均值与标准差。

主结果:top-1 与 top-10

方法 ASP Top-1 ↓ ASP Top-10 ↓ TSP Top-1 ↓ TSP Top-10 ↓ CPP Top-1 ↑ CPP Top-10 ↑
FunSearch 5.84 ± 0.55 6.15 ± 0.59 25.22 ± 0.56 27.46 ± 1.21 2.6259 ± 0.0051 2.6127 ± 0.0143
FunSearch+BehaveSim 5.24 ± 1.05 5.28 ± 1.01 17.37 ± 0.23 18.05 ± 0.42 2.6293 ± 0.0026 2.6249 ± 0.0036
EoH 5.99 ± 0.20 6.08 ± 0.31 18.86 ± 0.20 19.68 ± 0.42 2.5724 ± 0.0482 2.5535 ± 0.0562
EoH+BehaveSim 5.33 ± 0.85 5.59 ± 0.91 16.55 ± 2.80 17.20 ± 3.32 2.6263 ± 0.0054 2.6234 ± 0.0066

在论文设置中,两个 +BehaveSim 版本在三项任务的 top-1 与 top-10 均优于各自基础方法。TSP 的差异尤其大;同时 EoH+BehaveSim 的 TSP 标准差也更大,提醒我们不要只看均值。

行为聚类能解释代码聚类看不到的策略

30 个 TSP 算法在 BehaveSim 与 CodeBLEU 下的聚类
Figure 5 · 30 个 TSP 算法的层次聚类。Code 6/8 代码不同但都近似执行最近邻策略;Code 11/12 代码相近但打分逻辑导致行为分歧。结论限于该 checkpoint 样本与定性分析。

对 exploration / exploitation 的真正贡献

论文回答得最好先定义 exploration 的对象。代码 token、AST 或 embedding 距离可能只是 rephrasing;BehaveSim 让“新颖”指向新的 problem-solving trajectory / behavior family。

论文用两个几何量描述多岛搜索:

$$D_{\mathrm{intra}}(P_k)=\frac{1}{\binom{N}{2}}\sum_{i\lt j}\left(1-\operatorname{BehaveSim}(t_i,t_j)\right),$$
$$D_{\mathrm{inter}}(P_k,P_l)=\frac{1}{N^2}\sum_{t_i\in P_k}\sum_{t_j\in P_l}\left(1-\operatorname{BehaveSim}(t_i,t_j)\right).$$

低 intra-distance 表示一个岛内部聚焦于相似行为,可理解为分支内 exploitation;高 inter-distance 表示不同岛保持策略分离,可理解为 archive 级 exploration。

ASP 岛内与岛间行为距离
ASP diversity diagnostic。箱线图与曲线比较两种方法在 checkpoints 上的 intra/inter-island distance。
TSP 岛内与岛间行为距离
TSP diversity diagnostic。显示相同方向的行为 niche 结构;它仍是观测性状态量。

消融:跨岛交流和初始聚类是否有用?

跨岛选择概率与聚类消融
Figure 10 · ASP 消融。改变 $p_{s1}$ 并移除初始化聚类会改变收敛表现,支持这两个设计部件在当前协议下有贡献。
已经支持behavior-aware archive 能同时形成局部一致的分支和彼此分离的策略族;在本文预算和任务上,这种结构与更好的最终表现共同出现,消融也支持关键部件。
尚未支持没有比较“先探索后利用”、周期切换、停滞触发、分支异步触发或 learned controller;因此不能从本文读出最优节奏。

为什么“当前 prompt 是否已经足够优秀”还不能直接回答?

基础 prompt/operator 可能已经隐式学会一定的 exploration/exploitation 调度。BehaveSim 证明的是:即使 prompt 不变,换一个更接近算法行为的 archive / selection 表示仍会改变搜索结果。它没有比较隐式 prompt policy 与显式 controller 的动作价值,所以“prompt 已足够”与“需要显式节奏”都不能仅凭这篇论文定论。

我的评论

强点

  • 概念问题非常准确:algorithmic similarity 的对象不是代码表面。
  • 从度量到搜索再到可解释聚类,形成完整 utility chain。
  • 两种不同集成方式都改善结果,降低“只对某个框架偶然有效”的担忧。
  • 公开代码与 AlgoDisco 入口提供了复现起点。

局限

  • 只覆盖逐步更新中间解的迭代算法,one-shot 方法不适用。
  • 三项任务、单一 LLM、三次运行,外推仍有限。
  • PSTraj 的状态表示和距离函数依赖问题建模。
  • 集成同时改变多项搜索机制,无法把所有增益归因于纯 diversity reward。
最值得复用的研究资产不是再造一个 similarity score,而是把 BehaveSim 轨迹、behavior cluster、island assignment、frontier gain 和停滞事件对齐成可分析数据。这样才能研究“何时哪类探索有价值”。

One More Thing:从“多样性有效”走向“节奏可识别”

更有顶会价值的问题不是给 prompt 加一句“多探索”,而是估计同一搜索状态下 exploration 与 exploitation 的未来 frontier gain。

$$A_E(s_t)=\mathbb{E}[R_{\max}(t+h)-R_{\max}(t)\mid do(\mathrm{explore}),s_t],$$
$$A_X(s_t)=\mathbb{E}[R_{\max}(t+h)-R_{\max}(t)\mid do(\mathrm{exploit}),s_t].$$

BehaveSim 可以提供关键 state features:behavior-family entropy、dominant-family saturation、intra/inter distance、archive turnover、parent cycling 和新 behavior family 的 breakthrough hazard。真正要预测的是 $A_E(s_t)-A_X(s_t)$,而不是事后给轨迹贴“探索/利用”标签。

冻结 anchor
同一 archive 与父代
成对 replay
explore / exploit 动作
预算匹配
calls、tokens、候选数
测未来收益
frontier gain 与 hidden gain
训练 controller
与原 prompt、随机节奏、oracle 比较
边界声明这一节是基于论文资产提出的后续研究设计,不是 BehaveSim 论文已经验证的结论。

Reference / Evidence

作者
Rui Zhang · Zhichao Lu · City University of Hong Kong