Jev 掷骰子吗?

非确定性决策中的系统性偏差

结论

Jev 不能公平地掷骰子。更一般地说,在没有唯一正确答案的选择中,它的输出会受到选项位置和词语本身的影响,产生系统性偏差。

这些偏差说明 Jev 没有遵循最大熵原则 [6]:对题目信息没有确定的部分,它相当于做了多余的假设,可能使实际应用存在缺陷。

这些结论可能也适用于其他类似模型的应用:凡是让模型从一组选项中做选择的场景,都值得用类似方法检验是否存在系统性偏差。

我们之前研究过 GPT-4 生成随机数的能力(Does GPT-4 Play Dice? [1]),这次沿用类似的思路测试 Jev。 Jev 是 TypeSafe 推出的决策模型 [2]:它不生成文字,而是根据给定的题目背景和一组选项,返回选中的选项以及每个选项的概率。 Kanta Hayashi 也用公平骰子测试过 Jev,发现它给出的概率明显偏离 1/6 [4];本文在此基础上,重点考察选项位置和词语本身对结果的影响。 我们用 jev-1.13.0 做了六组实验。 当六个结果本应等可能时,让 Jev 从中选一个,它没有生成接近均匀的选择或概率分布,而是明显偏向排在第一的选项。 除了位置,词语本身也有影响:数字 1 和 dog 会比其他选项获得更多概率。

这种现象不只关系到掷骰子。它提示了一类更广泛的风险: 在非确定性决策中——也就是没有唯一正确答案、多个选项都可能合理的场景—— Jev 的输出可能被选项位置和词语本身影响,而不是只反映任务需要表达的偏好。 推荐、排序、路由、候选方案选择和平局裁决等应用,都可能因此产生不易察觉的系统性偏差。

本文把“没有客观唯一答案、多个选项都可能合理”的任务称为非确定性决策。 “非确定性”描述的是任务,不是模型的输出方式:Jev 不会随机抽取答案,而是给每个选项一个概率,并选择概率最高的一项。

我们做了什么

实验分为六步:

  1. 数字骰子:让 Jev 在六个等可能的点数中选择结果(第 1、2 节)。
  2. 动物骰子:把点数换成六种动物,观察偏差是否仍然存在(第 1、2 节)。
  3. 挪动数字 1:改变数字 1 的位置,区分位置影响和词语影响(第 3 节)。
  4. 猜动物:让 Jev 读 72 条不同的动物描述并猜出是哪种动物。这类题有唯一正确答案,属于确定性决策,用来检验选项顺序带来的偏差是否也会影响这类任务的判断(第 4 节)。
  5. 动物偏好:遍历六种动物的全部 720 种排列,观察主观偏好与选项顺序如何共同影响结果(第 5 节)。
  6. Noul 校准:前五步都让 Jev 从一组选项中选一个(Choice);这一步改成对每一面单独问是非题(Noul),检验它对 2 到 20 面公平骰的概率估计是否准确(第 6 节)。

主要结果

  1. Jev 不能生成公平的骰子结果

    六个点数本应等可能,但同一道题请求 2000 次,Jev 每次都选排在第一的点数。

  2. 第一项偏差不只出现在数字上

    把 1–6 换成六种动物后,Jev 仍然偏向第一项:自然顺序选 cat,打乱顺序后改选 fish。

  3. 词语本身也会影响概率

    数字 1 被放到第 4 位或第 5 位时,所在位置的概率都会明显升高;题目背景没有提到有哪些动物时,排在第 2 位的 dog 也得到 0.23 的概率,而数字题里排第 2 位的数字 2 只有 0.01。

  4. 有唯一正确答案时,顺序影响很小

    让 Jev 根据 72 条不同的描述猜是哪种动物,交换选项顺序后有 71 条答案保持不变。线索清晰和中等的描述全部答对。

  5. 主观偏好由“原有偏好”和“位置偏差”共同决定

    720 种排列中,Jev 有 599 次选择 dog;但当 cat 排在第一时,120 次全部改选 cat。其他动物排第一通常无法超过 dog。

  6. 换成逐项是非判断,概率不再集中到一项,但仍不准确

    用 Noul 分别判断公平骰的每一面时,同一个骰子各面的概率很接近;但 2 面骰每面只给 0.43(应为 0.5),20 面骰每面给 0.095(应为 0.05):大概率被低估,小概率被高估。

  7. 这种偏差可能进入实际应用

    在推荐、排序、路由或候选方案选择中,靠前选项和更讨喜的词语可能被高估,尤其是在缺少判断依据、多个选项都可能合理的时候。

因此,不能把 Jev 的选择结果当作随机数,也不能默认它在没有唯一答案时不受顺序影响。 公平抽样应在模型外完成;非确定性决策应轮换选项顺序、比较多种排列,并在真实数据上校准位置和措辞带来的偏差。

方法

实验只研究单次掷骰。每次请求包含三部分: 题目背景写「掷了一次公平骰」,问题问哪一面朝上,选项给六个面完全对称的说明。

模型固定 jev-1.13.0。数字组选项为 1–6,动物组为 cat, dog, bird, fish, horse, cow。 “动物骰子”仍是一枚公平的六面骰子,只是把六个点数分别换成六种动物名称,每个面对应一种动物。 这样可以检验偏差来自数字本身,还是来自选项排在什么位置。

实验 问题 规模
数字骰子哪一个点数朝上3 种题目 × 2000
动物骰子哪一种动物朝上3 种题目 × 2000
再次打乱数字哪一个点数朝上1 种题目 × 2000
根据描述猜动物这句话描述的是哪种动物72 句 × 2 种顺序
选择最喜欢的动物你最喜欢哪种动物全部 720 种排列
Noul 校准掷出的是不是某一面(每面单独问)8 种骰子 × 100

前五组实验使用 Choice 问法:Jev 每次除了给出答案,还会给每个选项一个概率,所有选项的概率加起来为 1。掷骰图展示的是 2000 次相同请求中这些概率的平均值。

几种题目有什么不同

问题本身不变。我们只改变题目有没有列出六个面,以及六个面的排列顺序。

数字组 · 哪一面朝上?

题目背景多了什么选项顺序
基础题只有「掷了一次公平骰」,不列出六个面1, 2, 3, 4, 5, 6
自然顺序列出 [1, 2, 3, 4, 5, 6]1, 2, 3, 4, 5, 6
打乱顺序列出 [4, 2, 6, 1, 5, 3]4, 2, 6, 1, 5, 3
再次打乱改成 [5, 3, 2, 6, 1, 4],把 1 从第 4 位移到第 5 位5, 3, 2, 6, 1, 4

动物骰子 · 哪一种动物朝上?

题目背景多了什么选项顺序
基础题不列具体动物cat, dog, bird, fish, horse, cow
自然顺序列出六种动物cat, dog, bird, fish, horse, cow
打乱顺序按与数字实验相同的方式打乱fish, dog, cow, cat, horse, bird

为避免措辞不一致,六个选项都使用同一种句式,只替换点数或动物名称。

1. 数字骰子与动物骰子:按骰面内容看概率

第 1、2 节使用同一批数据,即数字骰子和动物骰子各 3 种题目、每种请求 2000 次,只是分别按骰面内容和按选项位置来看。

这张图比较每个点数或动物得到的平均概率。自然顺序下,数字 1 和 cat 得到最高概率; 打乱顺序为 [4, 2, 6, 1, 5, 3],数字 4 排在第 1 位,数字 1 排在第 4 位。 最高概率转移到第一项 4,但数字 1 仍保留第二个明显的概率高点。

动物组采用对应顺序,fish 排在第 1 位、cat 排在第 4 位;此时只有 fish 明显突出。 另外,在基础题里,题目背景没有提到有哪些动物,选项仍按 cat、dog 开头排列。此时 cat 只得到 0.44,排第二的 dog 也得到 0.23,可能因为 dog 这个词更常见;同样条件下,数字题的第一项 1 得到 0.87,第二项 2 只有 0.01。红色柱表示每张小图中概率最高的选项。

不同题目中各数字和动物得到的平均概率
图 1 · 横轴表示骰面内容:上排是数字 1–6,下排是六种动物。每个骰面都固定画在自己的数字或动物名称下;虚线表示公平骰应有的 1/6。每种题目请求 2000 次。

小结:公平骰的每一面都应得到 1/6,但无论骰面是数字还是动物,Jev 都把大部分概率给了同一个选项,而且这个选项会随顺序改变:谁排第一,谁得到的概率最高。 此外,数字 1 和 dog 这些词本身也会多得到一些概率。

2. 按选项位置看概率

横轴改成选项排在第几位之后,数字和动物的差别基本消失:所有曲线都在第 1 位达到最高,其余位置大多低于 1/6。 数字实验在第 4 位还有一个较小的概率高点,因为那里放着数字 1; 动物实验的同一位置是 cat,这里没有出现类似的高点,cat 的概率只有约 0.06。这说明第一项偏差最强,词语本身也有较小影响。

数字组与动物组中每个选项位置得到的平均概率
图 2 · 每个位置得到的平均概率。点线表示 1/6。

小结:按位置看,数字骰子和动物骰子的曲线形状几乎一样,说明决定结果的主要是选项排在第几位,而不是骰面上写的是什么。 第 4 位的差别(数字 1 有高点,cat 没有)来自词语本身,影响比第一项偏差小得多。

3. 把数字 1 挪走,概率高点会不会跟着移动

原来的打乱顺序是 [4, 2, 6, 1, 5, 3],数字 1 在第 4 位。 新顺序改成 [5, 3, 2, 6, 1, 4],数字 1 移到第 5 位,第一项则改成 5。 最终答案全是 5;原来排第一的 4 被移到最后,就不再被选中。

第二个概率高点也跟着数字 1 移动。同样看第 5 位:原顺序放的是数字 5,概率只有 0.04;新顺序放的是数字 1,概率升到 0.15,约为原来的 3.5 倍。 第 4 位则从数字 1 换成数字 6,概率从 0.22 降到 0.16。

两种打乱顺序下各位置的平均概率,并标出数字 1 所在位置
图 3 · 最高概率始终在第一项。数字 1 从第 4 位移到第 5 位后,第 5 位的概率明显上升,第 4 位随之下降。

小结:挪动数字 1 之后,最高概率仍然跟着第一项走,第二个高点则跟着数字 1 走。 这说明位置偏差和词语偏差是两种不同来源的影响,而且会同时出现在同一道题里。

4. 根据描述猜动物(确定性决策)

前面的掷骰题没有正确答案;这一节换成有唯一正确答案的题,看位置偏差还会不会出现。 Jev 读一句英文描述,回答 Which animal does this sentence describe?(这句话描述的是哪种动物?),从同样的六种动物中选一个。

我们写了 72 条互不相同的描述,每种动物 12 句,句子里不直接出现动物名。按线索多少分为清晰、中等、模糊三档,每档 4 句,例如:

每句话用两种选项顺序各测一次:自然顺序以 cat 开头,打乱顺序以 fish 开头,共 144 次。

清晰句和中等句在两种顺序下都全部答对,清晰句给正确动物的概率都是 100%。模糊句准确率在自然顺序下为 75%,打乱顺序下为 79%,错误主要来自 cat/dog、horse/cow 这类相近动物。

72 句里只有 1 句在换顺序后改变答案:This soft-coated companion spends much of the afternoon asleep.(毛很软、下午大部分时间在睡觉的伙伴),正确答案是 cat。 自然顺序下 cat 排第一,Jev 却答成 dog;打乱后 cat 排到第 4 位,Jev 反而答对了。它也没有改选新的第一项 fish。

按清晰度的准确率、正确项概率,以及换顺序后的概率变化
图 4 · 左图是准确率,中图是正确动物得到的平均概率。右图是换顺序后正确动物的概率变化,横轴下方的“1→4”表示该动物从自然顺序的第 1 位移到打乱后的第 4 位。右图纵轴最大只有约 0.03;fish 从第 4 位移到第 1 位,平均变化仍为 0。

小结:题目有唯一正确答案、句子里又有足够线索时,Jev 会根据内容作答,选项顺序几乎不影响结果,掷骰题里那种“总选第一项”的现象没有出现。 线索模糊时 Jev 会出错,但错误主要是把相近的动物弄混,并没有偏向排在第一的选项。 这说明位置偏差主要出现在缺少判断依据的非确定性决策中。

5. 让 Jev 选自己喜欢的动物

问题是 Which animal do you like best?(你最喜欢哪种动物?)。题目背景和答案选项采用相同的动物顺序,每个选项的说明都使用同一种句式。 6 种动物的 720 个排列各请求一次,因此每个动物在每个位置都出现 120 次。

dog 被选中 599 次,放在第 2 到第 6 位时仍在约 80% 的情况下胜出,平均概率始终高于 0.5。 cat 排在第一的 120 次则全部改选 cat;cat 不在第一时一次都没赢。bird、fish、cow 即使排第一也没有赢。horse 只赢过 1 次,当时 horse 的概率是 0.37,dog 是 0.35。

每种动物在不同列表位置上的平均概率,以及 720 次最终选择的计数
图 5 · 偏好题中,排第一的动物不一定胜出。只有本身也很受偏爱的动物(cat)排第一时,才能压过 dog。

小结:“最喜欢哪种动物”同样没有唯一答案,但 Jev 本身明显偏爱 dog,这时位置偏差不能单独决定结果:排第一的动物只有本身也受偏爱(如 cat)时才会胜出。 也就是说,Jev 的主观选择由原有偏好和位置加成共同决定;同一组选项只是换一种排列,答案就可能改变。

6. 抛硬币吗?用 Noul 逐项判断

TypeSafe 的问题分几种类型,由请求中的 type 字段指定 [3]。前五节用的都是 Choice:把所有选项放进同一个问题,Jev 选出一项,并给每个选项一个概率,所有概率加起来为 1。 因为选项在同一个问题里分一份概率,一个选项多拿,其他选项就要少拿;前面看到的位置和词语影响,都出现在这种比较之中。

Noul 是是非题:一个问题只判断一个条件是否成立,Jev 只返回“是”的概率,不做选择。 同一次请求里可以问多个 Noul,它们各自独立判断,看不到彼此的答案,所以各题的概率加起来不一定等于 1。 用 Noul 问骰子时,每一面单独问一题,例如 Did the die land on 3?(掷出的是 3 吗?),选项之间不再互相竞争。 如果说 Choice 像掷一次骰子,从所有选项中挑一个,那么 Noul 更像为每一面各抛一枚硬币,只有“是”和“否”两种结果。 不过 Jev 不会真的抛出结果,它只报告“是”的概率,也就是这枚硬币偏向“是”的程度。

这一节用 Noul 检验 Jev 对等可能事件的概率估计是否准确。题目背景写「一个公平的 N 面骰,各面编号 1 到 N,掷一次」,N 取 2、3、4、6、8、10、12、20,每一面单独问一题,每种骰子请求 100 次。 公平时,每一面的概率应为 1/N,所有面加起来应为 1。

公平 N 面骰每一面的真实概率与 Jev 的 Noul 估计,以及各面概率之和
图 6 · 左图:灰色虚线是真实概率 1/N,红线是 Jev 对每一面给出的平均概率,误差线表示同一个骰子上各面平均值的最低到最高。右图:同一个骰子所有面的概率之和,蓝色低于 1,红色高于 1。

同一个骰子上,各面的概率很接近,例如 6 面骰每面都在 0.17 到 0.19 之间,没有出现 Choice 里那种把大部分概率给一项的情况。 但概率的大小并不准确:6 面和 8 面骰最接近真实值;面数少时每面概率被低估,2 面骰真实为 0.5,Jev 给出 0.43;面数多时被高估,20 面骰真实为 0.05,Jev 给出 0.095,接近两倍,所有面加起来达到 1.90。

小结:换成 Noul 逐项判断后,概率不再集中到某一项,但估计值会向中间靠拢:真实概率在 0.25 及以上时被低估 13%–17%,在 0.1 及以下时被高估 26%–90%,而且概率越小,高估越多。 这种形状与人对概率的判断相似:前景理论发现,人也会高估小概率、低估中高概率 [5]。这里只是类比,并不说明 Jev 产生这种偏差的原因。 因此 Noul 的输出也不能直接当作真实概率使用,需要先在真实数据上校准。Noul 也不会替我们“掷”出结果,公平抽样仍需在模型外完成。

附录

参考文献

[1] Qiang Liu. Does GPT-4 Play Dice? https://qiangliu.net/publications/Does_GPT_Play_Dice.pdf
[2] TypeSafe. Introduction to Jev. TypeSafe documentation. https://docs.typesafe.ai/introduction
[3] TypeSafe. Choice; Noul. TypeSafe documentation. https://docs.typesafe.ai/primitives/choice; https://docs.typesafe.ai/primitives/noul
[4] Kanta Hayashi. Jev Does Not Play Dice. 2026 年 9 月 20 日。 https://kantahayashiai.github.io/posts/jev-does-not-play-dice/
[5] A. Tversky, D. Kahneman. Advances in Prospect Theory: Cumulative Representation of Uncertainty. Journal of Risk and Uncertainty, 5(4): 297–323, 1992. https://doi.org/10.1007/BF00122574
[6] E. T. Jaynes. Information Theory and Statistical Mechanics. Physical Review, 106(4): 620–630, 1957. https://doi.org/10.1103/PhysRev.106.620

以下资料与本文的实验相关,按主题整理,供进一步阅读。

针对 Jev 的测试与讨论

大语言模型的相关研究

引用本文

Qiang Liu. Does Jev Play Dice? Systematic Bias in Non-deterministic Decisions. Technical report, September 2026. https://qiangliu.net/jev-dice/

中文版:Qiang Liu. 《Jev 掷骰子吗?非确定性决策中的系统性偏差》. 技术报告, 2026 年 9 月. https://qiangliu.net/jev-dice/zh/

代码与数据:https://github.com/pobooo/jev-dice

@techreport{liu2026jevdice,
  author      = {Qiang Liu},
  title       = {Does {Jev} Play Dice? Systematic Bias in Non-deterministic Decisions},
  institution = {qiangliu.net},
  type        = {Technical report},
  year        = {2026},
  month       = sep,
  url         = {https://qiangliu.net/jev-dice/},
  note        = {Code and data: \url{https://github.com/pobooo/jev-dice}}
}