可视化深度神经网络的损失景观......但我们能相信它们吗?

夜晚00 2019-05-06

点击上方关注,All in AI中国

介绍

可视化深度神经网络的损失景观......但我们能相信它们吗?

近年来,已经开发出一种方法来可视化深度神经网络的损失情况。我个人认为这是一个巨大的突破,但是,我对创建的可视化的有效性感到有点怀疑。今天我将研究作者的可视化方法,并介绍一些我认为很酷的其他方法。

方法

创造损失景观的整个过程非常简单直接。

  1. 训练网络
  2. 创建随机指示
  3. 向固定权重添加不同数量的扰动,并查看损失值是如何变化的

唯一需要注意的是如何创建随机方向。让我们来看看作者的方法。

可视化深度神经网络的损失景观......但我们能相信它们吗?

他们的方法被称为“过滤器归一化”,它很容易理解。 (这是作者代码的链接https://github.com/tomgoldstein/loss-landscape)。基本上,对于具有4维的tensor,例如(64,3,3,3),我们将使标准方面与第一维相匹配,因此(64,1,1,1)在权重的范数和随机方向之间。 (在更简化的术语中,我们可以将其理解为匹配权重和随机方向之间的比例)。

可视化深度神经网络的损失景观......但我们能相信它们吗?

以上是运行authors代码时的部分结果。现在我们可以利用tensor运算来简化整个过程。 (我将在稍后展示)

网络

可视化深度神经网络的损失景观......但我们能相信它们吗?

绿球→输入图像(64,64,3)

蓝色矩形→卷积+ ReLU激活

红色矩形→软最大输出

对于这篇文章,我在CIFAR 10数据集上训练了三个九层完全卷积神经网络(如上所示)。没有任何规范化,具有批量标准化和本地响应规范化。

可视化深度神经网络的损失景观......但我们能相信它们吗?

从上面的图中,我们可以看到具有批量标准化的网络已经实现了最高性能。

从现在开始,我将按照以下方式调用每个网络

Normal:没有任何规范化层的网络

Batch Norm:具有批量标准化层的网络

Local Norm:具有本地响应规范化层的网络

滤波器归一化

可视化深度神经网络的损失景观......但我们能相信它们吗?

上面的代码片段显示了如何使用tensor操作进行过滤器归一化。

可视化深度神经网络的损失景观......但我们能相信它们吗?

可视化深度神经网络的损失景观......但我们能相信它们吗?

可视化深度神经网络的损失景观......但我们能相信它们吗?

可视化深度神经网络的损失景观......但我们能相信它们吗?

可视化深度神经网络的损失景观......但我们能相信它们吗?

可视化深度神经网络的损失景观......但我们能相信它们吗?

当我们使用滤波器归一化方法来可视化损失景观时,我们可以看到每个景观看起来并没有那么不同。只有在我们以对数尺度显示景观的情况下,我们才能看到,实际上,局部响应规范化的格局要更加清晰。

可视化深度神经网络的损失景观......但我们能相信它们吗?

可视化深度神经网络的损失景观......但我们能相信它们吗?

当我们将所有三个图以原始比例叠加在一起时,我们可以看到它们看起来有多相似。

过滤正交化

可视化深度神经网络的损失景观......但我们能相信它们吗?

上述方法只是作者方法的一个简单修改,我们从简单的高斯分布生成随机方向,但是通过QR分解我们使方向正交化。

可视化深度神经网络的损失景观......但我们能相信它们吗?

可视化深度神经网络的损失景观......但我们能相信它们吗?

可视化深度神经网络的损失景观......但我们能相信它们吗?

可视化深度神经网络的损失景观......但我们能相信它们吗?

可视化深度神经网络的损失景观......但我们能相信它们吗?

可视化深度神经网络的损失景观......但我们能相信它们吗?

当我们将方向与不同维度正交化时,我们可以立即看到创建的损失景观之间是如何彼此不同的。与作者的方法相比,我们可以看到三个网络之间的损失情况存在差异。

可视化深度神经网络的损失景观......但我们能相信它们吗?

可视化深度神经网络的损失景观......但我们能相信它们吗?

正交权重投影

可视化深度神经网络的损失景观......但我们能相信它们吗?

这与滤波器正交化大致相同,唯一的区别在于,在收敛权重的不同维度上执行ZCA白化,而不是由高斯分布生成。

可视化深度神经网络的损失景观......但我们能相信它们吗?

可视化深度神经网络的损失景观......但我们能相信它们吗?

可视化深度神经网络的损失景观......但我们能相信它们吗?

可视化深度神经网络的损失景观......但我们能相信它们吗?

可视化深度神经网络的损失景观......但我们能相信它们吗?

可视化深度神经网络的损失景观......但我们能相信它们吗?

与Filter Orthogonalization类似,我们可以看到生成的可视化之间存在一些差异。

可视化深度神经网络的损失景观......但我们能相信它们吗?

可视化深度神经网络的损失景观......但我们能相信它们吗?

权重的原理方向

可视化深度神经网络的损失景观......但我们能相信它们吗?

最后的方法是在第一个主要方向上扰动权重,仅在不同维度之间。

可视化深度神经网络的损失景观......但我们能相信它们吗?

可视化深度神经网络的损失景观......但我们能相信它们吗?

可视化深度神经网络的损失景观......但我们能相信它们吗?

可视化深度神经网络的损失景观......但我们能相信它们吗?

可视化深度神经网络的损失景观......但我们能相信它们吗?

可视化深度神经网络的损失景观......但我们能相信它们吗?

我们可以清楚地看到生成的损失格局之间的差异。

可视化深度神经网络的损失景观......但我们能相信它们吗?

可视化深度神经网络的损失景观......但我们能相信它们吗?

讨论

我发这篇文章的唯一原因是为了表明,根据我们使用的方向,创建的损失格局可能会发生巨大变化。因此,我们需要质疑生成的损失格局的有效性,它们是否真正反映了受过训练的网络的特征。

代码

可视化深度神经网络的损失景观......但我们能相信它们吗?

要访问用于创建可视化的代码,请单击此处Daily-Neural-Network-Practice-3/0 create viz.ipynb at master · JaeDukSeo/Daily-Neural-Network-Practice-3 · GitHub

要访问整个博客文章的代码,请单击此处Daily-Neural-Network-Practice-3/Loss LanScape at master · JaeDukSeo/Daily-Neural-Network-Practice-3 · GitHub

可视化深度神经网络的损失景观......但我们能相信它们吗?

编译出品

相关推荐