概览深度学习的可解释性研究
你有没有被老板问倒过?反正我有。而且是当场噎住那种。
写技术专栏十年,眼瞅着一个个AI概念跟烟花似的蹿上天,又稀里哗啦掉下来。可有一样东西,它从来没真正爆火过,却从没消失过——就像个幽灵,始终悬在你脑袋上。每次模型出毛病,老板第一句话永远跟复读机似的:“为什么它这么判?”那一刻你心里咯噔一下:完了,糊弄不过去了。
我第一次撞上这堵墙,是2014年做图像分类模型。测试集上跑得挺欢,准确率喜人。一部署到工厂流水线,嘿,它倒聪明——直接拿背景当标准,所有产品全识别成“合格”。管你是好是坏,有那个背景就算合格。客户火了:“你这模型到底在想啥?”我说不清楚。那时候我连“可解释性”这三个字都没听过,但心里已经种下念头:这黑箱,不行。
后来呢?我开始琢磨,怎么让模型“说人话”。
2013年到2015年,CNN可视化成了可解释性研究的主战场。纽约大学的Zeiler和Fergus搞了个DeconvNet,直接展示卷积核在干啥。我手痒,跟着论文撸了一遍代码。哎,还真能看到东西:第一层抓边缘和角落,第二层开始关注纹理,第三层能认出部件,再往上就是完整的物体了。有意思吧?但只能看到某一层对某一类的激活区域,模型到底怎么把这些特征凑起来做决策?不知道。
同一年(2013年),Simonyan提出显著性图(Saliency Map),用输出对输入的梯度来标记重要像素。方法简单粗暴,我一拿到论文就试了试,效果挺唬人:猫的轮廓被高亮,可背景也跟着亮。说明啥?模型还是看到了一些不该看的东西。
到了2016年,CAM和Grad-CAM来了,这次是真火了。CAM要求网络最后必须接全局平均池化,很多预训练模型根本用不了。后来Grad-CAM用梯度替代权重,才变成通用工具。你猜现在那篇论文引用多少?接近两万了!我几乎每做一个跟图像有关的项目,都得跑一遍试试。
但我跟你说实话——这些方法对我帮助,真的有限。
它们能告诉我模型“看了哪里”,但没法解释“为什么觉得那里重要”。举个例子,有一次我用Grad-CAM看医疗影像,模型高亮了一片病灶边缘。我心想:行啊,边缘也能识别?结果一查真相,差点没气死——训练数据里病灶边缘出现过一道增强标记线,模型学的根本不是病灶,是标记线!你想想
读者评论 3