layout: default
列举几个解释神经网络的方法。
主要针对图像领域,对图像的不同层、channel、unit 进行可视化,解释模型的每个模块分别学到了什么。
1、基于模型梯度进行解释
2、对输入(图片像素)添加扰动,观察输出结果的变化
作者建议:尽量少发明新的方法,多关注如何验证各个解释性的好坏。
利用模型中间层数据,做一些可解释性的检测,具体没有太看懂。
通过生成对抗样本发现模型的缺点。主要在图像领域用的比较多。
对抗样本和实际的应用场景相关性较大,场景是什么,就在对应的场景上提供更多对抗样本,提高对应的解释能力。比如无人驾驶、垃圾邮件检测等等。
剔除一个样本,重新训练模型,看模型预测指标的变化,归因样本和模型的关系。
只使用对模型重要性高的样本做训练。
重训模型成本太高,文中提到针对"有梯度"的模型,也可以提前预估样本剔除对模型参数的影响,从而直接微调模型参数,不需要重训模型,减小该部分的成本。
模型解释性整体思路
但天然存在的一个问题是,模型足够大的时候,这些变化都很微弱,很难观测到比较置信的解释性。
一个可行的思路是将模型参数从小往大做,每一步充分保证解释性,比如词向量,可以用大量的数据集充分验证其效果,从而保证解释。
解释性一个重要的作用是为了辅助达成AGI(通用人工智能),当然或许可以创造其他解释性更好的技术(非神经网络)实现AGI,科学家们加油!
参考:https://christophm.github.io/interpretable-ml-book/pixel-attribution.html