ScienceDiscovery用树搜索让科研代码自主迭代:两小时找到通用积分器
导语
科研中的许多工作并不是“一次生成、立即成功”,而是不断修改程序、运行测试,再从多个版本中选择更好的方案。openJiuwen 开源工作台中的 ScienceDiscovery,试图把这类试错过程交给搜索程序完成:模型不训练,参数不调整,变化的是每一轮产生的科研代码。
核心方法:把代码演进成一棵树
ScienceDiscovery将每个程序版本视为树上的一个节点。系统选择一个已有版本交给模型改写,在隔离沙箱中执行并评分,然后把新版本挂回树上。失败、超时或死循环的结果也会被记录,但不会影响主流程。
它的选择机制并非只追着当前最优版本走。一方面,高分节点更容易获得后续改写机会;另一方面,节点被访问多次后权重会下降,搜索便可能回到此前被搁置的分支。这种“深挖加铺开”的策略,既利用已有成果,也保留了跳出局部最优的机会。底层循环还支持并发候选、自动评估和结果合并,因此不同任务只需更换初始产物与评分函数。
几个案例说明了什么
- 在半无穷区间振荡积分任务中,搜索产生236个版本,历时约2小时;最终程序共247行,能够先判断发散和振荡特征,再选择相应算法。素材称,19道用于评分的测试题平均相对误差为0.07%。
- 在高斯超几何函数双精度求值中,48次扩展耗时598秒,生成199行程序;1000个未见过的测试点上,平均正确有效数字由9.836提高到11.771。
- 在 AlgoTune 的154项代码优化任务中,两组种子取得平均2.279倍加速。系统没有被提示采用某种具体优化技术,而是通过搜索自行发现改动方向。
- 在仅提供数字表的方程反推任务中,111道题有41.4%写出了正确方程,平均每题调用模型16.5次,采用的模型为 deepseek-v4-flash。
意义与边界
这套方法的价值不在于让模型凭一次回答“发明”算法,而在于把模型变成候选方案生成器,再用可执行的评分标准筛选和积累改进。对于数值计算、代码优化和符号回归等任务,机器几秒到几十秒即可完成验证,因而适合连续搜索。
但它并不等于科研自动化已经解决。真实实验往往需要数天甚至数月,且评分可能无法准确代表最终科学目标。要把树搜索推广到材料、生命或实验物理领域,还需要更快的仿真、代理模型和自动化实验平台,同时建立更可信的验证机制。换言之,搜索能力的上限,很大程度上仍由“能否快速且可靠地判断好坏”决定。
评论
正在确认登录状态……
正在加载评论……