↑↑↑关注后"星标"Datawhale
每日干货 & 每月组队学习,不错过
Datawhale干货
译者:刘洋,中科院大学,Datawhale成员
最近,人们对深度神经网络产生了极大的兴趣,因为它们在计算机视觉等领域取得了突破性的成果。
尽管如此,仍有一些人对此表示关切。一是很难去理解神经网络真正在做什么。如果一个人训练得很好,就可以获得高质量的结果,但是要理解它是如何做到的是很困难的。如果网络出现故障,很难解释出了什么问题。
虽然理解深层神经网络的一般行为很有挑战性,但事实证明,探索低维深层神经网络要容易得多——每层只有几个神经元的网络。事实上,我们可以通过可视化来理解这种网络的行为和训练。这一观点将使我们对神经网络的行为有更深的直觉,并观察到神经网络与一个称为拓扑学的数学领域之间的联系。
接下来有许多有趣的事情,包括能够对特定数据集进行分类的神经网络复杂性的基本下界。
一个简单的例子
让我们从一个非常简单的数据集开始,平面上的两条曲线上的所有点。神经网络将试着把点分为两类。
一个最直观的方式去观察神经网络的行为(或任何分类算法),就是看看它是如何对每个可能的数据点进行分类的。
我们将从最简单的神经网络开始,这个只有一个输入层和一个输出层。这样的网络只是试图用一条线将这两类数据分开。
这种网络不够有趣。现代神经网络通常在输入和输出之间有多层,称为“隐藏”层。但这个网络好歹有一层可研究。
一个简单的网络图,来自维基百科
类似地,我们可以通过查看神经网络对其域中不同点所做的操作,来观察该网络的行为。下面这个图用比直线更复杂的曲线来分离数据。
对于每一层,网络都会转换数据,创建一个新的表示形式。我们可以查看这些表示形式中的数据以及网络如何对它们进行分类。当我们得到最终的表示时,网络只会在数据中画一条线(可能在更高的维度中,是一个超平面)。
在前面的可视化中,我们查看了数据的“原始”表示形式。你可以把它看作是我们在看「输入层」。现在我们将在它被第一层转化之后再看一看。你可以认为这是我们在看「隐藏层」。
每一个维度都对应于该层神经元的激活。
隐藏层学习的一种表示,这样使得数据可以线性分离
层的连续可视化
在上一节中概述的方法中,我们通过查看与每一层对应的表示来学习理解网络。这给了我们一个离散的表示列表。
棘手的部分在于理解我们如何从一个到另一个。谢天谢地,神经网络层有很好的特性,使这变得非常容易。
在神经网络中有各种不同的层。我们将讨论 tanh 层作为一个具体例子。一个tanh层