很多同学在做机器学习类毕业设计时,会遇到这样的情况:前几天跑出过一个不错的结果,过几天再跑却对不上;答辩时老师问起某组参数为什么这样设置,只能含糊回答。这类问题大多不是模型本身不行,而是实验过程没有留下可追溯的记录。实验记录不是额外负担,它既是论文中实验结果部分的依据,也是答辩时回答细节问题的底气。
一份完整的实验记录至少应包含以下信息:数据来源与版本、训练集验证集测试集的划分方式、预处理步骤、随机种子、模型结构或算法参数、超参数取值、评估指标及其计算方式、运行环境与依赖库版本、运行时间。建议把这些内容写成独立的配置文件,而不是散落在代码注释或聊天记录里。配置与结果一一对应,日后回看时才能知道某个数字是在什么条件下得到的。
在目录组织上,可以按实验编号或日期建立子目录,每个目录内放置配置文件、运行脚本入口、日志、评估结果和生成的图表。命名尽量包含模型名称、关键参数和数据版本,例如用模型名加参数缩写加序号的方式,避免出现“新建文件夹”“最终版”“最终版2”这种无法追溯的命名。图表与原始日志分开存放,便于写论文时直接取用。
复现的关键在于固定不确定性来源。设置随机种子只是第一步,还要注意数据读取顺序、多线程或并行计算带来的差异、预训练权重的版本、以及不同硬件和库版本可能造成的数值偏差。比较稳妥的做法是记录一条完整的运行命令,并在另一台机器或另一个时间点实际执行一次。需要区分“能跑通”和“结果一致”这两件事,前者只说明代码没报错,后者才是复现。
写进论文时,建议把主实验与消融实验分开呈现,图注中写清所用指标、数据划分方式和对比对象。