一条规则是如何挣得的。
行为的改变来自写下一行行你可以阅读、审计并删除的记录。没有权重,没有梯度,也没有训练过程 —— 这意味着不存在任何潜在状态,而习得的状态本身就是解释。
四个步骤,每一步都有门槛
- 一次事件写下一张卡片。分桶后的情境,以及当时采取的动作。分桶是唯一的抽象步骤,并且声明在同一处,便于被质疑。
- 证据必须跨过一道相对门槛。一个签名必须被见到足够多次、在绝对意义上确实致命,并跨过 95% Wilson 下界数倍于基准率的门槛。这个下界正是阻止一次倒霉事件变成迷信的东西。
- 卡片变成一条规则,把该动作移出可容许集合 —— 并且这条规则必须指名它所应对的危险,否则会被拒绝。
- 规则被追溯。30 条规则展开为 203 张规范证据瓦片,父子相连,因此单次否决可以回溯到为它背书的每一次事件。
我们先试过绝对门槛,结果是从 268 次真实失败中产生了 0 条规则。在一个你 99.5% 的时间都能存活的环境里,一个有 5% 致死率的情境已经比常态致命十倍 —— 却永远够不到绝对阈值。门槛必须相对于基准率。这是被测量出来的设计决策,不是偏好。
一次否决读起来是什么样
当 bomb dx+0 drop0 时,left 被移出可容许集合:
4 次中死亡 4 次(100.0%),为基准率的 5.2 倍
← 经验 #0040
← 经验 #0042
← 经验 #0171
← 经验 #0203
计数、与基准率的比较,以及按编号列出的每一次具体事件。删掉一行,行为就会改变。里面再没有别的东西。
置信度分数做不到的
0.94 无法告诉你是哪些事件把它变成 0.94,你也无法删掉其中任何一次。它说不出「我没有依据」。它会无声退化,事故之后无可阅读。
这里做到的
指名危险、引用证据、暴露它跨过的门槛,并且可以被持异议的人编辑 —— 而这次编辑本身会出现在下一份追溯里。
我们回避的那个词
我们不称它为「无机器学习」。它确实在学习 —— 行为随经验改变。它拥有的是没有权重、没有梯度、没有训练过程。这个区分很重要,因为我们提出的主张是精确的,而含糊的版本很容易被驳倒。
这个类别也并不新。在运行时把不安全动作移出选择集,是 shielding(Alshiekh 等,2018)以及围绕它的安全强化学习工作;从失败中学习规则则可追溯到 PRODIGY 的基于解释的学习、CHEF 的基于案例的失败驱动记忆,以及 Ripple-Down Rules。属于我们的部分更窄:护盾是从原始经验中习得的,而非由书面规范综合而来;每一次否决都可单独审计;饱和点被测量了出来。