GPT 猜测 1 到 100 之间的数字

Hacker News Top 论文

摘要

本文介绍了一项实验,要求 GPT-4.1 在 1 到 100 之间随机选择一个数字,重复 10,000 次,然后分析结果分布与均匀基线相比是否存在偏差。

暂无内容
查看原文
查看缓存全文

缓存时间: 2026/05/25 12:46

exmergo/research-chatgpt-guesses-between-1-and-100 来源:https://github.com/exmergo/research-chatgpt-guesses-between-1-and-100

GPT 猜 1 到 100 之间的数字

人类的一个有趣特点是他们不擅长生成随机数。如果你让一个人“在 1 到 100 之间随便选一个数字”,他们的选择出奇地可预测。答案集中在 37 和 73,集中在“不整齐”的数字,以及像 42 和 69 这样的梗上,而整数则被悄然避开。真正的随机生成器会产生平坦的、均匀的分布。

本项目向 gpt-4.1 问了同样的问题 10,000 次,并刻画了它产生的分布,与均匀基线进行比较。一个在人类文本上训练的 LLM,会像一个公平的骰子一样行为,还是会继承人类那种不均匀的模式? 完整设计和方法论:docs/LLM Random Bias Experiment SDD.md

灵感

本实验是以 LLM 为焦点的后续研究,基于两个著名的人类选数偏差探索。

方法论

完整的实验设计在 SDD 中;要点如下:

  • 模型。 gpt-4.1(OpenAI),通过 Responses API 调用。它是一个非推理模型。它直接给出答案,而不是深思熟虑;我们测量的是它的原始输出分布,而不是推理策略。确切的模型字符串记录在每个原始 CSV 行(Model 列)和 data/raw/run_metadata.json 中,因此数据集是自描述的。
  • 样本量。 N = 10,000 次独立调用——足够进行卡方拟合优度检验,并且每个数字的比例稳定在约 ±0.5 个百分点。
  • 采样。 temperature = 1.0,因此模型使用其完整的采样分布。这就是实验:在低温度下,它只会重复一个数字。
  • 提示。 一个固定的系统提示指示模型仅输出一个介于 1 和 100 之间的整数;用户提示请求数字并携带一个唯一的 uuid4。(UUID 是请求追踪的卫生措施,不是缓存破坏——在 temperature = 1.0 时,每次调用都应该独立采样。)
  • 基线。 结果与均匀分布进行比较——即公平生成器会产生的分布——而不是与人类数据进行比较(见假设)。
  • 流水线。 四个阶段——收集 → 清洗 → 转换 → 统计,详见下文。清洗阶段验证每个答案是否是在 [1, 100] 范围内的整数,并报告拒绝率。

假设与局限性

这是一个说明性探测,而非确定性研究。关键注意事项——详见 SDD 的局限性部分的正式处理:

  • 单一模型。 结果仅描述 gpt-4.1,不推广到其他模型或提供商。
  • “随机性”是采样产物。 模型不是随机数生成器;它从学到的 token 分布中采样。我们刻画那个分布——我们并不声称模型试图随机。
  • 依赖提示和温度。 不同的提示措辞或采样温度可能会改变分布。两者都已固定并记录。
  • 不是“ChatGPT 产品”。 这是通过 API 在固定温度下测试模型——而不是面向消费者的 ChatGPT 应用,后者会添加路由、工具和超出我们控制的系统提示。

结果

gpt-4.1 显然不是均匀随机生成器。 卡方拟合优度检验(N = 10,000,df = 99)结果为 χ² = 15,604, p ≈ 0——偏差如此之大,以至于任何显著性阈值都下溢。当被要求给出一个随机数时,模型产生了一个不均匀的、明显具有人类形状的分布。

它重现了经典的人类尖峰

数字被选中的概率 vs. 均匀机会人类声誉
374.0ד最随机的数字”
424.0×银河系漫游指南
733.4×另一个著名的尖峰

总体被选中次数最多的五个数字——47, 57, 72, 37, 42——强烈偏向以 7 结尾的数字(五个中有三个),与人类“感觉随机”的数字选择相同。

它回避整数的程度甚至比人类更厉害

所有 10 的倍数,除了 10 本身,在 10,000 次调用中恰好被选中了 0 次。 10 恰好被选中了一次。人类回避整数——gpt-4.1 基本上拒绝了它们。

例外:69

有一个数字打破了人类模式。69 是人类过度选择的梗数字。gpt-4.1 选择不足(0.29× 预期:约 29 次出现,而预期约 100 次)。模型继承了“聪明”的梗(42),而不是粗俗的那个。我们的假设是,这是预训练和后训练中安全护栏的产物。这是数据集中最有趣的方面:模型的偏差并非人类偏差的原始复制,而是经过调节的版本。

结论

假设成立。一个在人类文本上训练的 LLM,被要求表现随机,会重现人类随机数选择的偏差:对 37 和 73 的偏好、42 的梗尖峰、对整数的回避——只有一个可能因护栏而异的例外。交互式分布图(https://viz.exmergo.com/share/eea2a7b6-82d4-4333-8853-e909d9dabd49)显示了 1–100 的完整形状。

所有数字均来自 data/processed/stats_summary.csv

流水线

收集 → 清洗 → 转换 → 统计。每个阶段读取前一阶段已提交的 CSV,因此任何阶段都可以单独重新运行。

阶段模块输出
收集llm_random_bias.collectdata/raw/chatgpt_random_results.csv
清洗llm_random_bias.cleandata/processed/chatgpt_random_clean.csv
转换llm_random_bias.transformdata/processed/distribution.csv
统计llm_random_bias.statsdata/processed/stats_summary.csv

设置

本项目使用 uv(https://docs.astral.sh/uv/)处理一切。

uv sync

路径 1——仅分析(免费,无需 API 密钥)

原始数据集已提交到本仓库,因此您可以分文不花地重现整个分析:

uv run python -m llm_random_bias.clean
uv run python -m llm_random_bias.transform
uv run python -m llm_random_bias.stats

路径 2——重新收集数据(需要 OpenAI API 密钥)

cp .env.example .env
# 然后编辑 .env 并添加你的 OPENAI_API_KEY
uv run python -m llm_random_bias.collect
# 然后按照路径 1 运行 clean / transform / stats

费用与运行时间: 大约 10,000 次对 gpt-4.1 的短调用花费约 2 美元,并且在默认并发下几分钟内完成。收集器拒绝覆盖现有的原始 CSV——请先删除它以重新收集。

可视化

分布柱状图是使用 Exmergo Viz(我们的人工智能仪表板代理)直接从 data/processed/distribution.csv 构建的。完整的交互式数据可视化可以在这里查看(https://viz.exmergo.com/share/eea2a7b6-82d4-4333-8853-e909d9dabd49)。

开发

uv run ruff check .
uv run ruff format .
uv run mypy src
uv run pytest

参见 CONTRIBUTING.md

许可

MIT 许可证——参见 LICENSE

相似文章

GPTs are GPTs: 大语言模型对劳动力市场影响的早期观察

OpenAI Blog

OpenAI的研究评估了GPT模型对劳动力市场的潜在影响,发现美国约80%的劳动者至少有10%的工作任务可能受到影响,其中高收入工作面临更大的风险。该研究将GPT定位为具有重大经济和社会意义的通用技术。

GPT-2: 1.5B 版本发布

OpenAI Blog

OpenAI 发布了 GPT-2 1.5B 参数模型,附带了人类对可信度感知的分析、通过在极端意识形态微调进行滥用的潜在风险,以及检测合成文本的挑战。检测模型达到约 95% 的准确率,但在实际部署中需要配套方法。

GPT-4

OpenAI Blog

OpenAI 发布 GPT-4,一个大型多模态模型,接受图像和文本输入,在专业和学术基准测试中表现出人类水平的性能,在各种评估指标上的表现明显优于 GPT-3.5。

基于人类偏好微调GPT-2

OpenAI Blog

OpenAI展示了使用人类偏好反馈对GPT-2(774M参数)进行微调,用于文本续写和摘要任务,风格任务需要5000个标签,摘要任务需要60000个标签,模型达到了86-88%的人类偏好率,但揭示了标注者启发式利用的问题。