导语:本文讲述用分类器来拦截攻击时遇到的困难:处理错误和不确定性,这样才能保障整个系统仍然是安全和可用的。
用分类器来拦截攻击时遇到的一个主要困难就是如何处理错误的问题。更准确的说,正确处理错误的需求可以分成两大挑战:如何在假阳性(false positives)和假阴性(false negatives)之间做一个平衡,来确保当分类器发生错误时,产品仍然是安全的;以及如何向用户解释和调试过程为什么要拦截一些事情。
在假阳性和假阴性之间平衡
当将分类器放入生产环境时,一个最重要的决定就是如何平衡分类器的错误率。这个决定会深深影响系统的安全性和可用性。最好的方法就是通过现实的例子去理解,下面我们看一个帐号恢复过程的例子。
当用户不能访问自己的帐号时,就可以通过帐号恢复过程提供一些信息来证明“自己是自己”,然后就可以恢复帐号的使用权。在恢复的最后阶段,分类器必须基于用户提供的信息和其他的信号来决定是否让申请恢复帐号的用户恢复账号。
关键问题在于当分类器不确定时,应该做什么样的决策。从技术上讲,这是通过假阳性和假阴性率来完成的,这也就是常说的分类器的敏感度和特征。一般来说,会有两个选择:
· 让分类器谨慎(cautious)。这是通过减小假阳性和增大假阴性来完成的。
· 让分类器乐观(optimistic)。这是通过减小假阴性和增大假阳性来完成的。
对于特定的用例,分类器必须调整到谨慎的方向。因为让黑客获取用户的账户并不是一件好事。从技术上讲,这意味着要增加假阴性率来减小假阳性率。
需要注意的一点是假阳性和假阴性的关系并不是线性的,如上图。在实际应用中,以一个参数为代价去减小另外一个参数值是不可取的,最终会导致整体错误率升高。
比如,你可能将假阳性率从0.3%提高到0.42%,假阴性率从0.3%降到了0.2%。假阴性率降低了0.1%,但假阳性率却升高了2%。这些数字说明了假阳性和假阴性之间不是线性关系。
总结一下,在生产环境中用分类器来检测攻击时遇到的第一个挑战就是:
在诈骗和滥用中,是不存在容错率的,一些错误的类型会比其他错误类型的成本更高。
这个问题可以通过关注如何平衡分类器的错误率,尽可能确保系统的安全性和可用性。下面是平衡分类器时需要关注的几个点:
· 手工检查。当遇到比较重要的情况,分类器不能确定的时候,可能值得依赖人去做最后的决定。
· 调整假阳性和假阴性率。适当调整模型来确保错误率和产品的安全性。
· 实施catch-up机制。没有分类器是完美的,所以实施catch-up机制对缓解错误带来的影响是非常重要的。Catch-up机制包括上诉系统和产品内的告警。
下面看一下Gmail的垃圾邮件分类器错误时如何平衡的。
Gmail用户是不希望错过任何一封重要的邮件,但是让他们花一点时间去删除收件箱中的垃圾邮件也是OK的。基于这样的观点,研究人员作出一个决策,即让Gmail垃圾邮件分类器要确保假阳性率尽可能的低。把假阳性率降低到0.05%的代价是假阴性率增长到0.1%。
预测不是解释
第二个挑战是能预测到攻击,但并不是说可以解释为什么会攻击能被检测到。
分类是一个二元判断,但是解释这个分类需要额外的信息。
处理攻击和滥用其实也是二元判断,你可以选择拦截或者不拦截。但是,在一些例子中,尤其是当分类器出错时,用户会想要知道为什么这些被拦截了。能够解释分类器如何完成某个决定所必须的信息必须通过其他的方式来收集。
一般有三种潜在的收集额外信息的方向:
1.用相似性来发现已知攻击
首先,查看拦截的攻击和已知攻击的相似性。如果给定的拦截攻击与已知攻击中的某一个非常像,那么它可能就是该攻击的一个变种。当模型使用embedding时,执行这种解释是非常容易的,因为可以直接计算embedding间的距离来发现相关的项。这已成功应用到词语和面部识别中了。
2.训练特定模型
可以使用许多以特定攻击为目标的专门模型,而不是用一个模型对所有攻击进行分类。把检测分割为多个分类器可以让决策变得更容易,因为攻击类型和检测某种攻击的分类器是一一对应的。一般来说,专门的模型会更加准确,也更加容易训练,所以可以尝试用这种方法。
3.使用模型可解释性
最后,可以分析模型的内部状态来收集决定产生的原因。如上图所示,一个特定类的特征图可以帮助我们理解图像的那部分对最终的决策影响最大。模型解释性是研究中一个非常活跃的领域,已经有很多的攻击,技术和分析。
以Gmail为例
Gmail使用可解释性来帮助用户更好的理解为什么一些邮件在垃圾箱中,和为什么这些邮件很危险。如图所示,在每个垃圾邮件的上方,会加一个红色的标签,红色的标签表明该邮件是危险的,而且这种简单的方式每个用户都可以理解。
结论
本文可以总结为:
成功的运用AI来应对滥用需要处理分类器的错误,这是一种安全的方式,而且可以理解某个特定的决定是如何达成的。