产品×金融×AI:AI 时代的金融产品第四部分 · 实现层 如何兑现English
第 29 章

保障强度按后果与验证难度分配保障

保障是让承诺得以兑现的工程手段:测试、评测、审核、监控与发布控制。保障不是越多越好,它的强度应当随两件事而定:出了错后果有多严重,结果有多难验证。一份行情摘要与一笔自动下单,需要的保障相差几个量级。AI 系统给保障带来两个新问题:同样的输入可能得到不同的输出,所以不能靠一次测试判断对错,而要用足够大的评测集作统计验证;它在常见情形上表现很好,却可能在少见而关键的情形上出错,所以评测必须专门覆盖这些情形。上线之后,市场与用户都会变化,保障还要延续为持续的监控与分级发布。最后,保障本身有成本,过度保障会拖慢迭代,强度要与风险相称。

一、保障强度由后果与验证难度决定

汽车电子的功能安全标准按三项因素确定安全完整性等级:伤害的严重程度、暴露的频率与驾驶者能否控制(国际标准化组织,2018)。金融代理可以借用同样的思路,用两个维度确定保障强度:出了错后果有多严重,以及结果有多难验证。后果轻、容易验证的功能,例如一份附有来源的行情摘要,抽查即可;后果重、难以验证的功能,例如在授权范围内自动执行交易,需要形式化的约束、全量的执行层检查与人工审核。大多数功能介于两者之间。

保障强度:后果 × 验证难度

横向是出了错后果有多严重,纵向是结果有多难验证。每一格标出保障等级。点按一项功能,查看它需要的保障。

后果轻后果中后果重
难以验证
需要专业判断
容易验证
点按一项功能。
示意分级。按严重程度、暴露频率与可控性确定安全完整性等级的思路见 ISO 26262(2018)。

二、不确定的系统要用统计验证

传统软件的同一个输入总是得到同一个输出,一次测试通过就说明这条路径是对的。AI 代理不同:同样的问题问两次,答案可能不同;一次答对,不代表每次都答对。要判断它的错误率,需要一组足够大的评测题目并统计结果。统计学的“三分之三规则”给出了一个直观的门槛:如果在 n 次独立试验中一次错误也没有,那么以 95% 的置信度,真实错误率不超过约 3 ÷ n(汉利与利普曼-汉德,1983)。要有把握说错误率低于 1%,至少需要约 300 道题全部答对。

要做多少道题,才能说错误率低于 1%

拖动评测题目的数量与其中出错的次数,看以 95% 的置信度,真实错误率最多可能是多少。

按泊松近似计算 95% 单侧置信上限:0 次出错时约为 3 ÷ n,即“三分之三规则”(Hanley 与 Lippman-Hand,1983);横轴为对数刻度。

三、评测要覆盖少见而关键的情形

评测集如果按实际使用的比例抽取,绝大多数题目都是常见的简单情形,整体准确率可能很高,却掩盖了少见情形上的失败。金融场景中最关键的恰恰是少见的情形:到期日当天、市场剧烈波动、公司停牌与重组、数据缺失。评测应当按情形分层,对关键而少见的情形单独计算准确率并设定更高的门槛;还要主动寻找让系统失败的输入。甘古利等人(2022)组织了大规模的“红队”测试,专门寻找让模型产生有害输出的输入,并公开了近四万条攻击记录。

整体准确率掩盖了关键情形

一千道评测题按实际使用的比例抽取。切换查看整体准确率与分情形的准确率;关键情形的门槛是 99%。

示意数字。有组织地寻找失败输入的红队测试见 Ganguli 等(2022)。

四、上线之后:持续监控

上线时的评测只说明系统在当时的数据上表现如何。之后,市场会进入新的状态,用户会提出新的问题,数据源也会改变格式。斯卡利等人(2015)把机器学习系统中这类随时间累积的问题称为隐藏的技术债:系统的表现会在没有任何代码改动的情况下悄悄变差。因此,关键指标要持续监控,例如数据缺失率、请示率、被用户纠正的比例与漏报率;指标越过预先设定的门槛时,自动告警,必要时回退到上一个版本或更保守的模式。

没有改动代码,表现也会变差

一项提醒功能上线 60 天的漏报率。第 35 天市场进入新的状态,数据源也调整了格式。切换是否有持续监控与自动回退。

示意曲线。机器学习系统中随时间累积的隐性问题见 Sculley 等(2015)。告警门槛为 2%。

五、分级发布:先小范围,再扩大

一个新版本即使通过了全部评测,上线后仍可能暴露问题。站点可靠性工程的通行做法是分级发布:先让一小部分流量使用新版本,观察关键指标,确认没有问题再逐步扩大(拜尔等,2016)。这样,一个评测没有发现的缺陷,只会影响少数用户,并且能在扩大之前被发现和撤回。对影响交易与资金的功能,第一级还可以只运行而不生效:新版本给出决定,但不执行,与旧版本的决定对照。

分级发布:缺陷只影响少数人

一个新版本带有评测没有发现的缺陷,要在 1000 次使用之后才会被发现。每个圆点代表 100 位用户。切换发布方式,看缺陷被发现时有多少用户受到影响。

缺陷被发现时受影响的用户
当前阶段

示意:共 1 万位用户,每位用户每天使用一次。分级发布的做法见 Beyer 等(2016)。影响交易与资金的功能,第一级可以只运行而不生效。

六、保障也有成本

保障越强,上线越慢、成本越高。博姆与特纳(2004)指出,过程的严格程度应当随风险调整:风险低的部分追求敏捷,风险高的部分追求纪律。保障强度的选择可以看作一次权衡:保障不足时,缺陷造成的期望损失高;保障过度时,审核与等待的成本高、迭代变慢,用户迟迟用不上改进。不同风险等级的功能,最优的保障强度不同;把所有功能都按最高标准保障,与把所有功能都按最低标准保障,同样是错误的。

保障多强才合适

保障越强,缺陷造成的期望损失越小,审核与等待的成本越高。选择功能的风险等级,看总成本最低的保障强度在哪里(示意)。

缺陷的期望损失保障的成本与延误总成本

示意曲线。过程的严格程度应随风险调整,见 Boehm 与 Turner(2004)。

七、对产品设计的含义

按后果与验证难度给每项功能定级,用统计评测与分层评测验证,上线后持续监控、分级发布,并让保障强度与风险相称。

本章小结:让保障与风险相称

四条设计要求,各自对应本章的一个机制。

后果 × 验证难度给每项功能定保障等级

抽查、评测集、分层评测与审核、形式化约束与全量检查,按等级分配。

不确定的系统用足够大的评测集作统计验证

按需要证明的错误率确定题目数量,0 次出错也要至少 3 ÷ 目标错误率道题。

整体数字会掩盖关键情形按情形分层评测,并做红队测试

到期日、剧烈波动、停牌与数据缺失单独达标。

上线不是终点持续监控、分级发布,保障与风险相称

关键指标设告警与回退;新版本小范围先行;低风险功能不要被最高标准拖慢。

参考文献