Press "Enter" to skip to content

掌握深度学习:以分段近似为基础的非线性估计艺术-第二部分

大家好!欢迎来到我的深度学习掌握系列第二篇文章。本文是第一篇文章的续篇,题为用分段估计逼近非线性函数的艺术-第一部分。在第一篇文章中,我们了解到神经网络通过组合多个输入x的线性函数来估计输出y,通过学习映射f(x,ϕ)将输入空间映射到输出空间。我们观察到这些映射本质上是线性的,而是激活函数引入了非线性。我们看到我们可以通过线性组合的方式使用多个分段线性函数来逼近非线性函数。这些分段线性函数的创建是具有阈值或在一个或多个点上修剪输入的函数的独特属性(例如ReLU)。随着线性区域的数量趋近无穷大,这些线性区域的长度变得无限小,从而改变了映射。之前是分段线性结构的现在演变成了非线性函数。通用逼近定理证明了对于任何连续函数,存在一个浅层网络可以以任意指定的精度逼近该函数

有些函数需要非常大数量的隐藏单元才能以所需的精度进行估计。这导致了深度神经网络的发现。深度神经网络可以估计比浅层神经网络更多的线性区域,且参数数量一定。让我们通过考虑两个具有3个隐藏单元的浅层神经网络,并将网络-1的输出作为输入传递给第二个网络,来理解深度神经网络的直觉。

通过组合两个每个具有3个隐藏单元的浅层神经网络创建的深度神经网络

现在让我们用上面描绘的深度神经网络来训练该网络以估计函数y = sin(2x)+cos(x)+x并了解其工作原理。

深度网络需要逼近的f(x)
网络估计的f(x)

上面的图表描述了深度网络估计的函数。让我们通过一层层地剖析估计结果来理解其动态。

第一个网络的神经元输出
y'是h1, h2和h3的线性组合(y' = ReLU[θ₁h₁ + θ₂h₂ + θ₃h₃ + β])
第二个网络的神经元输出
y’是h1、h2和h3的线性组合(y’ = θ’₁h’₁ + θ’₂h’₂ + θ’₃h’₃ + β’)

此时绘图将毫无意义,其中一个原因是网络容量不足。但是让我们逐步了解我们所拥有的,让我们来看一下关系:

y = θ’₁h’₁ + θ’₂h’₂ + θ’₃h’₃ + β’

这里的y描述了h’₁、h’₂和h’₃构成的三维超平面。不幸的是,我们无法将这个超平面可视化,但是如果我们仔细观察,可以将关系重写如下:

y = θ’₁ReLU[ϕ₁y’ + β₁] + θ’₂ReLU[ϕ₂y’ + β₂] + θ’₃ReLU[ϕ₃y’ + β₃] + β’

上述关系描述了在y’中的分段线性的一维超平面。在这里,我们将三维超平面展开成一维超平面,通过从y到y’的转变。深度神经网络也是以相反的方式执行相同的操作。深度神经网络将低维空间折叠成高维度以产生复杂的表示。作为这种折叠的结果,产生了高维空间,通常被称为潜空间,估计的高维度表面被称为输入的潜在表示。在我们的示例中,从x到y的映射通过以下从x到y’和从y’到y的潜在表示获得:

y’ = ReLU[θ₁h₁ + θ₂h₂ + θ₃h₃ + β]

y = θ’₁h’₁ + θ’₂h’₂ + θ’₃h’₃ + β’

同样,这些是三维超平面,因为从x到y的底层映射是一维的。这些潜在关系可以被展开以获得从x到y的底层一维映射。因此,我们可以将深度网络视为折叠输入空间。如果所有这些数学和维度让你感到困惑,就想象你的输入空间是一张纸,折纸的时候,你需要在第三个维度中移动,深度神经网络也是以更高的维度完成同样的操作。

到目前为止,我们考虑了一个玩具示例,其中我们将深度网络看作两个浅层网络的组合,现在让我们看一下在实践中使用的更实用的深度网络:

带有两个隐藏层的深度神经网络示例

让我们训练上述网络,看看新网络的估计如何。这次,我们使用每个层中的7个神经元而不是3个。网络估计的分段函数如下所示:

深度网络对y的分段估计

我们可以看到网络在估计函数方面做得相当不错。现在,让我们通过可视化潜在表示来研究是否存在折叠的迹象。正如之前讨论的,如果折叠已经发生,我们可能会观察到以下一个或多个迹象:

  1. 值域变化:根据深度网络执行折叠操作的方式,我们会检测函数在 x 轴、y 轴或两者上所代表的值范围的变化。
  2. 重叠或循环:在某些情况下,我们可能会看到函数在自身上形成类似循环的结构。
每个神经元将 x 的隐藏表示为 y’ 的 7 种不同方式
折叠的输入空间

如预期的那样,网络确实将输入空间进行了折叠,这在上图中很明显。例如,如果我们观察粉色线条,我们会发现它的 x 和 y 范围由于这种转换而互换了位置。同样,蓝色线条经历了一次转换,形成了一个循环,并且 x 轴范围缩小了。这些转换可以简单地交换坐标轴,也可以更复杂地形成复杂的循环结构。

深度神经网络中的折叠概念可以类比为一个简单直观的类比。想象一下,你手上有一张上面画着曲线的纸。当你沿着曲线将纸折叠并切割后,你会发现这些切割在展开纸时有效地加倍了。深度神经网络采用了类似的原理,不过有一个重要的区别。它们不是手动创建切割线,而是在训练过程中使用学习到的方法。它们通过将隐藏表示进行“剪裁”或转换来调整,旨在在数据中创建更多的线性区域。这种学习到的折叠过程使网络能够尽可能地适应数据分布。

让我们使用更复杂的函数 f(x) = sin(x) + sin(2x)cos(3x) + 0.2sin(5x)cos(7x) + 0.1sin(10x) 结合高斯噪声构建一个数据集。我们的目标是评估深度神经网络在存在噪声的情况下是否能够有效地估计潜在分布。

从数据分布均匀抽样的 1000 个点
模型对噪声分布的估计

很明显,该模型成功地以相当程度捕捉到了潜在分布。如果我们增强模型的容量,估计结果可能会进一步改善。这展示了深度神经网络作为强大估计器在当代机器学习领域中的显著潜力。

本博客从 Simon J.D. Prince 的书《深度学习理解》中得到了很多启发(udlbook.github.io/udlbook/)。在最后一节中,我们将探讨这些网络如何对多变量输入和输出进行估计。我用来生成这些图表的代码可以在下方找到。如果你觉得本博客有价值,希望能得到你的赞同支持。

理解深度学习/精通深度学习:用π近似非线性的艺术…

通过在 GitHub 上创建一个账户,为 Raagulbharatwaj/Understanding-Deep-Learning 做出贡献。

github.com

Leave a Reply

Your email address will not be published. Required fields are marked *