实验图表审计:图画得漂亮,不代表结论可靠
一、图表是证据,不是装饰
技术报告里的图表很容易变成装饰。曲线平滑、颜色清晰、柱状图漂亮,看起来就很有说服力。但图表的价值不是好看,而是准确表达数据。坐标轴截断、样本量不足、误差线缺失、不同条件混画,都会让读者误解结论。
实验图表应该接受审计。每一张图都要回答:数据从哪里来,处理过程是什么,是否展示了不确定性,是否支持文中的结论。
二、图表审计从数据链路开始
flowchart TD A[原始日志] --> B[清洗脚本] B --> C[聚合数据] C --> D[绘图脚本] D --> E[报告图表] E --> F[结论引用]如果图表无法追溯到原始日志和脚本,它就更像截图,而不是可验证证据。
三、绘图脚本要版本化
import pandas as pd import matplotlib.pyplot as plt df = pd.read_csv("metrics.csv") ax = df.groupby("model")["score"].mean().plot(kind="bar") ax.set_ylabel("Accuracy") plt.tight_layout() plt.savefig("score.png")真实项目中,绘图脚本、输入数据版本和生成时间都要保存。手工拖 Excel 画图很难复查。
四、误差线和样本量不能省
如果图里只给均值,不给标准差、置信区间或样本量,读者无法判断差异是否可靠。两个柱子相差一点,看起来明显,实际可能完全不显著。
坐标轴也要诚实。截断 y 轴会放大差异,双 y 轴容易制造错觉。不是不能用,而是必须明确标注,并说明为什么这样展示。
图表标题要对应结论。标题写“模型 A 显著优于模型 B”,图里就要有支持显著性的统计信息。否则标题是在替数据下结论。
最后,报告里最好保留图表审计清单。数据来源、过滤条件、聚合方式、样本量、误差表示和脚本路径都写清楚。图表越关键,审计信息越不能省。
图表还要避免选择性展示。只展示效果最好的数据点,不展示失败任务或异常样本,会让结论偏乐观。如果确实剔除了异常值,必须写明剔除规则和数量,不能手工删掉“不好看”的点。
颜色和图例也会影响理解。多个模型对比时,颜色映射要一致;训练曲线和平滑曲线要区分;不同实验条件不能用相同样式。视觉规范不是美术问题,而是避免读者误读。
对于时间序列曲线,要标注横轴含义。epoch、optimizer step、wall-clock time、processed tokens 表达的是不同维度。两个模型如果每个 step 处理 token 数不同,按 step 对齐可能并不公平。
最后,图表结论要能反向追溯。文中每一句“显著提升”“稳定下降”“收敛更快”,都应该能指向具体图、具体指标和具体统计方法。否则图表只是增强语气的装饰。
图表审计还要检查单位。延迟是毫秒还是秒,吞吐是 samples/s 还是 tokens/s,显存是 MiB 还是 MB,这些细节如果混用,会直接改变读者判断。单位必须出现在坐标轴或图注里。
对于多次运行结果,不建议只画最优曲线。可以画均值曲线和阴影区间,或者展示多条 run 的轨迹。模型训练本身有随机性,只展示最好一次,会让稳定性被高估。
还要保存生成图表的数据文件。图片本身不可计算,后续无法重新聚合或改样式。metrics.csv、绘图脚本和输出图片应该一起归档,形成完整证据链。
最后,图表审计可以作为报告发布前的固定步骤。只要是支撑核心结论的图,就检查数据来源、样本量、误差线、坐标轴、单位和脚本路径。这个流程不复杂,但能挡住很多不严谨结论。
五、总结
实验图表是技术结论的证据链,不是视觉装饰。数据来源、绘图脚本、样本量、误差线和坐标轴设置都要可审计。图画得漂亮不难,难的是让图表真正支撑结论。