返回介绍

数学基础

统计学习

深度学习

工具

Scala

五、结构设计

发布于 2023-07-17 23:38:25 字数 2792 浏览 0 评论 0 收藏 0

  1. 神经网络的结构指的是:神经网络有多少个单元、这些单元如何连接。

    理想的网络结构必须根据具体任务反复试验,并评估验证集的误差来得到。

  2. 大多数神经网络被组织成以层为单位,然后层级之间为链式结构。每一层都是前一层的函数,如:第一层为 $ MathJax-Element-300 $ 、第二层为 $ MathJax-Element-301 $ 、...

  3. 链式结构中,主要的结构考虑是:网络的深度(一共多少层)、每一层的宽度(每一层的输出向量的维数)。

    • 即使只有一层隐层的网络也能够适应训练集。
    • 对于更深层的网络,每一层可以使用少得多的单元和参数,并且对于测试集的泛化性能更好。

5.1 通用近似定理

  1. 通用近似定理universal approximation theorem 表明:

    对于一个具有线性输出层,和至少一层具有任何一种“挤压”性质的激活函数(如sigmoid激活函数)的隐层的深度前馈神经网络,只要给予网络足够数量的隐单元,它可以以任意精度来近似任何一个从有限维空间到有限维空间的Borel可测函数。前馈神经网络的导数也可以以任意精度来逼近被近似函数的导数。

    • 定义在 $ MathJax-Element-302 $ 的有界闭集上的任意连续函数是 Borel可测的,因此可以用神经网络来近似。
    • 神经网络也可以近似这样的任意一个函数:从有限维离散空间映射到另一个有限维离散空间。
    • 虽然原始定理要求特殊的激活函数(该激活函数要求:当自变量的绝对值非常大时,函数饱和),但是后来证明通用近似定理也适用于更广泛的激活函数,其中包括常用的修正线性单元。
  2. 通用近似定理表明:无论试图学习什么样的函数,一个很大的深度前馈网络一定能够表示这个函数。

    实际上不能保证训练算法能够学得这个函数,学习可能因为两个不同的原因而失败:

    • 用于训练的优化算法可能找不到合适的参数值来逼近该函数,即:优化算法缩小了模型的有效容量,使得该函数不在有效的解空间内。
    • 训练算法可能由于过拟合而选择了错误的函数。
  3. 通用近似定理说明了存在一个足够大的网络能够以任意精度逼近任意函数,但是定理并没有说这个网络有多大。最坏的情况下可能需要指数级的隐单元。

    • 具有单隐层的深度前馈网络足以表示任何函数,但是隐层可能过于庞大以至于无法正确地学习和泛化。

      使用更深的深度前馈网络可以减少所需的单元的数量,并且减少泛化误差。

    • 很多情况下,浅层模型所需的隐单元的数量是输入向量的维数 $ MathJax-Element-304 $ 的指数级。

  4. 修正线性网络(激活函数都是relu 函数)描述的线性区域的数量为输入向量维数 $ MathJax-Element-304 $ 的指数级,也是网络深度 $ MathJax-Element-305 $ 的指数级。

5.2 网络结构

  1. 任何时候当选择一个特定的机器学习算法时,隐含地给定了一个先验知识:算法应该学得什么样的函数。

    选择深度模型则给定了一个先验知识:待学的函数应该是几个更加简单的函数的组合。这意味着:待学习的问题包含一组潜在的因子,这些因子可以根据更简单的潜在因子描述。

  2. 试验表明:更深的网络泛化性能更好,而仅仅增加参数的数量对于泛化性能几乎没有不起作用。

    • 虽然一个2层网络在数学理论上能完美近似所有连续函数,但实际操作中效果相对较差。

      就实践经验而言,深度网络效果比单层效果好。

    • 不要因为担心出现过拟合而使用小网络,而要尽可能使用大网络,然后使用正则化技术来控制过拟合。

    下图依次表示:不同网络层数的网络的泛化性能(测试集的准确率)、不同参数数量和网络层数的网络的泛化性能。

  3. 前面介绍的前馈神经网络都是简单的以层为单位的链式结构,主要考虑网络的深度和每层的宽度。实践中的神经网络具有相当的多样性。

    • 卷积神经网络是另一种特殊的结构。

    • 有时候,层不需要位于链中。

      有的神经网络构(如ResNet )建了一条主链,然后又添加了额外的结构。如从层 $ MathJax-Element-306 $ 连接到层 $ MathJax-Element-307 $ ,这使得梯度更容易地从输出层流向输入端。

  4. 除了深度与每一层的宽度之外,结构设计考虑的另一个因素是:如何将层与层之间连接起来。

    • 默认的神经网络使用矩阵 $ MathJax-Element-308 $ 给出的线性变换来描述层之间的连接。此时对于本层的每一个单元,其输入为上一层的所有输出。
    • 某些特殊的网络使用更少的连接,上一层的输出只是连接到本层的部分单元。这种策略减少了参数的数量,但是依赖于具体问题。
    • 很难对于通用的神经网络结构给出有效的建议。通常会给出一些特殊的结构,可以在不同的领域工作良好。如: CNN 在图像识别领域工作很好。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文