如果一个AI系统连“如果当初选了另一条路,世界会怎样”这种问题都无法给出可靠回答,那么我们凭什么相信它能预测未来?
这不是哲学思辨,而是当下 AI for Social Science、多智能体仿真、决策支持系统研究里一个非常现实的问题。社会科学家在评估政策时经常要做反事实分析:真实世界只产生了一条演化路径,另一条“如果当初不这么做”的路径永远无法从观测中直接得到。传统做法是用计量模型做假设检验,用多智能体模拟做仿真;而大模型出现后,一个新问题摆上台面——能否让 AI 自己学会回答反事实问题,并把这个能力放进标准化评测里?
SocietyBench 这个名称,恰好指向这个方向。从命名看,它要评估的不是“模型知道多少社会知识”,而是“模型能否在反事实条件下,预测社会世界的演化路径”。这篇文章不替论文作者下结论,而是从技术拆解和工程实现的角度出发,给出一个完整分析:SocietyBench 想测什么、为什么难、如果你想复现或参考这类评测,数据、模型与指标应该怎么设计。
读完你至少能带走四样东西:一组可以拿来讨论的评测维度,一套最小可运行的反事实预测评估代码,一份常见坑的排查清单,以及对这个方向更清醒的判断。
1. 为什么需要 SocietyBench:从“读懂世界”到“推演世界”
过去三年,大模型评测的主线是“模型能不能答对题”。MMLU 测知识广度,GSM8K 测数学推理,AgentBench 测工具调用,HumanEval 测代码生成。这些评测有一个共同特征:它们都在检验模型对已知事实和单一世界路径的理解能力。答案是确定的,推理链是有限的,分数是清晰的。
但真实世界里的决策问题不是这样的。一个城市管理者想知道“如果不实施限行,而是改为错峰上下班,未来一年的拥堵指数会怎样”;一个平台治理团队想知道“如果调整推荐算法的暴露比例,三个月后极端言论的传播会不会收敛”;一个公共卫生团队想知道“如果提前两周实施干预,感染峰值能低多少”。这些问题有一个共同结构:真实世界只发生了一次,反事实分支永远不会发生。决策者必须在一个无法重新实验的世界里做判断,只能靠建模推演。
传统因果推断已经被用来逼近这类问题,但它依赖大量结构假设和高质量协变量;大模型不缺语言理解能力,却普遍缺少与因果结构绑定、可验证的推演能力。SocietyBench 真正想补的,不是给单个模型再做一张排行榜,而是让“反事实社会推演”成为一个可比较、可复现、可指标化的评测方向。只有先把基准立起来,社区才能回答那些一直悬而未决的问题:基于 GPT 的提示词推演比基于仿真器的推演强多少?多智能体建模比单次 prompt 强多少?反事实推演能力是否和模型参数量正相关?
这里可以给出一个明确判断:SocietyBench 本质上是一份“AI 社会科学能力”的标准化测试,它的意义不在单点任务,而在于把社会科学验证问题的流程引入 AI 评测体系。对于 AI 研究者,它提供了新的能力维度;对于社会科学研究者,它提供了一个机器智能与社会系统建模对话的接口;对于工程团队,它给出一个判断“什么模型适合做社会仿真决策支持”的参考系。
2. 拆解名字:SocietyBench 到底在测什么
2.1 标题里的四个关键词
把“Forecasting Counterfactual Social-World Evolution”拆开,四个词分别对应四个不同层面的能力要求。
Social-World(社会世界):不是指物理世界,而是由多个社会主体、关系网络、制度规则和信息传播通道构成的动态系统。系统里的主体有动机、有记忆、有策略,主体之间互相影响,整体行为不等于个体行为的简单加总。这与纯物理预测有本质区别。
Evolution(演化):社会状态沿着时间轴发生变化,且这种变化不是一步到位的函数。演化过程有阶段、有延迟、有反馈。比如一个政策出台后,短期可能有立竿见影的效果,中期出现适应性反弹,长期甚至带来结构性变化。预测输出因此不能是单一数值,而必须是带时间尺度的动态结果。
Forecasting(预测):模型需要输出的是“未来状态”或“演化路径”,不仅仅是判断“会不会变”。这与分类任务有本质不同。预测一件事情的数值走势,比判断趋势方向难得多。
Counterfactual(反事实):模型需要在已知事实路径之外,构造一条“世界其他部分不变、只有指定条件变化”的替代路径。这不是简单的条件概率问题,而是需要模型隐含具备一个“世界模型”,知道哪些变量联动、哪些变量固定、因果机制如何传导。
2.2 一个通俗类比
现实世界是一盘已经下完的棋,我们看到的是无数种可能走法中的一种。反事实问题就是问:如果第 18 步不走马而走车,后半盘会变成什么样?求解这个问题需要的能力不是“记住这盘棋”,而是理解整盘棋的棋理——车马炮的协同、局面的攻防转换、对方可能的应对。
社会世界演化也是同样的逻辑。一个平台公司如果问“如果当初没有做这个功能,用户活跃度会怎样”,答案不是简单说一句“会更低”就结束。需要理解产品机制、用户行为习惯、竞争环境,然后做至少数月时间尺度的动态推演。SocietyBench 这类基准想考的就是这种“整盘棋”级别的推演能力。
2.3 与其他基准的区别
| 基准类型 | 代表方向 | 考察能力 | 涉及反事实 | 涉及社会系统演化 |
|---|---|---|---|---|
| 通用知识问答 | MMLU、C-Eval | 知识广度和基础推理 | 否 | 否 |
| 数学与代码推理 | GSM8K、HumanEval | 符号逻辑与程序生成 | 否 | 否 |
| Agent 任务 | AgentBench、GAIA | 工具使用与多步任务 | 部分场景 | 弱 |
| 因果推理任务 | 各类因果 NLP 数据集 | 识别因果方向、效应估计 | 部分 | 弱 |
| 反事实社会演化评测 | SocietyBench 类方向 | 反事实条件下的社会动态预测 | 是 | 是 |
这张表想说明一个关键点:SocietyBench 不是“多了一个因果数据集”,而是把评测对象从“模型的单步回答能力”整体迁移到“模型对世界状态的建模能力”。如果只拿反事实文本问模型会不会说,那是自然语言生成;如果要求模型基于结构化社会条件预测一个系统的多阶段演化,这才是真正的难点。
3. 反事实推理:AI 进入社会科学的必修课
3.1 先分清三个容易混淆的概念
条件概率、干预、反事实,是三条不同的推理层级。很多讨论把它们混在一起,导致评估目标失焦。
条件概率 P(Y | X=1) 回答的是:在观测到 X 为 1 的情况下,Y 的分布是什么。这是“看数据说话”。
干预 P(Y | do(X=1)) 回答的是:如果我们主动把 X 设为 1,其他机制保持原样,Y 会怎么分布。这是“动手改变世界”。
反事实 P(Y_{X=1} | X=0, Y=y) 回答的是:在一个观察到 X=0 且 Y=y 的世界里,如果当初 X 其实是 1,那么 Y 会是怎样。关键约束是:其他已观察到的证据必须保持不变。
反事实与干预的最大区别,在于它必须带着已知结果去反推另一种可能。模型既要在想象中改变一个变量,又要维持这个世界的其余事实不变。这种“既要改变、又要保持”的张力,让它成为因果推理里最难的一层。
3.2 社会科学里传统怎么做反事实
社会科学不能像自然科学那样做一个真实验证。例如断点回归,利用政策门槛附近的随机性来近似反事实;双重差分,用控制组的演化趋势来近似处理组“如果不处理”会怎样。这些方法很有价值,但都有明显边界:依赖平行趋势假设,只能估计平均效应,很难输出一条完整的分阶段演化路径。
更贴近系统层面的做法是 Agent-Based Modeling(ABM)。研究者定义主体行为规则、交互关系、环境参数,运行多个随机种子,观察涌现结果。ABM 的优势是机制透明、可重置、可做敏感性分析;劣势是规则设计成本极高,主体对复杂文本信息几乎无感知能力,而且一旦情景是开放式的社会场景,规则库很难覆盖。
3.3 大模型在反事实推理上的机会与短板
大模型能读入海量社会文本,其中包含了大量因果叙事模式,比如“因为……所以……”“如果当时……就不会……”。它天然具备自然语言层面的反事实生成能力,也能够在多智能体框架下模拟主体之间的博弈、谈判、决策。这是传统 ABM 很难做到的。
但它的短板同样明显。第一,推理链不稳定,同一问题换个表述可能得到相反答案;第二,对数值和动态系统方程非常弱,让它精确预测“第三个月下降 12%”基本靠运气;第三,知识截止时间和训练语料偏见会导致它非常自信地生成与社会规律不符的结论。
更稳妥的技术路线是混合建模:用结构因果模型锁定变量之间的骨架,用大模型生成贴近自然语言的决策脚本,用仿真器产出动态数值结果,最后再由大模型把结果解释成人类可读的报告。SocietyBench 这类基准恰恰可以作为混合路线的考场——哪种组合真正有效,跑一遍就知道了。
4. 社会世界演化预测:复杂系统视角下的难题
4.1 为什么社会系统这么难预测
社会系统很难预测,根因不是数据不够,而是系统的结构性质决定的。
多主体意味着同一个政策在不同主体身上会引发不同反应,有人适应、有人对抗、有人利用规则套利。非线性意味着小扰动可能被放大成系统性变化,也可能被负反馈机制压制下去。涌现行为意味着宏观现象(如舆论分化、拥堵反弹)不能直接从个体规则线性推断出来。
举个交通例子。限行政策表面上只约束车辆通行,但它会连锁影响:通勤者选择地铁、房产价格变动、网约车供给增加、城市的空气数据和商圈活力随之改变。几个月后,人们可能会调整居住地,又反过来改变拥堵的时空分布。如果预测模型只盯着交通一个指标,必然失真。
4.2 传统仿真与 LLM 仿真的对比
ABM 在社会科学领域已经用了几十年,核心工作是定义 Agent 的行为规则。规则定义越细,模型越接近现实,但复用性越差。LLM 多智能体仿真则让大模型扮演多个主体,每个主体有自己的身份、记忆和目标,通过自然语言交互推动世界演化。两者的差异非常适合放在同一种基准下比较。
| 维度 | 传统 ABM | LLM 多智能体仿真 |
|---|---|---|
| 主体建模 | 需要手写规则方程 | 通过 prompt 定义角色和多轮对话 |
| 语言感知能力 | 很弱,基本无法读长文本 | 强,可处理新闻、报告、社交对话 |
| 决策透明度 | 高,规则可审计 | 低,内部推理过程不稳定 |
| 运行成本 | 低,通常 CPU 可跑 | 高,每轮对话都有 Token 消耗 |
| 可扩展性 | 规则库越写越庞大 | 只需更换 prompt 和背景材料 |
从研究趋势看,LLM 多智能体越来越被当作“社会模拟编译器”,因为它能把半结构化的社会信息转化为可执行的交互脚本。但这种模拟是否真的预测了社会演化,还是只是在生成语言模式的变体?这是 SocietyBench 这类基准真正要回答的问题。
4.3 反事实预测的额外难度
预测真实世界已经很难,预测反事实分支更难。首先,反事实分支没有 ground truth,无论模型怎么推演,都没有一张“标准答案表”可以对照。其次,分支空间极其庞大,一个条件改变,社会系统可能走向多条分化路径。再次,社会预测是长期预测,误差随时间指数放大,一个微小偏差可能在很多轮反馈后变成完全不同的结局。
因此,SocietyBench 类基准的评测不能走“单选题”路线,而应该接受“存在多种合理分支”的事实,把评测重心放在逻辑一致性、路径可信度和与领域知识的对齐度上。这也决定了它和传统 NLP 评测在设计哲学上有根本不同。
5. 基准设计思路:SocietyBench 的任务应该长什么样
虽然我手上没有 SocietyBench 的官方数据格式,但从“反事实社会演化预测”的问题结构出发,可以推导出一个合理的任务设计框架。这类基准的任务通常会包含四个要素:事实世界描述、反事实干预、预测目标、约束条件。
5.1 事实世界描述
必须给出足够完整的背景,让模型知道这是一个什么样的社会系统。包括参与者类型、初始状态、已经发生的政策变化、历史观测指标。信息太少,模型无从推演;信息太多,评测又可能退化成“检索题”。
5.2 反事实干预
必须明确指定改变了哪个变量、改变成了什么值,并且告诉模型“其余条件保持不变”。这是反事实任务与普通预测任务的分水岭。如果干预描述含糊,比如“如果政府采取不同措施”,模型大概率只能泛泛而谈。
5.3 预测目标
需要定义输出的形式。可以是分阶段的演化方向判断、关键数值指标的变化区间、主体行为策略的转变、或者整个系统走向某种状态的概率。
5.4 约束条件与中立性
为了可持续开放,评测任务应尽量使用匿名化的虚构主体,避免对真实人物、机构做负面反事实推演。城市可以用“某城市”代替,政策可以抽象为“一项交通管理措施”。这既保护了数据安全,也减少了模型在训练语料中检索到对应事件的概率。
下面给出一个 JSON 示意,用于说明结构化任务的数据组织方式。
{ "task_id": "society-001", "factual_world": { "scenario": "某城市从2023年1月起对中心城区实施车牌尾号限行政策", "time_span": ["2023-01-01", "2024-12-31"], "indicators": [ {"name": "高峰拥堵指数", "observed_trend": "先下降后反弹"}, {"name": "公共交通分担率", "observed_trend": "稳步上升"} ] }, "counterfactual_condition": { "change": ["将车牌尾号限行政策替换为错峰上下班"], "scope": "仅改变交通管制方式,其他政策和经济环境保持不变" }, "target_question": "如果当时选择错峰上下班而保留其他条件,该城市的高峰拥堵指数和公共交通分担率会在两年内如何演化?" }这种结构的好处是:既保留了真实事件的上下文,又把讨论对象抽象成可复现的实验任务。模型不能只说结论,还要给出分阶段的演化过程,评测者才能判断推演是否合理。
6. 如何实现一个基础的反事实预测评估流水线
理解任务格式之后,我们可以搭建一套最小可运行的评估流水线。这里不依赖任何特定官方 API,只使用常规的大模型接口和 Python 工具,展示这类评测在工程上如何处理。
6.1 流水线整体架构
整个评估过程分成六步:加载任务、构造提示词、调用模型生成、解析输出、计算指标、汇总结果。核心难点在提示词构造和指标计算,前者决定模型能否理解反事实边界,后者决定评测可信度。
6.2 加载任务与构造提示词
# 文件路径:eval_societybench.py import json def load_tasks(path: str): """从 JSONL 文件中加载评测任务。""" tasks = [] with open(path, "r", encoding="utf-8") as f: for line in f: line = line.strip() if line: tasks.append(json.loads(line)) return tasks def build_prompt(task: dict) -> str: factual = task["factual_world"] cf = task["counterfactual_condition"] indicators_desc = ";".join( [f"{ind['name']}:{ind['observed_trend']}" for ind in factual["indicators"]] ) prompt = f""" 你是一个严谨的社会系统建模助手。请基于以下信息进行反事实推演。 【事实世界】 场景:{factual['scenario']} 观测时间:{factual['time_span'][0]} 至 {factual['time_span'][1]} 观测指标趋势:{indicators_desc} 【反事实条件】 改变:{cf['change']} 约束:{cf['scope']} 【要求】 请回答以下问题: {task['target_question']} 输出时严格按以下结构: 1. 最可能演化结果(2-3句话); 2. 分阶段推演(按半年为一个阶段,每个阶段写趋势和关键事件); 3. 两个关键风险变量; 4. 你给出的结论在多大程度上依赖这些风险变量。 """.strip() return prompt这里的关键是“约束”字段,它强制模型不要把无关变量也改掉。另一个细节是要求模型明确输出风险变量,方便后续对“认知不确定性”做量化。
6.3 调用模型并多次采样
反事实推演有很强的不确定性,单次回答不能代表模型能力。所以评估时通常会对同一个任务做多次采样,然后统计结果的一致性。
# 文件路径:eval_societybench.py import random from openai import OpenAI client = OpenAI(base_url="请输入你的OpenAI兼容接口地址", api_key="请替换为你的API密钥") def generate_predictions(prompt: str, model: str = "gpt-4o", temperature: float = 0.8, n: int = 5) -> list[str]: """对同一个 prompt 采样 n 次,获得多条推演结果。""" results = [] for _ in range(n): resp = client.chat.completions.create( model=model, temperature=temperature, messages=[ {"role": "system", "content": "你是一个严谨的社会系统建模助手。"}, {"role": "user", "content": prompt} ] ) results.append(resp.choices[0].message.content) return results if __name__ == "__main__": tasks = load_tasks("societybench_tasks.jsonl") for task in tasks[:3]: prompt = build_prompt(task) preds = generate_predictions(prompt) print(f"task_id: {task['task_id']}, samples: {len(preds)}")实际使用时,应把 API Key 和环境变量分离,不要硬编码在代码里。这里只是为了演示流程清晰。
6.4 更稳的“两步法”提示词结构
直接让模型一口气给出完整推演,容易得到前后不一致的回答。更稳的做法是拆成两步:第一步让模型先分析影响链,第二步再基于影响链预测指标。
def build_two_stage_prompt(task: dict) -> list[dict]: prompt1 = build_prompt(task) + "\n\n请先只回答影响链分析,不要做数值预测。" prompt2 = "基于上一步的影响链,请给出分阶段演化预测和风险变量。" return [ {"role": "user", "content": prompt1}, {"role": "assistant", "content": "(此处填充模型第一步的回答)"}, {"role": "user", "content": prompt2} ]两步法的好处是让模型先建立因果结构,再基于结构做预测。相比一步到位,输出更稳定,也更容易定位错误出在因果分析还是预测阶段。
7. 评测指标设计:没有标准答案时怎么打分
反事实社会世界演化的最大问题是没有 ground truth。任何模型的推演都不能说“正确”或“错误”,只能说“合理”或“不合理”、“稳定”或“不稳定”。因此,评测指标必须绕开准确率,转向多个替代维度。
7.1 推荐指标框架
方向一致性。同一个任务多次采样,模型对关键指标变化方向的判断是否一致。如果五次采样里三次说“上升”、两次说“下降”,说明模型并没有形成稳定判断。方向一致性可以拆成具体指标来统计。
自洽性。改变 prompt 的措辞、改变采样温度、改变示例顺序后,模型的最终结论是否保持稳定。优秀的推演系统应当对表述扰动不敏感。
逻辑合理性。模型是否使用了合理的因果链条,是否混淆了相关与因果,是否把“先发生”当成“因为”。这个维度适合用规则结合人工抽样评估。
动态合理性。推演是否具备时间尺度上的区分度。比如短期反弹、中期适应、长期结构性变化,而不是所有阶段都给出同样结论。缺乏时间分辨率的回答,本质上没有完成预测任务。
与基线对齐度。可以设计一组基线推演,比如写死的规则模型、传统 ABM、或简单 prompt 的模型。新模型的输出是否在关键结构上与强基线一致,可以用来判断它是否发生了本质推理,而不是随机生成文本。
7.2 一个轻量指标实现
# 文件路径:compute_metrics.py import re from collections import Counter def extract_direction(text: str, indicator: str) -> str | None: """从推演文本中提取某个指标的变化方向。""" patterns = ["上升", "下降", "持平", "先升后降", "先降后升", "波动"] for p in patterns: if re.search(f"{indicator}[^。]{{0,20}}{p}", text): return p return None def directional_agreement(samples: list[str], indicator: str) -> float: """多次采样结果中,对同一指标方向判断的一致性。""" directions = [extract_direction(s, indicator) for s in samples] directions = [d for d in directions if d] if not directions: return 0.0 most_common = Counter(directions).most_common(1)[0][1] return most_common / len(directions) def contain_clear_structure(samples: list[str]) -> float: """检查回答是否包含分阶段推演结构。""" stage_markers = ["阶段", "第一步", "初期", "中期", "长期", "半年"] hit = [1 for s in samples if any(m in s for m in stage_markers)] return sum(hit) / len(samples) def risk_variable_coverage(samples: list[str]) -> float: """检查模型是否提到关键风险变量,而不是铁口直断。""" risk_markers = ["风险", "不确定", "依赖", "取决于", "如果"] hit = [1 for s in samples if any(m in s for m in risk_markers)] return sum(hit) / len(samples)这些指标虽然简单,但已经能区分两类模型:一类只会输出“会下降”这种单句回答,另一类能给出带阶段、带条件、带风险变量的结构化推演。实践上,SocietyBench 这类基准还需要加入专家盲评打分。可以设计一个评分表,由领域专家从因果合理性、动态分辨力、边界条件处理三个维度给模型输出打 1 到 5 分,最后和机器指标做相关性分析。
7.3 人机协同评估流程
机器指标负责批量筛选,专家负责小样本校准。操作上分为四步:机器采样并计算一致性;按分数分层抽样;专家对低分和高分样本分别评审;用专家评分校准机器指标的权重。这个流程既控制了成本,也保留了人类判断的权威性。
8. 常见问题与排查方法
这类反事实预测评测在工程上容易遇到各种问题,下面按常见程度整理成表。
| 问题现象 | 可能原因 | 排查方式 | 解决方案 |
|---|---|---|---|
| 模型输出总是模糊回答,无法提取指标方向 | 提示词未要求结构化输出 | 检查生成文本中是否包含分阶段关键字 | 在 prompt 中强制要求四段式输出 |
| 同一任务多次采样方向完全相反 | 反事实条件描述有歧义 | 人工读一遍干预描述,看是否存在多义表达 | 把干预条件拆成原子化字段 |
| 模型把事实路径和反事实路径混为一谈 | 提示词缺少边界约束 | 检查模型输出是否引用了未发生的事件 | 在 prompt 开头强调“仅改变指定条件” |
| 模型引用训练语料中真实事件,而不是给定情景 | 任务涉及真实地名人物 | 检查输出是否出现数据集之外实体 | 任务数据匿名化,使用虚构城市名 |
| 两次评估结果波动大 | 采样温度过高或示例顺序变化 | 固定随机种子和推理参数 | 正式评估统一 temperature=0.7 |
| 模型拒绝回答反事实问题 | 过度安全对齐,或者认为是敏感话题 | 查看拒绝原因分类 | 改写为中性场景,使用“假想城市”措辞 |
| 代码解析输出失败 | 模型返回了 Markdown 或 JSON 包裹的文本 | 打印原始响应,定位解析边界 | 先清洗 Markdown 标记,再做结构化解析 |
| 专家评分与机器指标不一致 | 机器指标太粗糙或偏向某类表达 | 对比高低分样本的文本差异 | 引入多维度模型,增加逻辑合理性评分 |
排查的首要原则是先输出原始文本,再谈指标。几乎所有问题最终都会暴露在原始数据里,指标只是帮你决定该看哪一条。
9. 从研究到工程:最佳实践与风险边界
9.1 工程最佳实践
版本化数据。评测数据一旦发布,必须版本化管理,任何任务描述修改都应生成新版本,否则后续测评结果无法对比。
时间切分防止泄漏。反事实任务的时间范围需要明确切分。训练语料包含 2024 年事件的模型,去预测 2023 年的反事实分支,会产生看似合理但实际是记忆的答案。建议构造任务时使用“模型知识截止前”的时间窗口,并在论文中声明。
允许“无法回答”。反事实推演应该在数据不足时明确说“无法判断”,而不是强行编造。评测系统可以设置“拒绝率”指标,一个模型的拒绝率太低,反而说明它过于自信。
固定推理参数。横向对比多个模型时,temperature、max_tokens、system prompt 必须一致。否则你比较的是“提示词工程效果”而不是“模型能力”。
9.2 风险边界
反事实社会仿真存在明显的伦理和安全边界,在实际研究和工程落地时必须遵守。
不要面向真实可识别个人做反事实推演。“如果某个人当时做了另一个决定,世界会怎样”这类任务容易引起名誉风险,且没有可靠的事实基础。基准数据集应该默认匿名化。
不要用来制造恐慌或误导公众。“如果某类事件大规模爆发会怎样”这类推演即使技术上可行,也应该限定在研究环境内输出,并用学术术语展示不确定性。
模型输出只能作为研究假设,不能直接作为决策依据。反事实预测缺乏真实事件验证,本质上是假设分析。凡是涉及公共健康、公共安全、大规模社会稳定的场景,必须在输出的明显位置标注“研究假设,未经实证验证”。
9.3 团队协作建议
反事实社会演化评测项目必须有多角色协作。NLP 工程师负责评测流水线和指标代码;社会科学研究者负责任务场景设计、事件选择和专家评分;合规人员负责数据安全审查。单人很难同时做好三件事。
10. 总结与后续学习方向
SocietyBench 这类反事实社会演化评测基准,把一个原本在社会科学里很“软”的问题变成了可量化、可复现、可比较的 AI 评测任务。它跳出了传统“知识问答”和“工具调用”的评测框架,把注意力拉回一个更本质的地方:AI 是否真的理解世界是怎么运转的,以及当世界出了岔路时,它能不能推演出另一个可能的未来。
如果你要进入这个方向,我建议按三条线依次深入。第一条是因果推理线,重点学习结构因果模型、干预和反事实的数学定义,推荐从 Judea Pearl 的 The Book of Why 入手。第二条是社会仿真线,理解 ABM 的设计哲学,再看 LLM 多智能体如何改变建模方式。第三条是评测技术线,研究如何设计鲁棒的、防泄漏的、能经受专家检验的自动化指标,这是 AI 评测里最稀缺的能力。
不要急着训练或微调一个能“反事实预测”的专用模型。先把你手上的模型放到这类基准上跑一遍,看看它在方向一致性、结构化输出和风险变量覆盖上能拿多少分。你会发现,大多数模型离“推演世界”还有明显距离。但正因为有距离,这个方向才值得投入——AI 的下一个阶段,不只是在已知世界里答题,更是在无数个可能世界里做选择。