☰
自动驾驶紧急决策如何写进代码?从评分函数到伦理困境的工程解法
2026/10/22 2:56:22 网站建设 项目流程

1. 写在前面:这不是思想实验,是已经写进代码里的选择题

做过自动驾驶路测的朋友应该都遇到过这种让人后背发凉的场景:模拟器里一辆满载乘客的自动驾驶巴士行驶在双向两车道的山路上,前方突然窜出一个闯红灯的行人,对向车道同时有一辆高速驶来的摩托车。系统必须在几百毫秒内给出决策——是急刹撞向行人,还是借道避让撞向摩托车,还是硬生生撞向左侧护栏牺牲车内乘客。

以前这种问题属于哲学系的课堂讨论,叫“电车难题”。但现在它已经变成了工程师的日常:每一个感知融合模块、每一条决策规划策略、每一组安全距离参数,本质上都在回答同一个问题——紧急情况下,算法优先保护谁。

这篇文章不打算劝你站队,也不会替你给出“标准答案”。我想做的是把这道伦理题从哲学书架搬进工程现场:算法到底是怎么做抉择的、评分函数里那些权重是怎么来的、为什么真实路测中很多看似合理的道德策略根本不成立,以及作为从业者,我们能在代码层面做出哪些务实改进。如果你正在做自动驾驶决策规划、功能安全,或者只是对这套系统如何“想”充满好奇,这篇文章应该能帮你建立一张完整的地图。

先说我的核心观点:所谓“自动驾驶伦理难题”,本质上不是一个道德哲学问题,而是一个工程权衡问题。道德争论是公众的,但落地方案必须是工程师的。伦理困境不会因为我们逃避就消失,它已经被写进了每一行决策代码里。

2. 刹车失灵的那一刻:现实中的“电车难题”到底长什么样

2.1 从哲学命题到物理约束:场景还原

先破除一个常见误解——真实自动驾驶面临的紧急决策,和课堂上那个开关轨道的思想实验完全不是一回事。

电车难题的原始设定是:一辆失控的电车即将撞上轨道上的五个人,你可以扳动道岔让它驶向另一条轨道,但那条轨道上绑着一个人。问题在于“是否可以用一个人的牺牲换取五个人的存活”。这个设定有几个前提:轨道是确定的、人数是明确的、扳道岔是“一手操作”的简单动作。

自动驾驶面对的场景要复杂得多。以典型的真实场景为例:车辆以80公里/小时在城市快速路行驶,感知系统突然在120米外识别出一个横穿道路的行人。系统检查周围环境后发现:左车道有并行车辆,正后方有跟车,右侧是隔离护栏。如果全力制动,根据当前路面附着系数和制动距离模型,车辆大概率会在行人面前约2米处停下,但存在行人中途犹豫或折返的不确定性;如果变道避让,需要评估相邻车道的空间和后方来车速度;如果转向撞护栏,则要计算碰撞对乘员安全带的约束效果和侧气囊的缓冲能力。

这里的关键差异在于:现实中的每个选项都有概率,没有哪个选项是“确定的牺牲”。算法做的不是道德判断,而是概率评估:每个选项对应的伤害期望值是多少。

2.2 决策时间窗口:你只有300毫秒

另一个被大众忽略的技术约束是时间窗口。L3级别以上系统在判断危险时,通常只有300到500毫秒做决策,而完整的感知—预测—规划—控制链路本身就需要150到200毫秒。

这意味着算法几乎没有“思考”的时间,它必须在车辆还在正常行驶时就预置一套决策策略。紧急情况下的“选择”,本质上是预先写好的优先级策略被触发。这也是为什么伦理问题从来不是“那一刻临时判断”,而是“设计阶段必须定义的规则”。

从业者圈子里有个说法:紧急决策不是判断力问题,而是预案覆盖度问题。你无法在300毫秒内搞一场哲学辩论,只能提前把各种场景的优先级写死,紧急时按预案执行。所以公众纠结的“该撞谁”,在工程上早就转化成了另一个问题——该把哪些规则提前写进策略表。

3. 从“最大多数人的最大幸福”到可执行的评分函数

3.1 功利主义算法化:一个粗糙但可落地的思路

既然要在瞬间做出决策,工程上最自然的选择是给每个选项算一个“伤害分”,选择最小值。这个思路在道德哲学上对应功利主义——追求总体伤害最小化。虽然不是唯一的选择,但确实是当前最容易落地的一种。

我们用一个简化模型来拆解。假设系统识别出三个可行动作:A是全力制动(可能仍会撞上行人)、B是变道避让(可能撞上对向车辆)、C是转向护栏(乘员受伤风险高)。每个动作的伤害期望可以抽象为:

H(动作) = Σ(后果类型权重) × (该后果发生概率) × (涉及人数) × (速度相关因子)

举个例子,一个可工程化的评分表长这样:

后果类型权重说明
行人死亡10最严重,权重最高
行人重伤5次于死亡
乘员死亡6低于行人死亡的权重,考虑“车内人员可被约束系统保护”
乘员重伤3安全气囊、安全带可缓解部分伤害
对方车辆乘员死亡6同样视为交通参与者
财产损失0.5保险可覆盖,不涉及生命

注意这些权重是“示意性”的,具体数值各团队差异很大。有的团队会把行人权重拉到15,乘员降到2,理由是“自动驾驶的首要目标是保护弱势交通参与者”;也有团队坚持“车内乘员优先”,因为消费者不会购买一台在危险时刻倾向牺牲自己的车。这种分歧在行业内至今没有统一答案。

3.2 动态概率计算:不确定性才是真正的敌人

权重只是道德立场,真正决定一次决策的是概率估计。在真实物理世界中,每个动作的概率都随环境动态变化:

  • 全力制动能否在碰撞前刹停,取决于路面附着系数、轮胎状态、制动系统响应时间。实车测试中,干燥沥青路面80公里/小时刹停距离大约在35到40米,但如果是雨天或落叶路面,这个距离容易扩到50米以上。
  • 变道避让是否安全,取决于目标车道内后车的距离和速度,以及本车转向时的横向加速度极限。如果后车速度更快,变道反而会制造新的碰撞点。
  • 转向撞击护栏的后果,取决于碰撞角度和速度。20度角侧碰和90度正面撞击的伤害差异巨大,侧面碰撞时乘员的生存空间压缩更明显。

感知系统给出的这些概率还有置信度问题。比如激光雷达在雨雾中可能漏检,摄像头在逆光下可能误检,而这些感知噪声会直接传导到决策层的概率估算中。我参与过的很多模拟测试里,伦理困境的正确解法往往不是选择“道德最优项”,而是选择“感知置信度最优项”——因为一旦概率估算本身是错的,任何道德权重都失去意义。

3.3 一个具体的评分示例

假设系统不得不做选择,我们看一个具体的评分过程:

  • 动作A(制动):行人被撞概率40%,行人死亡权重10,乘车人员受伤概率10%,乘员重伤权重3,速度因子按碰撞时预估车速50公里/小时计为2.0。H(A) = 0.4 × 10 × 1 × 2.0 + 0.1 × 3 × 4 × 1.2 = 8 + 1.44 = 9.44
  • 动作B(变道):对向摩托车被撞概率25%,对方死亡权重6,本车乘员受伤概率15%,乘员伤重权重3,本车侧翻概率10%。H(B) = 0.25 × 6 × 1 × 1.8 + 0.15 × 3 × 4 × 1.3 + 0.1 × 3 × 4 × 0.8 = 2.7 + 2.34 + 0.96 = 6.0
  • 动作C(撞护栏):乘员死亡概率8%,乘员死亡权重6,乘员重伤概率20%,重伤权重3。H(C) = 0.08 × 6 × 4 × 2.2 + 0.2 × 3 × 4 × 1.5 = 4.224 + 3.6 = 7.824

按这个评分结果,系统会选择动作B(变道避让)。但如果你调整行人的死亡权重为15而不是10,结果可能变成:

  • H(A) = 0.4 × 15 × 1 × 2.0 + 1.44 = 12 + 1.44 = 13.44
  • H(B) = 2.7 + 2.34 + 0.96 = 6.0
  • H(C) = 7.824

选择依然是B,这是因为行人碰撞概率本身已经影响权重。再如果对向车道不是摩托车而是满载乘客的商务车,动作B的后果权重会暴增,决策就可能转而选择制动或撞护栏。这个示例想说明的是:伦理决策的结果,对权重设定、概率估算、场景细节高度敏感,不存在一个放之四海而皆准的答案。

4. 生死优先级由谁写进代码:决策权背后的责任链条

4.1 算法不是道德超人,它是利益相关者的公约数

外界常有一个误解,认为自动驾驶的伦理决策是“算法自己作出的”。实际上,权重映射表、评分函数、安全策略手册,每一层都是人为设计和评审的结果。在多数主机厂和方案供应商的流程中,这些决策由跨部门团队共同评审确定,包括安全工程、算法团队、法务、质量部门,甚至市场与品牌部门。

我参与过几次这类评审会,感受相当复杂。安全工程师坚持降低乘员受伤权重,理由是人体耐撞性数据更可靠;法务担心的是事故责任认定,倾向提高所有生命类权重、拉开与财产损失的差距;市场团队的立场更实际——如果媒体曝光“某品牌汽车在可避免的情况下选择牺牲车内人员”,销售数据会立刻说明问题。

最终下来的权重表往往是各种立场妥协的产物。这没有什么可羞耻的,伦理决策本来就不是一个纯数学问题。真正危险的是这种权衡过程不透明、不记录、不接受外部审视。当一台车在紧急情况下做出了一个公众不理解的选择时,如果设计团队无法说明当时的权重依据和评审记录,那才是更大的信任危机。

4.2 责任链条:从评测规范到功能安全标准

在工程实践中,伦理决策不完全靠团队自由发挥,还要对标行业规范。现有的行业框架虽然没有明确给出“该保护谁”的统一答案,但提供了很多约束条件。

  • 功能安全标准(如ISO 26262)侧重的是系统失效问题——保证电子电气系统在故障时行为可预测,不要求回答道德抉择,但要求决策过程有逻辑、有记录、可追溯。
  • 预期功能安全(SOTIF)解决的是非故障场景下的安全不足,比如感知局限导致的误判。它逼着开发团队思考“系统在没坏的情况下,面对未知场景该怎么办”。
  • 一些国家和地区的自动驾驶测试规范明确要求,测试车辆在碰到行人时必须优先保障行人安全。这就直接砍掉了一部分伦理争议——没有商量余地,必须行人优先。

从我的角度看,现阶段真正有约束力的不是哲学上的“正确”,而是这些法规和标准划出的硬边界。在边界之内,算法的自主空间其实很小;边界之外,又往往因为缺乏数据而导致系统无法处理。所谓伦理难题的大规模争议,更多发生在“边界模糊地带”——比如行人闯红灯而车内乘员是儿童,这种场景任何法规都没给出明确指引。

4.3 公地悲剧:消费者会不会为“保护他人”买单

这里还藏着一个尖锐的商业矛盾:如果一辆车的策略是“优先保护车外行人”,那么它在极端情况下会更倾向于牺牲车内乘员。消费者买这台车是因为它安全,但这个“安全”如果引入了不确定的“对外偏好”,购买意愿会明显下降。

我见过一个很有意思的内部调研——某测试机构模拟了三个紧急场景对消费者展示,结果发现,当车辆策略是“乘员优先”时,受访者的购买意愿显著高于“行人优先”。但当受访者被问到“假如你是行人”时,观点又迅速反转。这就是典型的公共决策困境:所有人都希望别人在紧急情况下保护自己,却不愿意自己坐在一台愿意保护别人的车里。

这道题的工程解,可能不是选择一个优先级,而是创造一个让优先级不全靠“牺牲”来实现的系统。比如更强的制动能力、更早的预测预警、更宽的感知范围,都能压缩“必须牺牲某一方”的窗口。好的伦理策略,往往不是更好的权重,而是更少的极端场景。

5. 数据驱动的伦理观:当道德偏好被悄悄训练出来

5.1 模仿学习:从人类驾驶数据中无意识学到的偏见

很多人以为决策算法是用规则写出来的,实际上现代系统大量靠数据训练。模仿学习(Imitation Learning)是其中常见的一支:系统记录人类驾驶员在类似场景下的操作,然后训练模型去模仿。这种方法的问题在于,人类驾驶行为本身就有大量不稳定的道德偏好。

举个例子:某数据采集项目让100位试驾员在模拟器中反复经历同一个“行人横穿”场景,结果他们的操作分布非常分散——35%的人选择大力制动,28%的人选择轻微转向避让,22%的人选择保持原速但鸣笛警告,剩余的人操作五花八门。这些数据如果直接进训练集,模型学习到的“平均策略”会是一个说不清楚道德立场的混合体。

更麻烦的是,采集场景的真实地理分布会引入系统性偏差。如果某城市的训练数据中,行人横穿行为频发且驾驶员普遍采用“抢行通过”的激进策略,模型就会学到这种偏好。数据不会告诉你哪种策略更“正确”,它只会告诉你哪种策略更“常见”。

5.2 强化学习的隐含奖励设计:奖励函数即伦理立场

强化学习路径更直接:系统通过与环境交互获得奖励信号,逐步学会最大化累计奖励。这种情况下,奖励函数就是伦理立场的直接体现。

假设奖励函数定义为“按时到达目的地 + 平稳驾驶 + 避撞惩罚”,那么系统在某个场景下发现“轻微刮蹭行人”的惩罚远低于“因急刹导致乘客不适”的惩罚时,它就会倾向于选择前者。开发者写的每一行奖励公式,都在无意识中表达了一种道德排序。

我给新手工程师一个真诚的建议:在做强化学习奖励设计时,把“伤害类惩罚”写成显式的分层惩罚,而不是叠成一个总惩罚。比如:

reward = arrival_bonus - smoothness_penalty - death_penalty(涉及任何交通参与者死亡: -100) - serious_injury_penalty(-30) - minor_injury_penalty(-5) - property_damage_penalty(-1)

这样每一层的伦理权重都清清楚楚,评审时也能直接讨论“为什么死亡是100分而轻伤只有5分”。如果混成一个总惩罚,出问题后根本无从追溯。

5.3 对抗攻击与数据投毒:把伦理偏好变成漏洞

数据驱动的方法还有一类特殊风险:决策偏好可以被攻击者利用。如果某个自动驾驶车队在特定区域运营,攻击者可以刻意在该区域制造大量某种场景的数据——比如反复出现“行人闯红灯且车辆可安全绕行”的案例——通过数据污染来拉偏模型的决策习惯,后续在该区域制造特定事故。

这类攻击目前在学术圈已经有模拟案例,实操层面尚不多见,但它提示了一个关键问题:伦理偏好一旦以隐式方式存在于模型参数中,就无法像规则那样被直接审计。要让伦理决策可监管、可追溯,最好的办法是把关键伦理判断尽量留在显式的规则层,而不是埋在神经网络的黑盒里。

6. 公平性困境:保护名单背后的歧视风险

6.1 能不能给不同人群设置权重差异

一个特别敏感但绕不开的问题是:要不要根据行人特征调整保护权重?比如儿童和成人权重不同?佩戴头盔的摩托车手和赤手空拳的行人权重不同?

从纯工程角度看,感知系统完全有能力做这类区分——摄像头可以识别年龄、服饰、动作模式,激光雷达可以判断体积,多传感器融合甚至可以推断对方是否在奔跑。技术上“按人打分”是可行的。但从社会公平性角度看,这可能打开潘多拉魔盒:如果算法对一个穿昂贵户外装的行人给出更高权重,而对一个穿工装的路人给出较低权重,这类“歧视”一旦被媒体披露,会引发远比事故本身更大的信任危机。

我个人的态度是:**在技术成熟度不够、伦理共识缺乏的情况下,主动选择“不做人群区分”是一种更稳妥的工程策略。**这里的“不做区分”不是说权重一样,而是指不对人群身份做精细建模,只依据运动状态、空间关系、碰撞概率等客观物理量。这样设计的好处是显而易见的:决策不具备身份歧视特征,所有冲突都聚焦在人道主义底线——都是生命,权重相同。

6.2 感知偏差的隐蔽歧视:比显式权重更危险

相比之下,我更担心的是另一种隐蔽的歧视:感知系统的检测质量本身存在偏差。比如某些视觉算法在夜间对深色皮肤行人的检出率低于浅色皮肤行人;某些传感器在雨天对骑自行车的人识别不稳定;某些路侧单元在社区边缘覆盖不足,导致这些地区的行人更晚被系统“看见”。

这些不是伦理决策问题,而是感知覆盖率问题。但如果系统因为没检测到某个行人而选择了撞向该方向的避让路径,事后分析时很难分辨这是“感知漏检”还是“伦理打分”。大多数人会把矛头指向“算法杀人”,而真正的问题其实是传感器和数据质量问题。

这给伦理治理的启示是:与其争论权重表里行人该得10分还是15分,不如先把感知系统在弱势人群、复杂天气、低照明条件下的检出率做上去。检出率提高1个百分点,可能比调整权重5个点挽救更多生命。

7. 我作为从业者的几点真实观察与建议

7.1 别被“算法道德”的说法带偏

在我接触的项目里,真正卡住伦理决策落地的,常常不是道德立场,而是确定“谁对决策结果负责”的制度设计。算法只是一个执行体,道德责任的链条必须穿透算法,回到设计者、测试者、运营者和监管者的手中。如果一家公司无法说清一次事故决策的完整来龙去脉——场景特征、感知数据、算法版本、权重设定、测试记录——那这家公司的自动驾驶系统无论伦理策略多么漂亮,都不值得信任。

7.2 三个可以在近期落地的务实改进

这几个方向我认为业内可以马上做,不需要等伦理共识:

第一,建立极端场景决策记录系统。每一辆自动驾驶车辆在触发紧急决策时,完整记录场景重建、感知置信度、候选动作集、评分过程和最终选择。这个记录不是只给事故调查用的,而是给后续算法迭代和伦理评审提供真实样本。

第二,把“最小伤害”从哲学口号变成KPI。设计团队可以定期统计各类极端场景触发的分布,看看系统实际选择的动作是否与预设的伦理策略一致。我见过不少系统,设计时声称“行人优先”,实际运行中因为概率估算误差变成了“乘员优先”,这类偏差光靠代码评审发现不了,必须靠数据复盘。

第三,在模拟器中加入更多“两难场景”的压力测试,而不是只测标准法规场景。法规场景解决的是“合法性问题”,但伦理场景解决的是“信任问题”。一个系统如果每次遇到两难场景都输出一个不稳定、不合理的决定,说明它的策略设计本身就有缺陷。

7.3 最后说点掏心窝的

做自动驾驶久了,我愈发觉得,公众担心的不是“算法会不会杀人”,而是“有没有人用负责任的态度对待这行代码”。伦理难题没有完美答案,但不代表我们无事可做——我们可以把决策过程做得更透明、把权重的来源讲清楚、把数据的边界标注明白、把概率的不确定性诚实地暴露出来。

我参与的一次极端场景评审中,技术总监说了一句话我记到现在:“我们不是在选牺牲谁,我们是在选一个今后必须拿得出手的理由。”这台车在0.3秒内做的任何决定,三年后都必须经得起一场面向全社会的解释。这才是自动驾驶伦理问题真正的工程内核——让每一个紧急决策都有资格被追问,也有能力被回答。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询