0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

什么是神经网络?为什么说神经网络很重要?神经网络如何工作?

MATLAB 来源:MATLAB 2023-07-26 18:28 次阅读

什么是神经网络

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

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

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

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

电力公司准确预测其电网上的负载,以确保可靠性,并优化他们运行的发电机的效率。

ATM 通过读取支票上的账号和存款金额的可靠方式接受银行存款。

病理学家依靠癌症检测应用的指导,根据细胞大小的均匀度、肿块密度、有丝分裂及其他因素将肿瘤分类为良性或恶性。

深度学习

针对两层或三层连接的神经元层运作的神经网络称为浅层神经网络。深度学习网络可以有许多层,甚至数百层。这两种都是直接通过输入数据学习的机器学习技术。 深度学习正在获得大量关注,这是有充分理由的。深度学习正在实现以前不可能实现的成果。 深度学习特别适合复杂鉴别应用场景,比如人脸辨识、文本翻译和语音识别。另外,深度学习也是高级驾驶辅助系统和任务(包括包括车道分类和交通标志识别)中使用的关键技术。

神经网络如何工作?

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

daf731da-2b9c-11ee-a368-dac502259ad0.png

典型的神经网络架构。

神经网络使用的技术

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

监督式学习

训练监督式神经网络生成响应样本输入的所需输出,使其专门适用于动态系统建模和控制、噪声数据分类和未来事件预测。Deep Learning Toolbox 包括四种监督式网络:前馈网络、径向基网络、动态网络和学习向量量化网络。 分类 分类是一种监督式机器学习,在该学习中,算法将“学习”从带标签的数据示例中对新的观察结果进行分类。

回归

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

模式识别

模式识别是计算机视觉、雷达处理、语音识别和文本分类方面的神经网络应用的一个重要组成部分。它的工作原理是,使用监督式分类或无监督分类基于关键功能将输入数据分类为对象或类。 例如,在计算机视觉方面,监督式模式识别技术可用于光学字符识别 (OCR)、人脸检测、人脸识别、对象检测和对象分类。在图像处理和计算机视觉方面,无监督模式识别技术用于对象检测和图像分割。

无监督学习

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

聚类

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

使用 MATLAB 开发浅层神经网络

借助管理大型数据集所用的工具和函数,MATLAB 提供用于机器学习、神经网络、深度学习、计算机视觉和自动驾驶的专业化工具箱。 只需几行代码,MATLAB 就可以让您开发神经网络,而不需要成为专家。快速入门,创建和可视化模型,并将模型部署到服务器和嵌入式设备。 使用 MATLAB,您可以将结果整合到现有的应用程序中。MATLAB 可在企业系统、集群、云和嵌入式设备上自动部署您的神经网络。

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

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

访问和准备数据

创建神经网络

配置网络的输入和输出

调整网络参数(权重和偏差)以优化性能

训练网络

验证网络的结果

将网络集成到生产系统中

浅层网络的分类和聚类

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

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

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

使用主成分分析降低输入向量的维度

执行网络响应和相应目标间的回归分析

扩展输入和目标以便它们位于范围 [-1,1] 内

将培训数据集的平均和标准方差标准化

在创建网络时使用自动数据预处理和数据分段

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

正则化

修改网络的性能函数(训练流程最小化的误差测量)。通过加入权重和偏差的规模,规则化通过训练数据生成一个性能良好的网络,并在接受提供的新数据时性能表现更加顺畅。

早停法

使用两个不同的数据集:训练集和验证集,前者用于更新权重和偏差,后者在网络开始过度拟合数据时用于停止训练。

db1869cc-2b9c-11ee-a368-dac502259ad0.jpg

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

代码生成和部署

通过将 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 的网络仿真模块。此方法还允许您以图形方式查看您的网络。




审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 神经网络
    +关注

    关注

    42

    文章

    4572

    浏览量

    98746
  • 计算机视觉
    +关注

    关注

    8

    文章

    1600

    浏览量

    45616
  • 机器学习
    +关注

    关注

    66

    文章

    8122

    浏览量

    130557
  • 自动驾驶
    +关注

    关注

    773

    文章

    13032

    浏览量

    163214

原文标题:关于神经网络,你不得不知的三大要点

文章出处:【微信号:MATLAB,微信公众号:MATLAB】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    神经网络教程(李亚非)

      第1章 概述  1.1 人工神经网络研究与发展  1.2 生物神经元  1.3 人工神经网络的构成  第2章人工神经网络基本模型  2.1 MP模型  2.2 感知器模型  2.3
    发表于 03-20 11:32

    神经网络简介

    神经网络简介
    发表于 08-05 21:01

    MATLAB神经网络

    MATLAB神经网络
    发表于 07-08 15:17

    神经网络基本介绍

    神经网络基本介绍
    发表于 01-04 13:41

    【PYNQ-Z2试用体验】神经网络基础知识

    前言前面我们通过notebook,完成了在PYNQ-Z2开发板上编写并运行python程序。我们的最终目的是基于神经网络,完成手写的数字识别。在这之前,有必要讲一下神经网络的基本概念和工作原理。何为
    发表于 03-03 22:10

    神经网络资料

    基于深度学习的神经网络算法
    发表于 05-16 17:25

    全连接神经网络和卷积神经网络有什么区别

    全连接神经网络和卷积神经网络的区别
    发表于 06-06 14:21

    卷积神经网络如何使用

    卷积神经网络(CNN)究竟是什么,鉴于神经网络在工程上经历了曲折的历史,您为什么还会在意它呢? 对于这些非常中肯的问题,我们似乎可以给出相对简明的答案。
    发表于 07-17 07:21

    【案例分享】ART神经网络与SOM神经网络

    今天学习了两个神经网络,分别是自适应谐振(ART)神经网络与自组织映射(SOM)神经网络。整体感觉不是很难,只不过一些最基础的概念容易理解不清。首先ART神经网络是竞争学习的一个代表,
    发表于 07-21 04:30

    人工神经网络实现方法有哪些?

    人工神经网络(Artificial Neural Network,ANN)是一种类似生物神经网络的信息处理结构,它的提出是为了解决一些非线性,非平稳,复杂的实际问题。那有哪些办法能实现人工神经网络呢?
    发表于 08-01 08:06

    什么是LSTM神经网络

    简单理解LSTM神经网络
    发表于 01-28 07:16

    如何构建神经网络

    原文链接:http://tecdat.cn/?p=5725 神经网络是一种基于现有数据创建预测的计算系统。如何构建神经网络神经网络包括:输入层:根据现有数据获取输入的层隐藏层:使用反向传播优化输入变量权重的层,以提高模型的预测
    发表于 07-12 08:02

    基于BP神经网络的PID控制

    最近在学习电机的智能控制,上周学习了基于单神经元的PID控制,这周研究基于BP神经网络的PID控制。神经网络具有任意非线性表达能力,可以通过对系统性能的学习来实现具有最佳组合的PID控制。利用BP
    发表于 09-07 07:43

    神经网络移植到STM32的方法

    神经网络移植到STM32最近在做的一个项目需要用到网络进行拟合,并且将拟合得到的结果用作控制,就在想能不能直接在单片机上做神经网络计算,这样就可以实时计算,不依赖于上位机。所以要解决的主要是两个
    发表于 01-11 06:20

    卷积神经网络模型发展及应用

    十余年来快速发展的崭新领域,越来越受到研究者的关注。卷积神经网络(CNN)模型是深度学习模型中最重要的一种经典结构,其性能在近年来深度学习任务上逐步提高。由于可以自动学习样本数据的特征表示,卷积
    发表于 08-02 10:39