深度网络现代实践 - 深度前馈网络之结构设计篇

news2024/12/21 17:10:38

序言

深度网络结构设计作为人工智能领域的基石,正引领着技术创新的浪潮。通过模拟人脑神经元间的复杂连接,深度神经网络展现了卓越的特征学习与模式识别能力。随着大数据与计算能力的提升,设计高效、精准且泛化能力强的深度网络结构成为研究热点。

结构设计

  • 结构(architecture)
    • 神经网络设计的另一个关键点是确定它的结构。结构(architecture)一词是指网络的整体结构:它应该具有多个单元,以及这些单元应该如何连接。
  • 结构描述
    • 大多数神经网络被组织成称为层的单元组。大多数神经网路结构将这些层布置成链式结构,其中每一层都是前一层的函数。
    • 在这种结构中,第一层由下式给出: h ( 1 ) = g ( 1 ) ( W ( 1 ) ⊤ x + b ( 1 ) ) \boldsymbol{h}^{(1)}=g^{(1)}(\boldsymbol{W}^{(1)\top}\boldsymbol{x}+\boldsymbol{b}^{(1)}) h(1)=g(1)(W(1)x+b(1))
    • 第二层由: h ( 2 ) = g ( 2 ) ( W ( 2 ) ⊤ h ( 1 ) + b ( 2 ) ) \boldsymbol{h}^{(2)}=g^{(2)}(\boldsymbol{W}^{(2)\top}\boldsymbol{h}^{(1)}+\boldsymbol{b}^{(2)}) h(2)=g(2)(W(2)h(1)+b(2)),给出,以此类推。
    • 在这些链式结构中,主要的结构考虑是选择网络的深度和每一层的宽度。
      • 我们将会看到,即使只有一个隐藏层的网络也足够适应训练集。
      • 更深层的网络通常能够对每一层使用更少的单元数和更少的参数,并且经常推广到测试集,但是通常也更难以优化。
      • 对于一个具体的任务,理想的网络结构必须通过实验,观测在验证集上的错误来找到。

通用近似性质和深度

  • 线性模型,通过矩阵乘法将特征映射到输出,顾名思义,仅能表示线性函数。它具有易于训练的优点,因为当使用线性模型时,许多损失函数会导出凸优化问题。不幸的是,我们经常想要学习非线性函数。

  • 通用近似定理(universal approximation theorem)

    • 咋一看,我们可能认为学习非线性函数需要为我们想要学习的那种非线性专门设计一类模型族。幸运的是,具有隐藏层的前馈网络提供了一种通用近似框架。

    • 具体来说,通用近似定理(universal approximation theorem)表明,一个前馈神经网络如果具有线性输出层和至少一层具有任何一种“挤压”性质的激活函数(例如logistic sigmoid激活函数)的隐藏层,只要给与网络足够数量的隐藏单元,它可以以任意的精度来近似任何从一个有限维空间到另一个有限维空间的Borel可测函数

    • 前馈网络的导数也可以任意好地来近似函数的导数。对于我们想要实现的目标,只需要知道定义在 R n \mathbb{R}^n Rn的有界闭集上的任意连续函数是Borel可测的,因此可以用神经网络来近似。

    • 神经网络也可以近似从任何有限维离散空间映射到另一个的任意函数。虽然原始定理最初以具有特殊激活函数的单元的形式来描述,这个激活函数当变量取绝对值非常大的正值和负值时都会饱和,通用近似定理也已经被证明对于更广泛类别的激活函数也是适用的,其中就包括现在常用的整流线性单元。

    • 通用近似定理意味着无论我们试图学习什么函数,我们知道一个大的MLP 一定能够表示这个函数。然而,我们不能保证训练算法能够学得这个函数。即使 MLP能够表示该函数,学习也可能因两个不同的原因而失败。首先,用于训练的优化算法可能找不到用于期望函数的参数值。其次,训练算法可能由于过拟合选择了错误的函数。“没有免费的午餐” 定理说明了没有普遍优越的机器学习算法。 前馈网络提供了表示函数的通用系统,在这种意义上,给定一个函数,存在一个前馈网络能够近似该函数。不存在通用的过程既能够验证训练集上的特殊样例,又能够选择一个函数来扩展到训练集上没有的点。

    • 通用近似定理说明了存在一个足够大的网络能欧达到我们所希望的任意精度,但是定理并没有说这个网络有多大。Barron (1993) 提供了单层网络近似一大类函数所需大小的一些界。不幸的是,在最坏情况下,可能需要指数数量的隐藏单元(可能一个隐藏单元对应着一个需要区分的输入配置)。这在二进制情况下很容易看到:向量 v ∈ { 0 , 1 } n \boldsymbol{v}\in\{0,1\}^n v{0,1}n上的可能二进制的数量是 2 2 n 2^{2^n} 22n并且选择一个这样的函数需要 2 n 2^{n} 2n位,这通常需要 O ( 2 n ) \Omicron(2^n) O(2n)的自由度。

    • 总之,具有单层的前馈网络足以表示任何函数,但是网络层可能不可实现得大并且可能无法正确地学习和泛化。在很多情况下,使用更深的模型能够减少表示期望函数所需的单元的数量,并且可以减少泛化误差。

    • 存在一些函数族能够在网络的深度大于某个值 d d d时被高效地近似,而当深度被限制到小于或等于 d d d时需要一个远远大于之前的模型。在很多情况下,浅层模型所需的隐藏单元的数量是 n n n的指数级。这个结果最初被证明是在那些不与连续可微的神经网络类似的机器学习模型中出现,但现在已经扩展到了这些模型。第一个结果是关于逻辑门电路的 (Håstad, 1986)。后来的工作将这些结果扩展到了具有非负权重的线性阈值单元 (Håstad and Goldmann, 1991; Hajnal et al., 1993),然后扩展到了具有连续值激活的网络 (Maass, 1992; Maass et al., 1994)。

    • 许多现代神经网络使用整流线性单元。 Leshno et al. (1993) 证明带有一大类非多项式激活函数族的浅层网络,包括整流线性单元,具有通用的近似性质,但是这些结果并没有强调深度或效率的问题——它们仅指出足够宽的整流网络能够表示任意函数。 Montufar et al.(2014) 指出一些用深度整流网络表示的函数可能需要浅层网络(一个隐藏层)指数级的隐藏单元才能表示。更确切的说,他们说明分段线性网络(可以通过整流非线性或maxout 单元获得)可以表示区域的数量是网络深度的指数级的函数。图例1解释了带有绝对值整流的网络是如何创建函数的镜像图像的,这些函数在某些隐藏单元的顶部计算,作用于隐藏单元的输入。每个隐藏单元指定在哪里折叠输入空间,来创造镜像响应(在绝对值非线性的两侧)。通过组合这些折叠操作,我们获得指数级的分段线性区域,他们可以概括所有种类的规则模式(例如,重复)。
      图例1:关于更深的整流网络具有指数优势的一个直观的几何解释,来自来自Montufar et al. (2014)
      在这里插入图片描述

    • 图例1说明

      • 左边:
        • 绝对值整流单元对其输入中的每对镜像点有相同的输出。
        • 镜像的对称轴由单元的权重和偏置定义的超平面给出。
        • 在该单元顶部计算的函数(绿色决策面)将是横跨该对称轴的更简单模式的一个镜像。
      • 中间:
        • 该函数可以通过折叠对称轴周围的空间来得到。
      • 右边:
        • 另一个重复模式可以在第一个的顶部折叠(由另一个下游单元)以获得另外的对称性(现在重复四次,使用了两个隐藏层)。图重置得到了Montufar et al. (2014) 的许可。
    • 更确切的说, Montufar et al. (2014) 的主要定理指出,具有 d d d个输入,深度为 l l l,每个隐藏层有 n n n个单元的深度整流网络可以描述的线性区域的数量是: O ( ( n d ) d ( l − 1 ) n d ) \Omicron\left((\begin{matrix}n\\d\end{matrix})^{d(l-1)} n^d\right) O((nd)d(l1)nd)

    • 这意味着,是深度 l l l的指数级。在每个单元具有 k k k个过滤器的maxout网络中,线性区域的数量是: O ( k ( l − 1 ) + d ) \Omicron(k^{(l-1)+d}) O(k(l1)+d)

    • 当然,我们不能保证在机器学习(特别是AI)的应用中我们想要学得的函数类型享有这样的属性。

    • 我们还可能出于统计原因来选择深度模型。任何时候,当我们选择一个特定的机器学习算法时,我们隐含地陈述了一些先验,这些先验是关于算法应该学得什么样的函数的。选择深度模型默许了一个非常普遍的信念,那就是我们想要学得的函数应该涉及几个更加简单的函数的组合。这可以从表示学习的观点来解释,我们相信学习的问题包含发现一组潜在的变化因素,它们可以根据其他更简单的潜在的变化因素来描述。或者,我们可以将深度结构的使用解释为另一种信念,那就是我们想要学得的函数是包含多个步骤的计算机程序,其中每个步骤使用前一步骤的输出。这些中间输出不一定是变化的因素,而是可以类似于网络用来组织其内部处理的计数器或指针。根据经验,更深的模型似乎确实会更适用于广泛的任务。

    • 使用深层结构在模型学习的函数空间上表示了一个有用的先验,如下图例所示:
      图例2:深度的影响
      在这里插入图片描述

    图例2说明:实验结果表明,当从地址照片转录多位数字时,更深层的网络能够更好地泛化。数据来自Goodfellow et al. (2014d)。测试集上的准确率随着深度的增加而不断增加。图例3给出了一个对照实验,它说明了对模型尺寸其他方面的增加并不能产生相同的效果。
    图例3:参数数量的影响
    在这里插入图片描述

    图例3说明:更深的模型往往表现更好。这不仅仅是因为模型更大。 Goodfellow et al.
    (2014d) 的这项实验表明,增加卷积网络层中参数的数量,但是不增加它们的深度,在提升测试集性能方面几乎没有效果,如此图所示。图例标明了用于画出每条曲线的网络深度,以及曲线表示的是卷积层还是全连接层的大小变化。我们可以观察到,在这种情况下,浅层模型在参数数量达到2000万时就过拟合,而深层模型在参数数量超过6000万时仍然表现良好。这表明,使用深层模型表达出了对模型可以学习的函数空间的有用偏好。具体来说,它表达了一种信念,即该函数应该由许多更简单的函数复合在一起而得到。这可能导致学习由更简单的表示所组成的表示(例如,由边所定义的角)或者学习具有顺序依赖步骤的程序(例如,首先定位一组对象,然后分割它们,之后识别它们)。

    • 一般的,层不需要连接在链中,尽管这是最常见的做法。许多结构构建了一个主链,但随后又添加了额外的结构属性,例如从层 i i i到层 i + 2 i + 2 i+2或者更高层的跳动连接。这些跳动连接使得梯度更容易从输出层流向更接近输入的层。
    • 结构设计考虑的另外一个关键点是如何将层与层之间连接起来。默认的神经网络层采用矩阵 W W W描述的线性变换,每个输入单元连接到每个输出单元。在之后章节中的许多专用网络具有较少的连接,使得输入层中的每个单元仅连接到输出层单元的一个小子集。这些用于减少连接数量的策略减少了参数的数量以及用于评估网络的计算量,但通常高度依赖于问题。例如,后续篇章:卷积神经网络描述的卷积神经网络使用对于计算机视觉问题非常有效的稀疏连接的专用模式。本篇章中,很难对通用神经网络的结构给出更多具体的建议。随后的章节研发了一些特殊的结构策略,可以在不同的领域工作良好。

总结

综上所述,深度网络结构设计作为人工智能领域的核心课题,其发展与创新是推动技术进步的关键。从经典的网络模型到复杂多变的网络架构,每一次突破都极大地拓宽了深度学习的应用范围与性能边界。未来,随着算法优化、硬件加速及跨学科融合的加速推进,我们有望见证更加智能化、高效化、可解释性强的深度网络结构的诞生,进一步推动人工智能技术的普及与应用,为人类社会带来前所未有的变革与福祉。因此,持续探索与创新深度网络结构设计,将是每一位科研工作者与工程师不懈追求的目标。

往期内容回顾

应用数学与机器学习基础 - 容量、过拟合和欠拟合篇:没有免费的午餐

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1888079.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux基础 - LNMP 架构部署动态网站环境

目录 零. 简介 一. 部署 二. 安装 Nginx 三. 安装MySQL 四. 安装PHP 五. 配置网站目录 六. 测试环境 零. 简介 LNMP 是指 Linux Nginx MySQL PHP 这一组合架构,用于部署动态网站环境。 Linux 作为操作系统,提供了稳定、安全和高效的基础平台。…

Linux基础 - MariaDB 数据库管理系统

目录 零. 简介 一. 安装 二. 基本使用 1. 设置root密码 2. 创建库 3. 创建表 4.添加数据 5. 查看数据 三. 管理表单及数据 四. 数据库的备份及恢复 零. 简介 MariaDB 是一种流行的开源数据库管理系统,它是 MySQL 的一个分支。 MariaDB 保留了与 MySQL 的…

学习笔记——动态路由——OSPF(工作原理)

九、OSPF协议的工作原理 1、原理概要 (1)相邻路由器之间周期性发送HELLO报文,以便建立和维护邻居关系。 (2)建立邻居关系后,给邻居路由器发送数据库描述报文(DD),也就是将自己链路状态数据库中的所有链路状态项目的摘要信息发送给邻居路由器…

提高页面性能:懒加载和预加载都是啥原理。

懒加载(Lazy Loading)和预加载(Preloading)是在 Web 开发中常用的两种优化技术,用于提高页面性能和用户体验。那他们之间有什么不同,又有哪些应用场景呢,本文给小伙伴们分享下。 一、懒加载 懒…

【Python】已解决:ERROR: No matching distribution found for JPype1

文章目录 一、分析问题背景二、可能出错的原因三、错误代码示例四、正确代码示例五、注意事项 已解决:ERROR: No matching distribution found for JPype1 一、分析问题背景 在安装Python的第三方库时,有时会遇到“ERROR: No matching distribution fo…

three.js地理坐标系有哪些,和屏幕坐标系的转换。

坐标系很好理解,就是点线面体的位置,一个点是一个坐标,一条线段2个坐标,一个矩形四个坐标,一个立方体8个坐标,three.js面对的是三维空间,屏幕则是二维的,这就面临着转换问题&#xf…

文章解读与仿真程序复现思路——电力系统自动化EI\CSCD\北大核心《面向电网调峰的电动汽车聚合商多层级实时控制策略》

本专栏栏目提供文章与程序复现思路,具体已有的论文与论文源程序可翻阅本博主免费的专栏栏目《论文与完整程序》 论文与完整源程序_电网论文源程序的博客-CSDN博客https://blog.csdn.net/liang674027206/category_12531414.html 电网论文源程序-CSDN博客电网论文源…

从零开始使用 Docsify 搭建文档站点

引言 在当今的技术环境中,拥有一份易于访问和美观的文档是至关重要的。Docsify 是一个非常适合快速搭建文档站点的工具,它简单易用,且不需要生成静态文件。本文将带你一步步从零开始使用 Docsify 搭建一个文档站点。 1. 安装 Node.js 和 np…

【面试干货】值传递与引用传递:理解Java中的参数传递机制

【面试干货】值传递与引用传递:理解Java中的参数传递机制 1、值传递(Call by Value)2、引用传递(Call by Reference)3、总结 💖The Begin💖点点关注,收藏不迷路💖 值传递…

O2OA(翱途)开发平台 V9.1 即将发布,更安全、更高效、更开放

尊敬的O2OA(翱途)平台合作伙伴、用户以及亲爱的开发小伙伴们,O2OA(翱途)平台 V9.1将于7月3日正式发布,届时欢迎大家到O2OA官网部署下载及体验最新版本。新版本我们在如下方面做了更大的努力: 1.扩展数据库兼容性和功能范围:在O2OA…

前端技术(说明篇)

Introduction ##编写内容:1.前端概念梳理 2.前端技术种类 3.前端学习方式 ##编写人:贾雯爽 ##最后更新时间:2024/07/01 Overview 最近在广州粤嵌进行实习,项目名称是”基于Node实现多人聊天室“,主要内容是对前端界…

libigl对matlab链接不成功问题的解决办法

libigl使用matlab时出现以下问题&#xff1a; 即使在头文件中添加了 #include <igl/matlab/matlabinterface.h>在cmakelists.txt中添加了 target_link_libraries(${PROJECT_NAME} "C:\\F\\matlab_install\\extern\\lib\\win64\\microsoft\\libeng.lib") t…

bash条件判断基础adsawq1`1nn

判断的作用 判断后续操作的提前条件是否满足如果满足执行一种命令不满足则执行另一种指令 条件测试类型&#xff1a; 整型测试字符测试文字测试 整数测试&#xff1a;比较两个整数谁大谁小&#xff0c;是否相等&#xff1b; 二元测试&#xff1a; num1 操作符 num2 -eq: 等于…

Spring boot 更改启动LOGO

在resources目录下创建banner.txt文件&#xff0c;然后编辑对应的图案即可 注释工具 Spring Boot Version: ${spring-boot.version},-.___,---.__ /|\ __,---,___,- \ -.____,- | -.____,- // -., | ~\ /~ | …

kafka 生产者 API 实践总结

文章目录 前言创建 kafka 生产者同步与异步发送消息同步发送异步发送 生产者参数配置client.idacks消息传递时间 序列化器在Kafka中使用Avro记录 分区标头拦截器配额和节流 前言 kafka 对外提供的 API 主要有两类&#xff1a;生产者 API 和 消费者 API&#xff0c;本文将从Kaf…

推荐 2 个本周 火火火火 的开源项目

01 微软新手课程&#xff1a;生成式AI入门 在人工智能的浪潮中&#xff0c;生成式AI&#xff08;Generative AI&#xff09;以其创造力和应用潜力成为焦点。微软推出的 “generative-ai-for-beginners” 课程&#xff0c;为初学者提供了一个全面了解和学习生成式AI的平台。 1️…

SpringBoot怎么单独关闭某个类打印出来的日志?

application.yml文件增加以下内容&#xff1a; logging:level:org.springframework.amgp.rabbit: OFF 配置logging:level是配置的什么&#xff1f; 在application.yml文件中配置logging.level是用来设置日志级别的。这是Spring Boot应用中的一个常用配置&#xff0c;它允许您…

煤矿安全大模型:微调internlm2模型实现针对煤矿事故和煤矿安全知识的智能问答

煤矿安全大模型————矿途智护者 使用煤矿历史事故案例,事故处理报告、安全规程规章制度、技术文档、煤矿从业人员入职考试题库等数据,微调internlm2模型实现针对煤矿事故和煤矿安全知识的智能问答。 本项目简介: 近年来,国家对煤矿安全生产的重视程度不断提升。为了确…

SpringCloud基础篇

文章目录 创建新模块拷贝yml配置文件修改配置文件的信息修改pom.xml文件启动入口拷贝相关文件接口文档配置配置启动项注册中心原理Nacos注册中心创建nacos数据库存储数据部署nacos在docker容器中 服务注册引入依赖配置Nacos地址启动 服务发现(调用)引入依赖配置nacos地址发现并…