利用Python实现卷积神经网络的可视化(附Python代码)

对于深度学习这种端到端模型来说,如何说明和理解其中的训练过程是大多数研究者关注热点之一,这个问题对于那种高风险行业显得尤为重视,比如医疗、军事等。在深度学习中,这个问题被称作“黑匣子(Black Box)”。如果不能解释模型的工作过程,我们怎么能够就轻易相信模型的输出结果呢?

以深度学习模型检测癌症肿瘤为例,该模型告诉你它能够检测出癌症的准确率高达99%,但它并没有告诉你它是如何工作并给出判断结果的。那么该模型是在核磁共振扫描片子中发现了重要线索吗?或者仅仅是将扫描结果上的污点错误地认为是肿瘤呢?模型的输出结果关系到病人的生死问题及治疗方案,医生是不能承担起这种错误的。

bd72b499782f544d452a2ea2a566e9e1a3cea470

在本文中,将探讨如何可视化卷积神经网络(CNN),该网络在计算机视觉中使用最为广泛。首先了解CNN模型可视化的重要性,其次介绍可视化的几种方法,同时以一个用例帮助读者更好地理解模型可视化这一概念。

1.卷积神经网络模型可视化的重要性

正如上文中介绍的癌症肿瘤诊断案例所看到的,研究人员需要对所设计模型的工作原理及其功能掌握清楚,这点至关重要。一般而言,一名深度学习研究者应该记住以下几点:

1. 理解模型是如何工作的

2. 调整模型的参数

3. 找出模型失败的原因

4. 向消费者/终端用户或业务主管解释模型做出的决定

现在让我们看一个例子,可视化一个神经网络模型有助于理解其工作原理和提升模型性能。

曾几何时,美国陆军希望使用神经网络自动检测伪装的敌方坦克。研究人员使用50张迷彩坦克照片及50张树林照片来训练一个神经网络。使用有监督学习方法来训练模型,当研究人员训练好网络的参数后,网络模型能够对训练集做出正确的判断——50张迷彩坦克全都输出“Yes”,50张树林照片全都输出“No”。但是这并不能保证模型对于新的样本也能正确分类。聪明的是,研究人员最初拍摄了200张照片,其中包含了100张迷彩坦克照片、100张树木照片。从中分别选取50张照片合计100张照片作为训练集,剩余的100张照片作为测试集。结果发现,模型对测试集也能正确分类。因此,研究人员觉得模型没有问题了,就将最终成果交付给军方。原以为军方会很满意这份研究成果,结果军方做出的反馈是他们进行测试后发现效果并不好。

猜你喜欢

转载自my.oschina.net/u/3611008/blog/2933909