我正在使用带有 ReLU 激活功能的深度 CNN。可视化图层(每个图层有 32 个滤镜)时,有几个滤镜图像为零。
我试图解释为什么会发生这种情况?什么会导致整个图像为零?我可以理解有一个稀疏的图像(给定 ReLU),但是什么会导致全为零?
我希望这很清楚,并且有足够的细节来适当地回答。
我正在使用带有 ReLU 激活功能的深度 CNN。可视化图层(每个图层有 32 个滤镜)时,有几个滤镜图像为零。
我试图解释为什么会发生这种情况?什么会导致整个图像为零?我可以理解有一个稀疏的图像(给定 ReLU),但是什么会导致全为零?
我希望这很清楚,并且有足够的细节来适当地回答。
原则上,可以预期几个特征图会导致整个图像的输出为零。本质上,卷积层所做的是在图像上移动模板,并在图像中找到该模板形状的地方给出一个高值,而在其他任何地方都为零。每个特征图,即卷积层中的每个通道,都对应一个模板,较低层编码简单的形状,较高层编码更复杂的形状。
如果一个通道全部输出为零,这仅仅意味着在图像中没有检测到这个特征。
例如,考虑一个 MNIST 分类器。一个特征图可能已经学会寻找水平直线。当模型呈现手写的“7”时,会在图像的顶部检测到水平直线,也可能在中间检测到水平直线。因此,特征图将在顶部给出高值,也可能在中间给出高值,而在其他任何地方它都为零。
如果模型以手写的“0”呈现,通常没有水平线,因此特征图将处处为零。
因此,如果一个特征图在任何地方都为零,这通常意味着在当前输入中找不到特定的特征,但它可能存在于其他图像中。
但是,如果所有输入图像的特征图全为零,即卷积层中的通道对于所有 60k MNIST 示例处处为零,则网络可能存在问题,您可能需要应用批量归一化或 dropout。