L5.08.1counterfactual explanation设计研究
反事实解释说明改变哪些输入会改变结果
别名: 反事实解释 · 若改则变 · Wachter-style counterfactual
概念解释
拒贷旁边写:「若月收入再高四千,本次会过。」这句话不讲模型有几层,也不给特征排行。它给的是一个未发生的输入世界,以及那个世界里的输出。反事实解释说明的是改变哪些输入会改变结果(counterfactual explanation)。
Wachter 等人把它作为对算法决定的一种说明形式:最近的、能把结果翻过来的改动。它回答「怎样会不一样」,不回答「系统整体脾气如何」,也不回答「过程走过哪些层」。
机制
决策边界在输入空间里划开两类输出。从当前点走到另一类,最短或最可讲的那几步,就是一条反事实。用户得到的是路径,不是装置说明书。路径的用处是让人看见结果对输入的依赖:有些方向一动就翻,有些方向怎么走都还在原侧。
与局部代理不同。局部代理在邻域里拟合「这一次为什么」,不必指出一条能翻盘的改动。反事实可以完全不说「因为」,只说「若」。两种问法不要焊在同一句里。
怎么研究
同一拒件配反事实(指出可翻盘的输入改动)、配特征排行、或不配说明,看人能否指出一条真能翻盘的改动、以及是否误以为那是原因陈述。自变量:说明类型、反事实是否由真模型生成。因变量:指出的改动在模型上是否真翻、把「若」读成「因为」的比例。
反事实必须在原模型上验证。用另一个代理生成的「若」,测的不是反事实解释,是又一层事后故事。
边界
输出对输入不敏感(创作、随机采样)时,不存在稳定的「改哪些会变」,这条的对象消失。用户若根本不能改输入(只读结果),反事实没有使用场景。可行动性、多组反事实的选择、被用来规避、以及其他条件不变是否成立,是后面几条,这里只定义这种说明在指什么。
怎么落地
- 标题就写成「若这些项变成这样,本次结果会变为…」,不要写成「原因」或「系统如何工作」。
- 只展示在当前模型上跑过、确认会翻盘的改动。跑不过就不要写「若」。
- 与排行、热力图分开呈现,避免用户把「若」和「因为」读成一句。
- 验证:让人按说明改一版输入再提交。结果不变,这不是反事实;若人把它转述成「因为收入低所以拒」,类型已经被读错。