STEM 评测
STEM 评测覆盖科学、技术、工程和数学知识的理解与应用。它比纯数学评测更宽,考察模型在物理、化学、生物、计算机等学科中运用概念与公式解决问题的能力。
STEM 评测的题源可以分为两类:一类是面向考试的学科选择题,例如 MMLU 的 STEM 子集;另一类是面向研究级的科学问答,例如 GPQA(研究生水平、需专家级知识且有意避开网络易查内容)与 SciBench、TheoremQA 等更强调计算与推理的题集。前者测「学科知识面」,后者测「深度推理」,两者结合才能完整刻画模型的科学能力。
快速开始¶
按学科和难度分层报告成绩,保留答案解析与评分规则,避免只汇总一个平均分。
选定题集后,先按学科(物理、化学、生物、计算机、工程等)和难度分层,分别统计准确率,而不是只报一个总平均分。学科间能力差异很大,混合平均分会把某一学科的短板或长板抹平,失去诊断价值。
评分前要明确解析与判分规则,例如选择题如何提取选项、填空题如何处理单位与有效数字、计算题如何归一化数值表达,并保留答案解析以备复核。评分脚本应可复现,最好用固定随机种子重跑一次确认结果一致。一个带单位的数值归一化示例:
from pint import UnitRegistry
ureg = UnitRegistry()
def to_si(value_str: str) -> float:
return ureg.Quantity(value_str).to_base_units().magnitude
assert abs(to_si("3 km/h") - to_si("0.833333 m/s")) < 1e-3
assert abs(to_si("100 cm") - to_si("1 m")) < 1e-6
验证成功的标准:解析器能把「3 km/h」与「0.833 m/s」判为等价、把「100 cm」与「1 m」判为等价;用固定种子重跑评分得到一致结果。
报告时同时给出每个分层下的样本数与无效输出率。样本过小的分层,其分数波动大,不应与其他分层直接比较,需要标注样本量或给出置信区间。
关注点¶
选择题可能受格式和猜测影响;开放题需要可验证答案或人工复核。题目污染与单位、符号解析错误同样重要。
选择题便于自动评分,但会引入格式与猜测偏差:模型可能对选项顺序敏感,或在不确定时按某个固定位置作答。必要时可用多个选项顺序的变体来估计这种偏差的大小。
开放题更贴近真实应用,但评分困难:答案需要可验证,或引入人工复核。数值型开放题要重点处理单位和有效数字,例如「0.5」与「1/2」、「3 m」与「300 cm」是否等价,解析器若不一致会造成大量误判。
题目污染同样影响 STEM 评测,公开题集若被训练覆盖,分数会虚高;应辅以去污染检测或时间后新题验证。GPQA 的设计即有意选择那些搜索引擎不易直接命中、需要专业推理才能作答的题目,以降低「检索即答案」的捷径。同时注意符号解析错误,例如把化学式或单位符号读错,这类错误应单独统计以区分「知识不会」与「解析失败」。
案例¶
分别统计物理、化学和工程题准确率,并检查模型是否在单位换算题上系统失败,从而定位薄弱能力。
取一份同时包含物理、化学和工程题目的题集,按学科分别统计准确率。若三个学科分数差异明显,说明模型的短板集中在某一学科,而不是整体 STEM 能力不足。
再从其中抽出单位换算题单独统计,例如「将某速度从 km/h 换算为 m/s」或「将某浓度从 mol/L 换算为 g/L」。若这类题的系统错误率显著高于同难度其他题,说明瓶颈可能在单位与量纲处理,而非概念理解。
排查时先看错误样本:若模型写出了正确思路但单位错了,属于单位解析问题;若思路本身偏离,则属于知识问题。二者对应不同的优化方向,混在一起无法定位。