Agent 竞赛优化技巧

Agent 竞赛优化技巧

本文档整理自 Kaggle Agent 相关竞赛的高分方案、学术论文及实战经验,涵盖 Agent 架构设计、Prompt 工程、记忆管理、工具使用、搜索规划等核心优化技巧。


一、Agent 架构设计

1.1 多智能体协作框架

维度 说明
核心思想 将数据科学流程分解为多个阶段,每个阶段由专门的 Agent 负责
典型角色 Reader(理解赛题)、Planner(规划方案)、Developer(编写代码)、Reviewer(审查代码)、Summarizer(生成报告)
协作方式 阶段间传递状态和上下文,每个 Agent 专注于特定任务
竞赛价值 比单 Agent 方案更稳定,各阶段质量可控,错误传播减少
代表方案 AutoKaggle(ICLR 2025)、Agent K v1.0(华为诺亚)

1.2 分阶段工作流

赛题理解 → 初步EDA → 数据清洗 → 深度EDA → 特征工程 → 建模验证预测
   ↓          ↓          ↓          ↓          ↓            ↓
 Reader    Planner    Developer   Reviewer   Developer    Summarizer
阶段 关键动作 输出
赛题理解 读取赛题描述、数据字典、评估指标 任务类型、目标列、特征列表
初步EDA 数据形状、缺失值、分布统计 数据概览报告
数据清洗 缺失值处理、异常值处理、类型修正 清洗后的数据集
深度EDA 特征相关性、目标分布、泄漏检测 特征分析报告
特征工程 交叉特征、聚合特征、编码转换 特征矩阵
建模验证 K折训练、OOF预测、模型融合 最终提交文件

1.3 多模型 Agent 协同

维度 说明
实践案例 Chris Deotte 使用 GPT-5.4 Pro + Gemini 3.1 Pro + Claude Opus 4.6 三个 Agent 协同
分工策略 不同 Agent 负责不同实验方向(EDA、基线、特征工程、模型融合)
成果 生成 60 万+ 行代码,运行 850 个实验,4 层 Stack 150 个模型获得第一名
关键 人类在环(Human-in-the-loop)控制方向,Agent 负责执行和迭代

二、Prompt 工程

2.1 系统 Prompt 优化

维度 说明
清晰简洁 使用简单直接的语言,既具体又灵活
结构化组织 用 XML 标签或 Markdown 标题划分部分(背景、指令、工具指南、输出格式)
最少话术原则 先用最佳模型测试包含所有预期的最少话术,再根据失效模式添加指令
示例驱动 <good-example><bad-example> 明确区分可取和不可取的行为
强调式指令 使用 "IMPORTANT"、"NEVER"、"ALWAYS" 等强调词引导关键规则

2.2 典型 Prompt 模板

EDA 阶段:

"Please write and run EDA code to understand the CSV files train.csv and test.csv"

基线构建:

"Please write full code pipeline to read train.csv and test.csv and train a kfold XGBoost model. Save the OOF and Test PREDS to disk as Numpy files. Display the metric score each fold and overall."

特征工程:

"Can you please try creating new features from [specific columns]? Try interactions, aggregations, and encodings. Save OOF and Test predictions."

模型融合:

"Can you please try combining all our OOF and Test PREDs using various meta models? Please try Hill Climbing, Ridge/Logistic regression, NN, and GBDT stackers."

2.3 Prompt 反模式

反模式 问题 改进
塞满边缘情况 Prompt 过长,模型忽略关键指令 用多样化示例替代规则堆砌
过于笼统 模型行为不可预测 提供具体约束和输出格式
假设共享上下文 Agent 不知道之前步骤的结果 显式传递状态和中间结果
脆弱 if-else 硬编码逻辑无法适应新情况 提供启发式规则和判断标准

三、记忆管理

3.1 多层记忆架构

记忆类型 作用 类比
Session(短期) 单次对话的上下文 应用状态(临时)
Working Memory(工作) 当前任务的推理状态 工作内存
Long-term Memory(长期) 跨对话的经验和知识 数据库(持久)

3.2 记忆管理策略

策略 说明 竞赛价值
自适应记忆 平衡近期详细上下文与历史摘要 避免上下文溢出,保留关键经验
经验提取 LLM 驱动的巩固,提取关键事实而非原始消息 存储"学习到的教训"而非原始日志
语义检索 基于含义的检索,而非关键词匹配 查询"验证分数下降"匹配"过拟合处理经验"
跨任务迁移 共享长期记忆实现知识迁移 之前赛题的经验可应用于新赛题

3.3 Agent K 记忆机制

动作类型 说明
长期记忆动作 管理外部数据库,将经验转化为决策指导
内部动作 更新工作记忆,塑造推理过程
外部动作 与环境交互,执行任务并获取奖励

四、工具设计与使用

4.1 工具库构建

工具类别 具体工具 用途
代码执行 Python REPL、Notebook 执行 运行生成的代码
调试工具 错误追踪、单元测试 验证代码正确性
数据操作 pandas、cuDF(GPU 加速) 数据处理和分析
建模工具 XGBoost、LightGBM、sklearn 模型训练和预测
可视化 matplotlib、seaborn EDA 图表生成
超参优化 HEBO、Optuna 自动调参

4.2 GPU 加速

维度 说明
核心优势 GPU 加速 pandas 操作(cuDF)可带来 10x~150x 速度提升
关键洞察 Agent 分析数据时,LLM 推理只需 1~2 秒,但数据处理可能很慢
加速库 cuDF(数据)、cuML(机器学习)、XGBoost GPU、PyTorch
竞赛价值 初始探索从 30 分钟缩短到 3 分钟,相同时间内可迭代更多假设
Kaggle 环境 免费 Kaggle GPU(T4/P100)即可运行完整 Agent 工作流

4.3 工具使用最佳实践

实践 说明
命名对象管理 允许 Agent 灵活命名、保存和检索中间结果
工具动态选择 根据当前阶段从配置文件确定需要的工具
工具遮蔽 在特定阶段隐藏不相关工具,减少 Agent 决策负担
工具组合 复杂任务需要多个工具协同(如 EDA → 特征工程 → 建模)

五、搜索与规划策略

5.1 ReAct(Reasoning + Acting)

维度 说明
核心思想 交替生成推理轨迹和任务特定动作
循环模式 Thought → Action → Observation → Thought → ...
优势 动态适应环境反馈,结合内部推理与外部工具
局限 在复杂 ML 流水线中难以生成有效的工具序列
适用 简单到中等复杂度的单步骤任务

5.2 树搜索方法

方法 说明 竞赛表现
MCTS 蒙特卡洛树搜索,探索代码优化路径 单独使用效果有限,状态评分不一致
LATS 语言 Agent 树搜索,结合 LLM 评估 比 MCTS 更稳定,但计算成本高
MCTS-Shaped 带形状奖励的 MCTS + 结构化文本反馈 在 ML-Tool-Bench 上表现最佳
Hierarchical MCTS 分层 MCTS,先规划阶段再规划动作 适合长流程任务
维度 说明
核心改进 在 MCTS 基础上引入图结构,支持轨迹回溯、跨分支引用、多分支聚合
解决痛点 传统树搜索中节点孤立,高质量方案分散在不同分支
竞赛价值 AutoMLGen 在 MLE-Bench 上获得冠军(12 小时预算内)
知识复用 允许历史轨迹复用和跨分支知识迁移

5.4 搜索策略选择指南

任务复杂度
  |
  +-- 简单单步: ReAct
  |-- 中等多步: MCTS / LATS
  |-- 复杂长流程: MCTS-Shaped / Hierarchical MCTS
  +-- 需要知识复用: MCGS

六、调试与错误处理

6.1 Debug Chain 机制

维度 说明
核心思想 结构化、系统化的调试链,迭代修复错误代码
流程 执行 → 捕获错误 → LLM 分析原因 → 生成修复 → 重新执行
单元测试 每个阶段用单元测试验证正确性
自动恢复 无需人工干预的自我修正能力
竞赛价值 Agent K 在单元测试失败时自动生成修复方案

6.2 错误分类与处理

错误类型 处理方式
语法错误 LLM 直接修复代码
运行时错误 分析堆栈追踪,定位问题代码
逻辑错误 通过单元测试发现,LLM 重新设计逻辑
数据错误 检查数据形状、类型、缺失值
资源错误 内存不足时启用梯度检查点或减小 batch size

七、实验管理与迭代

7.1 实验追踪

维度 说明
保存策略 每次实验(无论好坏)都保存 OOF 和 Test 预测到磁盘
记录内容 CV 分数、特征列表、模型参数、训练时间
命名规范 实验名包含关键信息(模型_特征_分数)
版本控制 用 Git 或文件名版本管理代码迭代

7.2 迭代加速技巧

技巧 说明
快速基线 先用最简单模型跑通全流程,再逐步优化
并行实验 多个 Agent 同时探索不同方向
增量改进 每次只改变一个变量(特征/模型/参数)
早停机制 CV 分数不提升时停止该方向探索
经验积累 将成功和失败的实验都记录到长期记忆

7.3 模型融合自动化

方法 说明
Hill Climbing 贪心选择最优模型组合
Ridge/Logistic 堆叠 用线性模型融合多个模型预测
NN 堆叠 用神经网络学习模型权重
GBDT 堆叠 用树模型捕捉非线性关系
四层 Stack Chris Deotte 方案:150 个模型分 4 层融合

八、人类在环工作流

8.1 人机分工

角色 人类负责 Agent 负责
方向控制 决定探索方向、选择模型类型 执行具体代码、报告结果
质量审查 检查特征合理性、数据泄漏 生成代码、运行实验
创意输入 提出新特征想法、领域知识 实现想法、评估效果
最终决策 选择提交方案、调整策略 生成候选方案、提供数据

8.2 干预时机

时机 人类动作
EDA 后 审查数据理解是否正确,补充领域知识
基线后 评估 CV 分数是否合理,决定下一步方向
特征工程后 检查特征是否有意义,排除泄漏特征
模型融合前 选择哪些模型参与融合,设定融合策略
提交前 最终审查,确认无数据泄漏和过拟合

九、典型 Agent Pipeline

9.1 表格数据竞赛 Pipeline

1. 赛题理解
   └── Agent 读取描述、数据字典、评估指标
   └── 输出:任务类型、目标列、特征列表

2. 初步 EDA
   └── Agent 编写并运行 EDA 代码
   └── 输出:数据形状、缺失值、分布统计

3. 基线构建
   └── Agent 训练 XGBoost/LightGBM 基线
   └── 输出:CV 分数、OOF 预测、Test 预测

4. 特征工程
   └── Agent 尝试交叉特征、聚合特征、编码
   └── 输出:改进的 CV 分数、新特征列表

5. 模型调参
   └── Agent 使用 Optuna/HEBO 自动调参
   └── 输出:最优参数、最终 CV 分数

6. 模型融合
   └── Agent 尝试 Hill Climbing、Stacking
   └── 输出:融合后的 Test 预测

7. 生成提交
   └── Agent 格式化提交文件
   └── 输出:submission.csv

9.2 多模态竞赛 Pipeline

阶段 工具/方法
数据理解 模态检测(文本/图像/音频)
预处理 对应模态的专用处理库
特征提取 预训练模型(BERT/ViT/Perch)
建模 深度学习框架(PyTorch)
融合 多模态融合策略

十、竞赛评估指标

10.1 Agent 性能指标

指标 说明 优秀标准
有效提交率 成功提交且格式正确的比例 > 0.85
超过中位数比例 提交分数超过中位数的比例 > 0.40
平均百分位排名 所有提交的平均百分位 < 45(越低越好)
奖牌获得率 获得奖牌(金/银/铜)的比例 > 0.25

10.2 代表方案表现

方案 模型 有效提交率 超过中位数 平均百分位 奖牌率
PiML o3-mini - 41.0% 44.7 29.5%
AIDE GPT-4o - 30.8% 38.8 23.1%
AutoKaggle - 0.85 - - 综合 0.82
Agent K - - - - 6 金 3 银 7 铜
AutoMLGen - - - - MLE-Bench 冠军

十一、关键经验总结

经验 说明
快速迭代是关键 竞赛成功取决于生成、测试、迭代想法的速度
GPU 加速不可少 数据处理速度直接影响 Agent 迭代效率
保存所有实验 每次实验都保存 OOF 和 Test 预测,便于后续融合
多 Agent 协同 不同 Agent 负责不同方向,比单 Agent 更全面
人类在环 人类控制方向,Agent 负责执行,效果最佳
结构化 Prompt 用 XML 标签组织 Prompt,比纯文本更可靠
记忆管理 跨对话的经验积累是 Agent 持续进步的关键
工具库完备 预验证的工具库比让 Agent 从头编写更可靠
调试自动化 自动调试和修复能力决定 Agent 的独立程度
搜索策略选择 根据任务复杂度选择合适的搜索方法