告别位置偏差:MingLi-Bench 无固定点选项打乱算法原理深析
告别位置偏差MingLi-Bench 无固定点选项打乱算法原理深析【免费下载链接】MingLi-BenchA benchmark for evaluating LLMs on Chinese traditional fortune telling — Bazi (八字) and Ziwei Doushu (紫微斗数).项目地址: https://gitcode.com/gh_mirrors/mi/MingLi-BenchMingLi-Bench是用于评测大语言模型LLM中国传统命理推理能力的基准测试项目覆盖八字Bazi与紫微斗数Ziwei Doushu两大类命盘以 160 道来自全球算命师大赛2022–2025的选择题按精确匹配计分。本文带你深入它的选项打乱shuffle options算法解析其无固定点derangement打乱机制彻底告别选择题评测中的位置偏差。什么是位置偏差Position Bias很多模型在做选择题时存在对某个选项位置的先天偏好——比如更倾向于选A或者喜欢第一个、最后一个选项。如果题库中正确答案长期固定在某个字母上模型蒙对的概率会远高于 25%评测分数就会虚高失去参考价值。MingLi-Bench 的解决方案很直接在出题给模型之前随机打乱每道题的选项顺序并同步更新正确答案。对应 CLI 参数在 cli.py 中定义python -m mingli_bench.cli --model openai/gpt-4o --year 2025 --cot --astro --shuffle-options加一个--shuffle-options即可开启参数透传链路见 benchmark.py。算法核心三步走实现无固定点打乱整个打乱逻辑集中在 loader.py 的shuffle_question_options方法中核心流程分三步。第一步选项归一化定位正确答案不同题目数据格式可能不一致选项带字母、或纯文本算法先把每个选项统一成{letter, text}结构最多支持 A–H 八个选项再按字母定位出正确答案的下标。若题目缺少选项或答案、或答案在选项中找不到会记录警告并跳过打乱保证评测不中断见 loader.py。第二步以题目 ID 哈希为种子的确定性随机这是设计上最关键的一手。算法没有使用全局随机源而是取题目 ID 的哈希值作为随机种子取模 2³² 防止溢出见 loader.pybase_seed hash(question_id) % (2**32) local_random random.Random(current_seed)这样带来两个好处✅可复现同一道题在任何一次运行、任何一台机器上打乱结果都完全一致✅题间独立每道题使用独立种子互不影响。这对基准测试至关重要——跑两轮实验选项顺序不变分数差异才可信。第三步无固定点校验打乱直到每个选项都搬家普通随机打乱有个隐患打乱后某个选项可能还在原位比如 A 还是 A。只要有一个选项没动模型仍有位置作弊的空间。因此算法引入错排derangement校验逐位检查打乱后是否有任何选项留在原位置loader.py。一旦发现固定点就把种子加 1 重新打乱最多尝试 100 次for attempt in 0..99: seed base_seed attempt shuffled shuffle(range(n), seed) if no option stayed in place: break4 个选项下错排概率约为 44%平均 2–3 次就能命中100 次上限是纯粹的安全网万一耗尽会记录警告并采用最后一次结果绝不卡死流程。打乱之后答案与映射关系全程留痕打乱不是藏起答案而是同步重建题目重排选项并重新编号按新顺序给选项依次贴上 A、B、C… 的新字母迁移正确答案原正确答案跟着它的文本一起搬到新位置如C → B记录映射元数据把原始答案、新答案和逐字母映射表写入_option_shuffle_info字段loader.py。运行结束后这份映射会随逐题结果一起落盘到model_results.json见 benchmark.py你可以逐题核对模型答的 B 对应原题的哪个选项评测完全可审计。为什么这个设计值得借鉴消灭位置偏差错排保证零选项留在原位比单纯随机打乱更彻底确定性可复现ID 哈希种子让打乱结果跨运行稳定实验结果可对比、可复现️防御式编程缺答案跳过、100 次上限兜底、全程日志留痕160 题全量跑批不翻车。这套思路同样适用于任何选择题型 LLM 评测打乱顺序 同步答案 映射留痕 确定性种子四要素缺一不可。快速上手如果你想在自己的评测中加入同样的防偏差机制git clone https://gitcode.com/gh_mirrors/mi/MingLi-Bench cd MingLi-Bench pip install -r requirements.txt # 开启选项打乱只跑 2025 年 40 题 python -m mingli_bench.cli --model gpt-4o --year 2025 --cot --astro --shuffle-options题库结构可以在 data/data.json 中查看12 个类别事业、健康、婚姻、财运等均可用--categories过滤。评测时建议始终搭配--cot与--astro预计算命盘让分数反映模型的真实推理能力而非排盘计算能力。小结MingLi-Bench 用一个不到百行的小函数优雅地解决了选择题评测中最隐蔽的偏差来源选项位置。无固定点错排 题目级哈希种子 完整映射留痕既保证了公平又保证了可复现性——这正是基准测试四个字的分量所在。【免费下载链接】MingLi-BenchA benchmark for evaluating LLMs on Chinese traditional fortune telling — Bazi (八字) and Ziwei Doushu (紫微斗数).项目地址: https://gitcode.com/gh_mirrors/mi/MingLi-Bench创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考