什么是神经网络?

您需要知道的三件事

神经网络是一个具有相连节点层的计算模型,其分层结构与大脑中的神经元网络结构相似。神经网络可通过数据进行学习,因此,可训练其识别模式、对数据分类和预测未来事件。

神经网络将您的输入细分为多个抽象层。比如,可通过大量示例训练其识别模式为语音还是图像,就像人类大脑的行为一样。神经网络的行为由其各个元素的连接方式以及这些连接的强度或权重确定。在训练期间,系统会根据指定的学习规则自动调整相关权重,直到神经网络正常执行所需任务为止。

为什么说神经网络很重要?

神经网络特别适合执行模式识别,用以识别语音、视觉和控制系统中的对象或信号并对其分类。它们还可以用于执行时序预测和建模。

下面只是神经网络的几个使用方式示例:

  • 电力公司准确预测其电网上的负载,以确保可靠性,并优化他们运行的发电机的效率。
  • ATM 通过读取支票上的账号和存款金额的可靠方式接受银行存款。
  • 病理学家依靠癌症检测应用的指导,根据细胞大小的均匀度、肿块密度、有丝分裂及其他因素将肿瘤分类为良性或恶性。

深度学习

针对两层或三层连接的神经元层运作的神经网络称为浅层神经网络深度学习网络可以有许多层,甚至数百层。这两种都是直接通过输入数据学习的机器学习技术。

深度学习正在获得大量关注,这是有充分理由的。深度学习正在实现以前不可能实现的成果。

深度学习特别适合复杂鉴别应用场景,比如人脸辨识、文本翻译和语音识别。另外,深度学习也是高级驾驶辅助系统和任务(包括包括车道分类和交通标志识别)中使用的关键技术。

神经网络如何工作?

受生物神经系统的启发,神经网络通过简单元素操作的并行使用,将多个处理层结合在一起。它由一个输入层、一个或多个隐藏层和一个输出层组成。各层通过节点或神经元相互连接,每一层使用前一层的输出作为其输入。

典型的神经网络架构。

神经网络使用的技术

用于设计神经网络应用场景的常见机器学习技术包括监督式学习和无监督学习、分类、回归、模式识别和聚类。

监督式学习

训练监督式神经网络生成响应样本输入的所需输出,使其专门适用于动态系统建模和控制、噪声数据分类和未来事件预测。Deep Learning Toolbox™ 包括四种监督式网络:前馈网络、径向基网络、动态网络和学习向量量化网络。

分类

分类是一种监督式机器学习,在该学习中,算法将“学习”从带标签的数据示例中对新的观察结果进行分类。

回归

回归模型描述一个响应(输出)变量与一个或多个预测元(输入)变量之间的关系。

模式识别

模式识别是计算机视觉、雷达处理、语音识别和文本分类方面的神经网络应用的一个重要组成部分。它的工作原理是,使用监督式分类或无监督分类基于关键功能将输入数据分类为对象或类。

例如,在计算机视觉方面,监督式模式识别技术可用于光学字符识别 (OCR)、人脸检测、人脸识别、对象检测和对象分类。在图像处理和计算机视觉方面,无监督模式识别技术用于对象检测和图像分割。

无监督学习

通过让神经网络持续根据新输入调整自身来训练无监督神经网络。无监督神经网络可根据包含未标记响应的输入数据的数据集进行推断。您可以使用它们来发现数据中的自然分配、类别和类别关系。

Deep Learning Toolbox 包括两种无监督的网络:竞争的层和自组织映射。

聚类

聚类是一个无监督学习方法,在该学习方法中,神经网络可用于分析探索性数据以发现数据中隐藏的模式或分组。此过程涉及按相似性对数据分组。聚类分析的应用包括基因序列分析、市场调查和对象识别。

使用 MATLAB 开发浅层神经网络

借助管理大型数据集所用的工具和函数,MATLAB® 提供用于机器学习、神经网络、深度学习、计算机视觉和自动驾驶的专业化工具箱。

只需几行代码,MATLAB 就可以让您开发神经网络,而不需要成为专家。快速入门,创建和可视化模型,并将模型部署到服务器和嵌入式设备。

使用 MATLAB,您可以将结果整合到现有的应用程序中。MATLAB 可在企业系统、集群、云和嵌入式设备上自动部署您的神经网络。

用于设计神经网络的典型工作流程

每种神经网络应用场景均独一无二,但是开发网络通常遵循下列步骤:

  1. 访问和准备数据
  2. 创建神经网络
  3. 配置网络的输入和输出
  4. 调整网络参数(权重和偏差)以优化性能
  5. 训练网络
  6. 验证网络的结果
  7. 将网络集成到生产系统中

浅层网络的分类和聚类

MATLAB 和 Deep Learning Toolbox 可提供用于创建、训练和仿真浅层神经网络的命令行功能和应用。通过这些应用,您可以轻松开发神经网络以执行分类、回归(包括时序回归)及聚类等任务。在这些工具中创建网络后,您可以自动生成 MATLAB 代码以获取您的工作并自动执行任务。

网络的预处理、后处理和改进

预处理网络输入和目标可提升浅层神经网络训练的效率。预处理便于您详细分析网络性能。MATLAB 和 Simulink® 提供的工具可助您完成下列任务:

  • 使用主成分分析降低输入向量的维度
  • 执行网络响应和相应目标间的回归分析
  • 扩展输入和目标以便它们位于范围 [-1,1] 内
  • 将培训数据集的平均和标准方差标准化
  • 在创建网络时使用自动数据预处理和数据分段

提升网络的泛化能力可防止过拟合,这是神经网络设计的一个常见问题。在网络已记住训练集但尚未学会对新的输入进行泛化时会发生过拟合。过拟合会针对训练集产生一个相对小的误差,但在将新数据提供给网络时会产生更大的误差。

改善泛化的两个解决方案包括:

  • 正则化修改网络的性能函数(训练流程最小化的误差测量)。通过加入权重和偏差的规模,规则化通过训练数据生成一个性能良好的网络,并在接受提供的新数据时性能表现更加顺畅。
  • 早停法使用两个不同的数据集:训练集和验证集,前者用于更新权重和偏差,后者在网络开始过度拟合数据时用于停止训练。

用于分析网络性能的预处理绘图,包括连续训练代数的均方根误差验证性能(左上角)、误差直方图(右上角)以及用于训练、验证和测试阶段的混淆矩阵(底部)。

代码生成和部署

通过将 Deep Learning Toolbox 与 MATLAB Coder™GPU Coder™MATLAB Compiler™ 结合使用,您可以将受过训练的网络部署到嵌入式系统,或将其与种类广泛的生产环境进行集成。您可以使用 MATLAB Coder 为经过训练的网络生成生成 C 和 C++ 代码,该代码便于您在 PC 硬件上完成经过训练的网络仿真,然后将此网络部署到嵌入式系统。您可以使用 MATLAB Compiler 和 MATLAB Compiler SDK™ 将经过训练的网络部署为 C/C++ 共享库、Microsoft®.NET 程序集、Java® 类以及来自 MATLAB 程序的 Python® 程序包。您还可以在部署的应用程序或组件中训练网络模型。

Simulink 支持

Deep Learning Toolbox 提供一个用于在 Simulink 中构建浅层神经网络的模块集。所有模块都与  Simulink Coder™ 兼容。这些模块分为四个库:

  • 传递函数模块,其提取一个网络输入向量并生成一个对应的输出向量。
  • 网络输入函数模块,其提取许多加权的输入向量、权重层输出向量和偏差向量,并返回一个网络输入向量
  • 权重函数模块,其将神经元的权重向量应用于输入向量(或一个分层输出向量)以获取神经元的加权输入值。
  • 数据预处理模块,其将输入和输出数据映射到最适合神经网络直接处理的范围

或者,您可以在 MATLAB 环境中创建和训练您的网络,并自动生成用于 Simulink 的网络仿真模块。此方法还允许您以图形方式查看您的网络。

采用神经网络的应用场景

隆德大学开发出一个预测模型,为数千个风险状况组合提供仿真,从而提高受体的长期存活率。
通过使用神经网络从有关蛋白质含量的质谱数据中检测癌症,提高了癌症诊断率。
训练神经网对数字图像进行分类。