深度网络现代实践 - 深度前馈网络历史总结篇

序言

深度前馈网络(Deep Feedforward Networks),作为现代人工智能领域的基石之一,其发展历程充满了探索与挑战。自20世纪中叶以来,随着计算机技术的快速发展和计算能力的提升,神经网络的研究逐渐从简单的线性模型向复杂的非线性模型转变。深度前馈网络,作为这一转变的重要成果,以其强大的非线性逼近能力和逐层抽象的特征学习能力,在多个领域取得了突破性进展。这一发展历程,不仅见证了人工智能技术的飞速进步,也深刻改变了我们的生活和工作方式。

反向传播算法的历史总结

  • 前馈网络可以被视为一种高效的非线性函数逼近器,它以使用梯度下降来最小化函数近似误差为基础。从这个角度来看,现代前馈网络是一般函数近似任务的几个世纪进步的结晶。
  • 处于反向传播算法底层的链式法则是 17 世纪发明的 (Leibniz, 1676; L’Hôpital, 1696)。微积分和代数长期以来被用于求解优化问题的封闭形式,但梯度下降直到 19世纪才作为优化问题的一种迭代近似的求解方法被引入 (Cauchy, 1847)。
  • 从20世纪40年代开始,这些函数近似技术被用于导出诸如感知机的机器学习模型。然而,最早的模型都是基于线性模型。来自包括马文·明斯基(Marvin Minsky,“人工智能之父”和框架理论的创立者)的批评指出了线性模型族的几个缺陷,例如它无法学习 XOR \text{XOR} XOR函数,这导致了对整个神经网络方法的抵制。
  • 学习非线性函数需要多层感知机的发展和计算该模型梯度的方法。基于动态规划的链式法则的高效应用开始出现在20世纪60年代和70年代。
    • 主要用于控制领域 (Kelley, 1960; Bryson and Denham, 1961; Dreyfus, 1962; Bryson and Ho, 1969;Dreyfus, 1973),也用于灵敏度分析 (Linnainmaa, 1976)。
    • Werbos (1981) 提出应用这些技术来训练人工神经网络。
    • 这个想法以不同的方式被独立地重新发现后 (LeCun,1985; Parker, 1985; Rumelhart et al., 1986a),最终在实践中得以发展。
  • 并行分布式处理 (Parallel Distributed Processing) 一书在其中一章提供了第一次成功使用反向传播的一些实验的结果 (Rumelhart et al., 1986b),这对反向传播的普及做出了巨大的贡献,并且开启了一个研究多层神经网络非常活跃的时期。然而,该书作者提出的想法,特别是 Rumelhart 和 Hinton 提出的想法远远超过了反向传播。它们包括一些关键思想,关于可能通过计算实现认知和学习的几个核心方面,后来被冠以“联结主义”的名称,因为它强调了神经元之间的连接作为学习和记忆的轨迹的重要性。特别地,这些想法包括分布式表示的概念 (Hinton et al., 1986)。
  • 在反向传播的成功之后,神经网络研究获得了普及,并在20世纪90年代初达到高峰。随后,其他机器学习技术变得更受欢迎,直到2006年开始的现代深度学习复兴。
  • 现代前馈网络的核心思想自20世纪80年代以来没有发生重大变化。仍然使用相同的反向传播算法和相同的梯度下降方法。
  • 1986年至2015年神经网络性能的大部分改进可归因于两个因素
    • 首先,较大的数据集减少了统计泛化对神经网络的挑战的程度。
    • 第二,神经网络由于更强大的计算机和更好的软件基础设施已经变得更大。然而,少量算法上的变化也显著改善了神经网络的性能。
  • 其中一个算法上的变化是用损失函数的交叉熵族替代均方误差
    • 均方误差在20世纪80年代和90年代流行,但逐渐被交叉熵损失替代,并且最大似然原理的想法在统计学界和机器学习界之间广泛传播。
    • 使用交叉熵损失大大提高了具有 sigmoid \text{sigmoid} sigmoid softmax \text{softmax} softmax输出的模型的性能,而当使用均方误差损失时会存在饱和和学习缓慢的问题。
  • 另一个显著改善前馈网络性能的算法上的主要变化是使用分段线性隐藏单元来替代 sigmoid \text{sigmoid} sigmoid隐藏单元,例如用整流线性单元
    • 使用 max ⁡ { 0 , z } \max\{0,z\} max{0,z}函数的整流在早期神经网络中已经被引入,并且至少可以追溯到认知机(Cognitron)和神经认知机(Neocognitron)(Fukushima, 1975, 1980)。这些早期的模型没有使用整流线性单元,而是将整流用于非线性函数。
    • 尽管整流在早期很普及,在20世纪 80年代,整流很大程度上被 sigmoid \text{sigmoid} sigmoid所取代,也许是因为当神经网络非常小时, sigmoid \text{sigmoid} sigmoid表现更好。
    • 到21世纪初,由于有些迷信的观念,相信必须避免具有不可导点的激活函数,所以避免了整流线性单元。
    • 这在2009年开始发生改变。Jarrett et al. (2009b)观察到,在神经网络结构设计的几个不同因素中“使用整流非线性是提高识别系统性能的最重要的唯一因素”。
    • 对于小的数据集,Jarrett et al. (2009b) 观察到,使用整流非线性甚至比学习隐藏层的权重值更加重要。随机的权重足以通过整流网络传播有用的信息,允许在顶部的分类器层学习如何将不同的特征向量映射到类标识。
    • 当有更多数据可用时,学习开始提取足够的有用知识来超越随机选择参数的性能。Glorot et al. (2011a) 说明,在深度整流网络中的学习比在激活函数具有曲率或两侧饱和的深度网络中的学习更容易。
  • 整流线性单元还具有历史意义,因为它们表明神经科学继续对深度学习算法的发展产生影响。 Glorot et al. (2011a) 从生物学考虑整流线性单元的导出。
  • 半整流非线性旨在描述生物神经元的这些性质:
    • (1) 对于某些输入,生物神经元是完全不活跃的。
    • (2) 对于某些输入,生物神经元的输出和它的输入成比例。
    • (3) 大多数时间,生物神经元是在它们不活跃的状态下进行操作(即它们应该具有稀疏激活 (sparse activation))。
  • 当2006年深度学习开始现代复兴时,前馈网络仍然有不良的声誉。
    • 从2006年至2012年,人们普遍认为,前馈网络不会表现良好,除非它们得到其他模型的辅助,例如概率模型。
    • 现在已经知道,具备适当的资源和工程实践,前馈网络表现非常好。今天,前馈网络中基于梯度的学习被用作发展概率模型的工具,例如第二十章中描述的变分自编码器和生成式对抗网络。并不是被视为必须由其他技术支持的不可靠技术,前馈网络中基于梯度的学习自2012年以来一直被视为一种强大的技术,可应用于许多其他机器学习任务。
    • 在2006年,业内使用无监督学习来支持监督学习,现在更讽刺的是,更常见的是使用监督学习来支持无监督学习。
  • 前馈网络还有许多未实现的潜力。未来,我们期望它们用于更多的任务,优化算法和模型设计的进步将进一步提高它们的性能。本章主要描述了神经网络族模型。在接下来的篇章中,我们将讨论如何使用这些模型——如何对它们进行正则化和训练。

总结

回顾深度前馈网络的历史,我们不难发现,其每一步发展都凝聚了无数科研人员的智慧和汗水。从最初的感知机模型,到多层感知机的出现,再到反向传播算法的普及和深度学习技术的兴起,深度前馈网络逐渐从理论走向实践,从实验室走向市场。如今,深度前馈网络已经成为图像识别、自然语言处理、推荐系统等多个领域不可或缺的工具。展望未来,随着大数据和计算技术的进一步发展,我们有理由相信,深度前馈网络将在更多领域发挥重要作用,推动人工智能技术的不断前进。

往期重要内容回顾

深度网络现代实践 - 深度前馈网络介绍篇
深度网络现代实践 - 前馈网络入门之学习XOR实例篇
深度网络现代实践 - 深度前馈网络之基于梯度的学习篇
深度网络现代实践 - 深度前馈网络之隐藏单元篇
深度网络现代实践 - 深度前馈网络之结构设计篇
深度网络现代实践 - 深度前馈网络之反向传播和其他的微分算法篇
深度网络现代实践 - 深度前馈网络之反向传播和其他的微分算法篇-续

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

深入理解C# log4Net日志框架:功能、使用方法与性能优势

文章目录 1、log4Net的主要特性2、log4Net框架详解配置日志级别 3、log4Net的使用示例4、性能优化与对比5、总结与展望 在软件开发过程中,日志记录是一个不可或缺的功能。它可以帮助开发者追踪错误、监控应用程序性能,以及进行调试。在C#生态系统中&…

C#运算符重载

1、运算符重载 运算符重载是指重定义C#内置的运算符。 程序员也可以使用用户自定义类型的运算符。重载运算符是具有特殊名称的函数,是通过关键字 operator 后跟运算符的符号来定义的。与其他函数一样,重载运算符有返回类型和参数列表。 2、在Box类中定义…

C++ volatile 关键字

C volatile (只有release下才会生效) 1、告诉编译器volatile修饰的变量不要进行指令顺序的优化,以保证代码编写者的真实意图; int a 0;int b 10;int c 100;int* p &a;p &b;p &c;如果不加volatile修饰 p , 编译…

团队编程:提升代码质量与知识共享的利器

目录 前言1. 什么是团队编程?1.1 团队编程的起源1.2 团队编程的工作流程 2. 团队编程的优势2.1 提高代码质量2.2 促进知识共享2.3 增强团队协作2.4 提高开发效率 3. 团队编程的挑战3.1 开发成本较高3.2 需要良好的团队协作3.3 个人风格和习惯的差异3.4 长时间的集中…

AI时代算法面试:揭秘高频算法问题与解答策略

三种决策树算法的特点和区别 ID3算法:基本的决策树算法,适用于简单的分类问题C4.5算法:改进了ID3算法,适用于更复杂的分类问题,可以处理连续型数据和缺失值CART算法:更加通用的决策树算法,适用于…

【机器学习】机器学习与自然语言处理的融合应用与性能优化新探索

引言 自然语言处理(NLP)是计算机科学中的一个重要领域,旨在通过计算机对人类语言进行理解、生成和分析。随着深度学习和大数据技术的发展,机器学习在自然语言处理中的应用越来越广泛,从文本分类、情感分析到机器翻译和…

VBA常用的字符串内置函数

前言 在VBA程序中,常用的内置函数可以按照功能分为字符串函数、数字函数、转换函数等等,本节主要会介绍常用的字符串的内置函数,包括Len()、Left()、Mid()、Right()、Split()、String()、StrConV()等。 本节的练习数据表以下表为例&#xff…

前后端的导入、导出、模板下载等写法

导入,导出、模板下载等的前后端写法 文章目录 导入,导出、模板下载等的前后端写法一、导入实现1.1 后端的导入1.2 前端的导入 二、基础的模板下载2.1 后端的模板下载-若依基础版本2.2 前端的模板下载2.3 后端的模板下载 - 基于资源文件读取2.4 excel制作…

使用maven搭建一个SpingBoot项目

1.首先创建一个maven项目 注意选择合适的jdk版本 2.添加依赖 2.在pom.xml中至少添加依赖 spring-boot-starter-web 依赖&#xff0c;目的是引入Tomcat&#xff0c;以及SpringMVC等&#xff0c;使项目具有web功能。 <!-- 引入 包含tomcat&#xff0c;SpringMVC&#xff0c…

二维Gamma分布的激光点云去噪

目录 1、Gamma 分布简介2、实现步骤 1、Gamma 分布简介 Gamma 分布在合成孔径雷达( Synthetic Aperture &#xff32;adar&#xff0c;SA&#xff32;) 图像分割中具有广泛应用&#xff0c;较好的解决了SA&#xff32; 图像中相干斑噪声对图像分割的影响。采用二维Gamma 分布对…

配置基于不同端口的虚拟主机

更改配置文件&#xff0c;添加三个不同端口的虚拟主机 <directory /www> allowoverride none require all granted </directory><virtualhost 192.168.209.136:80> documentroot /www servername 192.168.209.136 </virtualhost><virtualhost 192.…

详解yolov5的网络结构

转载自文章 网络结构图&#xff08;简易版和详细版&#xff09; 此图是博主的老师&#xff0c;杜老师的图 网络框架介绍 前言&#xff1a; YOLOv5是一种基于轻量级卷积神经网络&#xff08;CNN&#xff09;的目标检测算法&#xff0c;整体可以分为三个部分&#xff0c; ba…

Floyd判圈算法——环形链表(C++)

Floyd判圈算法(Floyd Cycle Detection Algorithm)&#xff0c;又称龟兔赛跑算法(Tortoise and Hare Algorithm)&#xff0c;是一个可以在有限状态机、迭代函数或者链表上判断是否存在环&#xff0c;求出该环的起点与长度的算法。 …

实验四 图像增强—灰度变换之直方图变换

一&#xff0e;实验目的 1&#xff0e;掌握灰度直方图的概念及其计算方法&#xff1b; 2&#xff0e;熟练掌握直方图均衡化计算过程&#xff1b;了解直方图规定化的计算过程&#xff1b; 3&#xff0e;了解色彩直方图的概念和计算方法 二&#xff0e;实验内容&#xff1a; …

【雷丰阳-谷粒商城 】【分布式高级篇-微服务架构篇】【19】认证服务03—分布式下Session共享问题

持续学习&持续更新中… 守破离 【雷丰阳-谷粒商城 】【分布式高级篇-微服务架构篇】【19】分布式下Session共享问题 session原理分布式下session共享问题Session共享问题解决—session复制Session共享问题解决—客户端存储Session共享问题解决—hash一致性Session共享问题…

嵌入式linux面试1

1. linux 1.1. Window系统和Linux系统的区别 linux区分大小写windows在dos&#xff08;磁盘操作系统&#xff09;界面命令下不区分大小写&#xff1b; 1.2. 文件格式区分 windows用扩展名区分文件&#xff1b;如.exe代表执行文件&#xff0c;.txt代表文本文件&#xff0c;.…

Seatunnel本地模式快速测验

前言 SeaTunnel&#xff08;先前称为WaterDrop&#xff09;是一个分布式、高性能、易于扩展的数据集成平台&#xff0c;旨在实现海量数据的同步和转换。它支持多种数据处理引擎&#xff0c;包括Apache Spark和Apache Flink&#xff0c;并在某个版本中引入了自主研发的Zeta引擎…

【c++】通过写一个C++函数来模拟跨境洗钱和系统警告

效果图&#xff1a; 源码&#xff1a; #include <iostream> #include <cstdlib> #include <ctime> #include <iomanip> #include <chrono> #include <thread> // 引入线程头文件#ifdef _WIN32 // 确保只在Windows上包含Windows.h #inclu…

zigbee笔记:六、看门狗定时器(Watch Dog)

一、看门狗基础 1、看门狗功能&#xff1a; 由于单片机的工作常常会受到来自外界电磁场的干扰&#xff0c;造成各种寄存器和内存的数据混乱&#xff0c;会导致程序指针错误等&#xff0c;程序运行可能会陷入死循环。程序的正常运行被打断&#xff0c;由单片机控制的系统无法继…

芯片的PPA-笔记

写在前面&#xff1a;这个仅记录自己对芯片PPA的一些思考&#xff0c;不一定正确&#xff0c;还请各位网友思辨的看待&#xff0c;欢迎大家谈谈自己的想法。 1 此次笔记的起因 记录的原因&#xff1a;自己在整理这段时间的功耗总结&#xff0c;又看到工艺对功耗的影响&#x…