4. 风险量化模型:概率风险评估(PRA)、贝叶斯网络、马尔可夫链、蒙特卡洛模拟
好,我们进入风险量化这个硬核环节。
前面我们聊了怎么识别危险,怎么定性分析。但说实话,做功能安全,尤其是预期功能安全,光靠「高、中、低」这种定性判断,很多时候是不够的。你想想看,你跟项目组说「这个场景风险高」,人家问你「高到什么程度?百万公里事故率是多少?」,你答不上来,那就尴尬了。
所以,我们需要量化。用数字说话。
这一章,我带你过四个最常用的量化模型。我个人习惯把它们分成两类:一类是静态结构分析(PRA、贝叶斯网络),另一类是动态过程模拟(马尔可夫链、蒙特卡洛)。咱们一个一个来。
4.1 概率风险评估(PRA)
PRA,说白了就是「拆解+算账」。把一个大系统拆成小部件,算出每个部件出事的概率,再组合起来。
我在做ADAS项目时,经常用PRA来评估感知系统的失效概率。比如激光雷达、摄像头、毫米波雷达,各自有各自的失效率,组合起来就是整个感知系统的失效概率。
核心公式:
系统失效概率 = P(事件A ∪ 事件B ∪ 事件C ...)
如果是串联系统(一个坏,全坏):P = 1 - ∏(1 - Pi)
如果是并联系统(冗余设计):P = ∏Pi
举个实际例子。假设一个自动紧急制动系统(AEB),感知层有三个传感器:
| 传感器 | 单次任务失效率 |
|---|---|
| 激光雷达 | 1×10⁻⁴ |
| 摄像头 | 5×10⁻⁵ |
| 毫米波雷达 | 2×10⁻⁵ |
如果这三个传感器是并联冗余设计(任意一个正常工作即可),那么系统感知失效的概率就是:
P = 1×10⁻⁴ × 5×10⁻⁵ × 2×10⁻⁵ = 1×10⁻¹³
这个数字很小,对吧?但注意,这只是硬件随机失效的概率。预期功能安全里,更多是系统性失效和性能局限,比如大雨天摄像头看不清——这种概率PRA算不了,因为它不是「随机」的,而是「条件触发」的。
避坑指南:我曾经在一个项目中,团队用PRA算出来系统失效概率极低,大家都很开心。结果路试时发现,一个常见的雨天场景就让系统频繁误触发。为什么?因为PRA假设所有失效是独立的,但实际场景中,大雨同时影响摄像头和激光雷达——这叫「共因失效」。PRA如果不考虑共因,结果就是纸上谈兵。
4.2 贝叶斯网络
贝叶斯网络,我个人觉得是预期功能安全里最实用的量化工具。为什么?因为它能处理不确定性和条件依赖。
你想想看,自动驾驶里很多风险不是「有或没有」,而是「在某种条件下,概率变高」。比如:
- 如果下雨,摄像头失效概率从0.01变成0.3
- 如果对面来车开远光,摄像头失效概率再翻倍
这种「如果...那么...」的关系,贝叶斯网络天然适合。
贝叶斯网络的核心是条件概率表(CPT)。每个节点代表一个事件,箭头代表因果关系。
贝叶斯公式:
P(A|B) = P(B|A) × P(A) / P(B)
翻译成人话:看到结果B后,重新评估原因A的概率。
我画一个简单的贝叶斯网络结构图,帮你理解:
实际项目中,我会给每个节点建一个条件概率表。比如摄像头节点:
| 天气状况 | P(摄像头正常) | P(摄像头失效) |
|---|---|---|
| 晴天 | 0.99 | 0.01 |
| 雨天 | 0.70 | 0.30 |
| 夜间 | 0.85 | 0.15 |
有了这些表,输入「当前天气」,贝叶斯网络就能自动算出「感知融合失效」的概率。而且,如果你观察到「感知融合失效」了,它还能反向推理——最可能的原因是什么?是摄像头坏了还是激光雷达坏了?
我的经验:贝叶斯网络特别适合做根因分析。有一次路测发现AEB频繁误触发,我们用贝叶斯网络一跑,发现最大概率的原因是「摄像头在低光照条件下把路牌阴影误识别为障碍物」。这个结论帮我们快速定位了问题,而不是盲目调参。
4.3 马尔可夫链
马尔可夫链,说白了就是「下一步只跟当前状态有关,跟过去无关」。这个假设叫「马尔可夫性」或「无记忆性」。
你可能会问:这跟功能安全有什么关系?关系大了。很多系统的退化过程、故障传播过程,都可以用马尔可夫链建模。
举个例子。一个制动系统,有三种状态:
- 状态S0:正常工作
- 状态S1:性能降级(比如制动距离变长)
- 状态S2:完全失效
状态之间的转移概率是固定的:
P(S0→S1) = 0.001 (每任务周期)
P(S1→S2) = 0.01 (每任务周期)
P(S0→S2) = 0.0001 (每任务周期,比如突然爆管)
马尔可夫链可以算出:经过N个任务周期后,系统处于各个状态的概率是多少。这对于评估「系统在生命周期内的平均风险」非常有用。
关键点:马尔可夫链假设「未来只取决于现在,不取决于过去」。这在很多工程场景下是合理的——比如刹车片磨损到一定程度后,下一步磨损率只跟当前磨损量有关,跟之前怎么磨的无关。
但我得提醒你,这个假设有时候不成立。比如电池老化——电池的衰减速率跟它「曾经经历过多少次深度放电」有关,这就不是马尔可夫链能处理的了。这时候需要更复杂的模型,比如隐马尔可夫模型或半马尔可夫模型。
我曾经踩过的坑:用马尔可夫链建模一个转向系统的故障传播,算出来结果很漂亮。但实际数据一对比,发现模型预测的失效概率比实际低了一个数量级。后来发现,转向系统的故障有「记忆效应」——一次轻微故障后,如果不修复,后续故障概率会显著增加。马尔可夫链的「无记忆性」假设在这里不成立。所以,用之前一定要验证假设是否合理。
4.4 蒙特卡洛模拟
蒙特卡洛模拟,说白了就是「暴力枚举+随机抽样」。当模型太复杂,解析解算不出来的时候,就用计算机模拟一万次、十万次,看结果分布。
我个人觉得,蒙特卡洛是这四个模型里最灵活的,也是最吃算力的。
举个实际例子。评估一个自动泊车系统在停车场场景下的碰撞概率。影响因素包括:
- 车辆初始位置(随机分布)
- 障碍物位置(随机分布)
- 传感器噪声(高斯分布)
- 控制延迟(均匀分布)
这些因素互相耦合,解析解几乎不可能。蒙特卡洛的做法是:
for i in range(100000):
随机采样:初始位置、障碍物位置、噪声、延迟
运行泊车算法
记录是否碰撞
碰撞概率 = 碰撞次数 / 总模拟次数
就这么简单粗暴。但要注意,蒙特卡洛的精度跟模拟次数有关。误差大约是 1/√N。想提高10倍精度,需要100倍的计算量。
我的建议:蒙特卡洛模拟不要一上来就跑100万次。先跑1000次看看结果的大致范围,再决定要不要增加次数。另外,重要性采样是个好技巧——把采样集中在高风险区域,可以大幅提高效率。我在做十字路口碰撞风险评估时,就用重要性采样把模拟次数从100万降到了5万,精度还更高。
4.5 四个模型的对比与选择
好了,四个模型都过了一遍。你可能会问:那我到底该用哪个?
我的建议是:
| 模型 | 适用场景 | 优点 | 缺点 |
|---|---|---|---|
| PRA | 硬件随机失效、独立事件 | 简单、直观、标准化 | 无法处理条件依赖、共因失效 |
| 贝叶斯网络 | 条件依赖、不确定性推理、根因分析 | 灵活、可反向推理、直观 | 需要大量条件概率数据 |
| 马尔可夫链 | 系统退化、状态转移、生命周期分析 | 数学成熟、可解析求解 | 无记忆性假设、状态空间爆炸 |
| 蒙特卡洛 | 复杂系统、多因素耦合、非线性 | 最灵活、几乎无假设 | 计算量大、精度受限于采样 |
实际项目中,我经常组合使用。比如:用贝叶斯网络建模场景条件,用蒙特卡洛模拟具体执行过程,用PRA验证硬件部分。没有银弹,只有合适的工具。
最后说一句:量化模型再漂亮,也只是工具。真正决定风险评估质量的,是你对系统的理解、对场景的洞察、对数据的敬畏。模型帮你算概率,但「什么概率是可以接受的」——这个问题,永远需要人来回答。
公众号:蓝海资料掘金营,微信deep3321