如果要判断一个群体的态度走向,只能靠问卷、访谈和事后统计,那你大概率会错过舆论演变中最关键的动态过程——人们是怎么从分歧走向共识,又是如何在信息轰炸中改变立场的。过去两年,我一直在用AI Agent构造虚拟社会,通过大模型驱动的数字人来模拟社会舆论的传播、碰撞和极化。说白了,这就是一场可重复、可控制、可量化的思想实验:把真实世界里没法反复验证的社会互动,搬进一个自己能完全掌控的沙盒。
这篇文章是为三类人写的:做计算社会学或舆情分析的研究者,想预判传播策略效果的运营和产品经理,以及想给AI Agent找个非工具类落地场景的开发者。我会把实验设计、虚拟社会构建、舆论演化引擎的调参,到结果验证的完整链路拆开讲,也会如实交代那些让数据翻车的坑。这套方法不一定能让你精准预测现实,但可以帮你在问题失控前,先在虚拟世界里失控一次。
1. 为什么要把社会舆论实验搬进AI沙盒
1.1 真实实验的不可承受之重
在AI Agent登场之前,社会舆论研究基本靠三种手段:问卷抽样、田野观察和事后数据分析。这三种手段有一个共同的痛点:不可重复。你今天发出去的问卷,明天换一批受访者,结果可能完全不同;即便用同样的问卷、同样的样本量,群体情绪的微妙变化也会让结论漂移。更麻烦的是伦理约束——你不能故意往真实社区里投放一条谣言,观察它如何发酵,这既不道德,也可能引发真实风险。
思想实验的价值恰恰在于:它允许我们在不对真实世界造成影响的前提下,探索“如果……会怎样”。过去的思想实验只能靠哲学家在脑子里推演,但大脑有认知上限,我们很难同时模拟几十个独立立场的人并追踪他们之间的互动。大模型Agent把这种推演变成了可运行的程序,每个Agent都能拥有独立人格、信息偏好和表达风格,它们的互动过程可以被完整记录,而且同一场实验可以换参数跑一百遍。
1.2 传统模拟为什么“不够像人”
计算机模拟舆论并不是新东西。早期研究常用观点动力学模型,比如投票者模型、有界信任模型,它们把每个个体抽象成数值状态,用规则描述互动。这类模型的优点是可解析、参数少、计算快,但致命缺点是太干净了——真实人类不会因为一个公式就从支持转为反对,他们的判断受情绪、身份认同、信息茧房、表述框架的影响,而这些恰恰是数值模型很难承载的。
大模型改变了这一层。LLM本身是从海量人类文本中训练出来的,它对“一个环保主义者听到新技术消息时会怎么想”这件事有先验的常识理解。当你把人格设定、信息背景和社交关系喂给它,它产出的反应在语义层面更接近一个真实的人。当然,它也会撒谎、会趋同、会有偏见,这些致命缺陷我在第五章会专门讲。但至少在大方向上看,LLM让舆论模拟从“公式推演”跨入了“语义推演”。
1.3 什么实验值得搬进来
不是所有舆论问题都适合放进AI沙盒。我自己的筛选标准有三条:第一,问题必须涉及互动——单个个体的态度变化用问卷就够了,没必要跑Agent;第二,机制要相对清晰,比如信息扩散、立场极化、沉默螺旋,这类机制能被抽象成规则并观测;第三,结论能形成可验证的假设,模拟结果要能推导出“在什么条件下会出现什么现象”,而不是产出一个花哨的叙事。
我做得最多的实验方向有三个:谣言在异质群体中的传播路径、算法推荐强度对观点极化的影响、少数派声音在群体压力下的沉默效应。下面我会用一次完整的谣言传播实验作为贯穿案例,从虚拟社会搭建讲到结果解读,你可以直接照这个流程做自己的实验。
2. 建造虚拟社会:Agent人格画像与信息生态设计
2.1 先定义思想实验的问题,而不是先写代码
很多人上手就把Agent建起来,让它们随便聊天,最后发现产出是一堆无关紧要的闲聊。这是最浪费时间的事。思想实验的第一步一定是写清楚研究问题,包括三要素:自变量(你要改什么)、因变量(你要观测什么)、控制变量(哪些东西必须保持不变)。
以我的谣言传播实验为例,我关心的自变数是信息源的信誉度(高信誉机构发布 vs 匿名账号发布),因变数是Agent群体的态度转变率和传播深度,控制变量包括群体构成、话题类型、网络结构、消息内容模板。这样想清楚之后,每一种设计都有明确的对照意义,而不是让Agent自由发挥。
2.2 给Agent注入“三观”:人格画像的构建方法
人格画像是一个Agent行为差异化的核心。只给Agent一个名字和职业是不够的,他们的性格、认知框架、信息渠道偏好、情绪稳定性都要明确写在System Prompt里。我把画像拆成五个维度:
- 人口属性:年龄、职业、学历、居住城市类型,这些决定了语言风格和关注点。
- 性格特质:用大五人格里的开放性、尽责性、情绪稳定性等描述,影响对新鲜信息的接纳度。
- 认知立场:对科技、环保、经济等议题的基础态度,相当于预置的先验观点。
- 信息习惯:习惯刷短视频、读长文还是和朋友打听,决定了接收信息的渠道。
- 社交模式:是主动表达型还是观望型,发言频率和互动意愿都与此相关。
一个典型的Agent设定长这样:
agent_profile = { "name": "王建国", "age": 45, "job": "传统制造业中层管理", "personality": "谨慎保守,信任体制内信源,对新技术持观望态度", "stance": { "environment": 7, # 1-10,10表示非常关心环保 "technology": 4, # 对新技术接受度较低 "risk_aversion": 8 # 厌恶不确定性 }, "info_habit": "每天看两次新闻,主要来自官方媒体和同事群", "social_style": "很少主动发言,但会在熟人群里转发消息", "memory": ["所在城市去年推广过类似技术但效果一般"] }这里有个容易被忽略的细节:Agent的记忆池比人格更重要。一个人对某条新消息的反应,很大程度上由他过去的经历决定。我习惯给每个Agent预置3到5条个人记忆,这些记忆会被检索并影响它的判断。上面例子里的“去年推广过类似技术但效果一般”就足以让王建国对新技术天然警惕。
2.3 信息环境的搭建:媒体、广场与算法推荐
虚拟社会不能只有Agent,还得有信息生态。我会搭建三类信息节点:
- 媒体账号:拥有独立编辑风格,发布消息时的标题和正文会带特定框架,比如严肃通报、煽情叙述、理性分析。
- 公共广场:按主题划分的讨论区,Agent可以在这里发言和回复,类似真实的论坛或社交平台。
- 信息推送机制:模拟算法推荐,当Agent的关注偏好和互动历史确定后,系统会优先把观点相近的信息推给它。推送强度是实验中的一个可调参数。
这些节点的作用不是装饰。媒体框架会影响Agent对事件的初次定义,广场氛围会影响表达的勇气,算法推送强度则直接决定信息茧房的形成速度。一套完整的实验通常要跑三个推送强度档位:弱推荐(随机刷到)、中推荐(基于关注偏好)、强推荐(只推立场相近内容),这样才能对比出机制差异。
2.4 交互规则设计:发言、转发与沉默阈值
虚拟社会的运转还需要交互规则,这相当于现实中的社交礼仪和平台机制。我设置的规则有四条:
- 发言门槛:Agent对话题的认知度低于阈值时不会发言,避免所有人都对任何事发表意见。
- 转发逻辑:只有观点强烈程度超过一定水平的消息才会被转发,转发的对象通常是Agent认知网络中认同的账号。
- 沉默螺旋:当Agent感知到自己的观点在群体中处于少数时,表达意愿按比例降低。这是模拟真实舆论最关键的一条规则。
- 互动冷却:Agent在短时间内对同一话题的发言次数有限制,模拟人的社交精力。
交互规则的影响是巨大的。同样一条消息,在不同的沉默阈值设定下,可能产生完全不同的舆论格局。正是因为这些机制,Agent模拟才不是简单的“大模型自动聊天”,而是一场有结构约束的思想实验。
3. 舆论演化引擎:模型选择、参数配置与观测指标
3.1 用经典动力学模型给LLM装上骨架
如果完全依赖LLM自由发挥,Agent之间的互动会变得松散,很难产出可量化的舆论演化规律。我的做法是把经典舆论动力学模型当作骨架,让LLM在其中扮演“决策节点”。
具体来说,我做的是两层叠加:底层用观点连续变化模型(Deffuant-Weisbuch模型)的思路,把每个Agent对事件的支持度归一化为0到1之间的数值,每次互动后按有界信任规则调整——只有当双方观点差距小于信任阈值时,观点才相互靠拢,否则互相排斥;上层用LLM生成互动的语义内容,也就是Agent看到消息后的具体评论、转发文案和反问。
这个设计的精妙之处在于:数值层提供了可分析的演化轨迹,而LLM层提供了数值层无法表达的内容逻辑。比如数值层可以告诉你Agent群体的态度均值从0.42变成0.58,但只有LLM层可以告诉你这个变化是因为一条权威辟谣还是因为一个意见领袖的煽情演讲。
# 有界信任机制的简化逻辑 def bounded_trust_update(self, other_opinion, trust_threshold=0.35): diff = abs(self.opinion - other_opinion) if diff < trust_threshold: # 观点接近,向对方靠拢 self.opinion += 0.1 * (other_opinion - self.opinion) else: # 观点分歧大,保持距离甚至轻微逆反 self.opinion -= 0.02 * (other_opinion - self.opinion)实际操作中我不会让数值层直接覆盖Agent的最终表态,而是把它作为一种影响因子——数值层的判断结果会写进Agent的上下文,LLM在生成发言时需要考虑“自己当前支持度是0.63”这个事实。两层之间的一致性需要花心思调,我踩过的坑会放在第五章细说。
3.2 消息传播机制:从SI模型到衰减扩散
舆论实验的另一个核心是消息怎么在网络里传开。单纯让所有Agent同时看到信息是不真实的,现实中消息通过社交网络一级一级扩散,且热度会随时间衰减。我用的是一个带衰减的传播模型:
- 初始节点发布消息后,只有直接关注该节点的Agent能在第一个时间步看到;
- 每个看到并转发的Agent会成为新传播源,但传播概率逐层递减;
- 每个时间步,消息的传播概率整体按衰减系数降低,模拟热度的自然消退;
- 权威节点发布的消息初始传播率更高,匿名节点的消息更高依赖转发链。
这套机制让实验跑出来的传播曲线呈现真实世界的S形形态,而不是瞬间全网皆知。观测传播深度时,我会关注两个指标:最大传播层级(消息在第几层后停止扩散)和传播覆盖率(最终有多大比例的Agent接触过该消息)。这两者的组合能清晰地区分“病毒式扩散”和“圈层内共识”。
3.3 一场实验的实际配置与参数表
以谣言传播实验为例,我用过一次比较稳定的配置,具体参数如下:
| 参数 | 设置值 | 说明 |
|---|---|---|
| Agent数量 | 120 | 覆盖6种人格类型的随机组合 |
| 网络结构 | 小世界网络 | 平均度6,重连概率0.15 |
| 信任阈值 | 0.35 | 观点差小于此值才可能互相影响 |
| 沉默阈值 | 0.78 | 当Agent感知自身观点支持率高于此值才愿意发言 |
| 消息衰减系数 | 0.85 | 每层传播后扩散意愿衰减15% |
| 推荐强度 | 0.6 | 信息流中立场相关内容占比60% |
| 模拟步数 | 30轮 | 每轮每个Agent最多产生一次交互 |
| 模型温度 | 0.9 | 控制发言多样性,避免机械重复 |
这里想提醒一句:不要照搬别人的参数。不同模型版本、不同话题类型、不同人格画像,对参数的敏感度完全不同。我的习惯是先跑两三轮小规模实验做敏感性分析,找到每类参数的大致合理区间,再正式铺开。
3.4 观测指标:舆论熵、观点距离矩阵与态度漂移
除了传播类指标,舆论演化本身需要更细的观测工具。我每轮实验都会记录四类指标:
- 舆论熵:反映观点的分散程度。熵值高说明群体观点多元,熵值骤降则意味着共识正在形成或者强势话语压制了其他声音。
- 观点距离矩阵:记录任意两个Agent之间观点差的距离矩阵,分析聚类结构,识别出几个截然不同的态度阵营。
- 态度漂移曲线:每个个体的支持度在30轮内的变化轨迹,可以按人格类型分组画出平均轨迹,观察不同人群对消息的响应模式。
- 互动网络密度:Agent之间实际发生交互的关系图密度,对比初始网络结构可以看到舆论互动是在加固原有关系还是创造了新的连接。
这些指标不依赖LLM的文本输出,纯粹从数值模拟中计算。它们的作用是让实验结果可量化、可对比。比如强推荐条件下舆论熵在第15轮降到0.31,而弱推荐条件下是0.68,这就是一个扎实的量化结论,比任何文本分析都有说服力。
4. 完整实验复盘:一个谣言如何改变群体态度
4.1 实验设定与样本构建
我用一次虚构实验来展示完整流程。设定是这样的:某城市出现了一则消息,声称一种新型节能材料存在安全隐患,消息以一个匿名帖子的形式发出,随后被几个本地生活账号转发。我之所以选一个不存在于现实的新技术产品作为话题,而不是借用真实热点事件,是避免模型在训练数据中找到既有叙事模板,以保证实验讨论的是机制而非特定事件。
120个Agent的小世界网络生成完毕后,我在第1轮投放了一条初始消息。投放前给所有Agent一个基础态度调查:对该新型材料的支持度均值是0.57,标准差为0.15,其中支持派、中立派和怀疑派的占比大约是45:30:25。
4.2 全过程复盘:从裂变传播到态度固化
第1到3轮是初始裂变期。匿名帖在第一批接触者中引发了明显的不确定性,由于Agent的记忆池里没有关于这种材料的知识,大多数人选择观望,这期间转发量不高,但怀疑派Agent开始活跃起来,他们用“来路不明的消息更值得警惕”之类的说法表达担忧。
第4到8轮出现关键转折。几位偏向技术乐观型的Agent在广场发起了反驳,但由于身份是普通居民,说服力有限。与此同时,本地账号开始连续转发匿名帖中的负面细节,一个有倾向性的标题被反复强化。态度均值在这一阶段从0.57缓慢下降到了0.49。值得留意的是,中立派在这个阶段被撕裂,一部分被负面信息吸引转向怀疑,另一部分因为反感标题党而坚定了支持。
第9到15轮进入了自我强化阶段。随着支持者减少,支持派Agent的发言意愿降低,沉默螺旋开始生效。而怀疑派由于感知到自身观点占多数群体,表达更加激烈。推荐强度0.6的设置进一步让怀疑派Agent刷到更多同类观点,他们的信心在这轮迅速提升。态度均值跌到0.41,舆论熵从1.12降到0.76。
第16到25轮几乎没有新信息进入,但观点在持续固化。有意思的是,部分中立Agent在沉默螺旋的压力下不仅没有转向怀疑,反而产生了轻微的反向逆反心理,但这类个体数量太少,在总体趋势中淹没。第30轮结束时,态度均值稳定在0.38,舆论熵跌到0.63,群体明显形成了两个阵营:一个约占58%的怀疑阵营,一个约占27%的支持阵营,剩余15%保持中立或拒绝表态。
4.3 量化结果与关键发现
| 阶段 | 轮次 | 态度均值 | 舆论熵 | 支持派占比 | 怀疑派占比 |
|---|---|---|---|---|---|
| 基线 | 0 | 0.57 | 1.08 | 45% | 25% |
| 初始裂变 | 1-3 | 0.55 | 1.10 | 43% | 27% |
| 关键转折 | 4-8 | 0.49 | 1.02 | 39% | 36% |
| 自我强化 | 9-15 | 0.41 | 0.76 | 33% | 47% |
| 固化期 | 16-30 | 0.38 | 0.63 | 27% | 58% |
从这个模拟里,我们可以提炼出几个可验证的假设:第一,当辟谣信息缺位时,负面消息的重复传播比论据质量更具影响力;第二,沉默螺旋机制在支持率跌破40%后加速生效,导致群体态度崩塌比个人认知转变更突然;第三,中立人群并非被说服,而是被“声量”压过了,这为后续干预实验提供了方向。
4.4 从模拟结果中提炼干预实验
思想实验的价值不止于观察,更在于尝试干预。我在同一个虚拟社会里跑了对照组:在第6轮加入一个高信誉机构发布的辟谣信息。结果很有启示——辟谣仅对尚未明确表态的中立Agent有效,对已经陷入怀疑阵营的Agent几乎没用,甚至可能引发逆火效应。而辟谣信息在弱推荐条件下的效果显著优于强推荐条件,因为强推荐环境下怀疑派已经被推荐算法隔离在了辟谣信息之外。
这类发现带有天然的传播策略价值:如果你想纠偏,干预窗口在态度均值0.45到0.55之间的转折期,且要创造不同阵营的信息相遇机会,而不是指望一条辟谣就能扭转局面。当然,模拟不是真相,但这些假设可以指导后续的真实问卷调查或小规模社会实验设计。
5. 踩坑实录:AI舆论模拟翻车的四个典型现场
5.1 System Prompt污染:所有Agent看似不同实则同一个声音
我最早做的实验跑出来,每个Agent的观点明明有差异,但说出来的话千篇一律、用词雷同。查了很久才发现,问题出在大模型的系统级System Prompt里写了一段全局性的话,比如“你是有独立思考能力的公民”,这导致所有Agent在底层价值观上趋同了。
解决办法是把全局提示词压缩到最少,只保留工具性指令,把所有个性信息放到Agent独立的Prompt文件中,并且明确要求模型“不要模仿其他Agent的说话方式”。我还给每个Agent配置了独特的口头禅和句式偏好,比如有人习惯先反问再表达,有人喜欢用数据说话,有人总是引用亲友经验。这些细节极大提高了语义多样性。
5.2 立场漂移与“伪极化”:温度参数的假象
有次实验设定温度0.9,结果群体极化速度异常快,几乎所有人都快速倒向极端。我开始以为是模型理解了沉默螺旋机制,后来发现是温度过高导致的随机性让Agent频繁出现逻辑不连贯的极端发言,从而相互影响、互相强化,形成了“伪极化”。
温度参数对舆论模拟的影响远比想象中大。温度过低Agent之间几乎没有差异,温度过高则每个Agent都像精神分裂。我在不同模型上调过,比较稳定的区间在0.7到0.9之间,但仍需用一个小型多样性测试来验证——让同一个人格配置跑同一消息五次,检查输出观点的方差。只有方差适中,才能进入正式实验。
5.3 记忆窗口过短:Agent不记得三天前说过什么
早期版本没有设计长期记忆模块,Agent每轮对话只能看到当前消息和有限上下文。后果很典型:第5轮还有人提起第2轮的证据,但到第10轮所有Agent都像失忆一样,讨论从零开始。舆论演化最重要的特征就是历史依赖,一个Agent一周前说过什么、看过什么辟谣,决定了他现在的态度。
我的解决方案是给每个Agent配一个轻量级的向量数据库记忆体,每轮交互结束后把关键信息提炼成结构化存储条目,下一轮互动前根据相关性检索3到5条注入上下文。这个改动直接让实验曲线从“白噪声振荡”变为“有趋势的演化”。
5.4 语言模板化:AI发言的“文风趋同”现象
即使人格设定不同,大模型生成的中文发言还是容易落入相似的书面腔,尤其当言论涉及复杂判断时,Agent们不管性格如何都倾向写出一段“逻辑完整、四平八稳”的评论。这和真实社交平台中碎片化、情绪化的表达差异很大。
考虑到真实舆论中极端情绪和非理性表达是常态,我的做法是让Agent在部分场景下只能选用情绪化短句模型,比如“这也太离谱了”“我早就说了不可信”;只有在开放讨论场景才允许长文输出。另一个有效方法是加入“非理性噪声”:设定一定比例的Agent会误解信息、按错转发、或者纯粹跟风发言,这样群体行为才更接近真实舆论场。
6. 结果能信几分:验证方法、实验边界与我的使用原则
6.1 与真实数据对照:AI模拟的结论如何校准
如果没有任何真实数据支撑,思想实验的结论永远是“假设”。我采用的最小验证方案是三重对照:第一,用历史真实事件复盘,把当年的舆论初始条件输入模拟器,看演化是否与真实的态热曲线走向大致相近;第二,用小型问卷的结果做同步比较,在真实人群中收集对同一虚构议题的态度分布,对比模拟群体的分布差异;第三,用行为预测盲测——让不参与实验的人猜模拟结果中哪组是真实数据,如果猜不准,说明模拟和现实的差异至少在肉眼层面不明显。
这套方案不能证明模拟结果就是真相,但能筛选出严重偏离现实边界的错误配置。
6.2 什么能测、什么测不准:思想实验的信任边界
AI舆论模拟擅长的是机制层面的问题:信息重复如何影响态度、算法推荐如何加速极化、少数派发声需要什么条件。这些问题的答案相对稳健,因为机制本身具有跨情景的稳定性。
但模拟测不准的东西也很多。情绪烈度就是其一,模型表达的不安是不会演变成真实街头恐慌的;应急反应时差也是其一,真实社会有突发事件的应激时滞,Agent则会立即反应;还有身份认同驱动的非理性选择,这类行为高度依赖具体社会背景,模型很难全面建模。
我给自己定了几条使用原则:模拟结果只用来生成假设,不用于对具体事件下预测结论;跨群体外推时必须做敏感性分析;任何属于真实决策的结论,都要求有至少一项非模拟数据的辅助证据。说到底,这套系统的价值是让思想实验从“想一想”变成“算一算”,而不是让算法替代我们对真实社会的理解。
6.3 下一轮实验:扩展现实社会心理学变量
把思想实验继续往前推一步的方向,我已经在准备的是情绪传染模型与会话网络共演化。真实社会互动中,信息传递往往伴随着情绪感染,同一句话用愤怒的语气说和用平和的语气说,说服力截然不同。给Agent增加情绪状态维度,并在互动中传导情绪,会让模拟逼近现实中“越吵越极端”的机制。
同时把网络结构从静态改为动态:当Agent观点分歧过大时,它们会主动切断互动、重新寻找同类,这种“断交-抱团”的动态会让极化结果更显著。加入这些变量后,思想实验能从“舆论如何演化”推进到“社群如何分化”,这是计算社会学里更有意思的问题。运行在虚拟沙盒里的数字社会永远无法取代真实人类,但在理解社会机制的路上,它确实是一个值得反复推演的好工具。