神经网络简介与原理讲解+使用“高贵的”MATLAB代码求例题

2023-10-29 20:10

本文主要是介绍神经网络简介与原理讲解+使用“高贵的”MATLAB代码求例题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

模型简介

有趣的比喻

想象你有一个超级勤奋的宠物——比如说,一只名叫“神经网”(NeurNet)的宠物狗。开始的时候,它一无所知,但它很善于学习。你希望训练它识别猫和狗。

每次你向它展示一张图片,它都会尝试猜测这是猫还是狗。开始的时候,NeurNet的猜测都是乱七八糟的。但每次它猜错时,你都会纠正它:“错了,那其实是猫!”或者“错了,那其实是狗!”。

NeurNet的大脑(我们称之为“神经网络”)里面有成千上万的小旋钮(权重)。每次猜错后,它都会微调这些旋钮。经过上千次、甚至上万次的猜测和纠正,它开始变得更加准确。最后,你向它展示的图片,它都能准确地告诉你是猫还是狗。

在这个过程中,NeurNet并不真的“知道”猫和狗的定义,但它通过大量的例子调整了自己的“旋钮”,从而达到了正确猜测的目的。

这就是神经网络的原理——通过大量的数据和反复的调整,它可以学会识别各种模式,就像NeurNet学会区分猫和狗一样!🐱🐶

基础知识

神经网络由 多层 的神经元 ( 节点 ) 构成,不同层之间的神经元通过 权重 连接
隐藏层和输出层的神经元中有 激活函数 ,收到的数据作为自变量,计算出结果
计算出的 结果与权重相乘后累加 传递到下一层,或输出最终结果

适用赛题

预测类问题
预测未来的结果,一般为 回归问题 ,即输出值 𝑦 是连续的
美赛 2022 C 题比特币和黄金 投资策略, LSTM( 长短时记忆网络 ) 进行预测
短时交通流量预测 ( 小波神经网络的时间序列 )
电力负荷预测 (Elman 神经网络,具有延时记忆,适合动态建模 )
分类问题
对现有的对象进行分类,一般为 离散问题 ,即输出值 𝑦 是有限个离散值
美赛 2021 C 题黄蜂传播规律和目击准确性,卷积神经网进行图像识别
人体肿瘤诊断 (LVQ 神经网络,无需数据预处理,适合模式识别和优化 )
柴油机故障判断 (SOM 神经网络,适合需要聚类的问题 )
评价类问题
嘉陵江水质评价 ( 模糊神经网络 ) ,高校科研能力评价 ( 离散 Hopfield 神经网络 )
本质上与预测和分类相同,只不过题目问的是“评价结果”而已
先学会最基础的神经网络原理,遇到题目后再去翻书现学现用

 原理讲解

感知机

只有输入层和输出层的神经网络,称为感知机,只适用于线性可分的问题
问题:如何综合考虑身高( 𝑥 1 )和体重( 𝑥 2 ),判断 是否达到了 8周岁(阈值 𝑏 )。  结果 只能有“ 未达到 ”和“ 达到 。也就是根据最后经过激活函数后是否达到b来判断。
如何对权重 𝑤 𝑖 进行 优化

 BP神经网络( back propagation,误差逆传播),多层神经网络

 

检验模型的泛化能力

训练集 进行学习、训练参数(权重)
验证集 来检验性能(学习率等),以调整超参数或及时停止训练
测试集 给出客观的评价

使用MATLAB工具箱进行代码求解

clc,clear,close all%% 1、导入数据
% 读取excle指定范围的数据
X = table2array(readtable('NNs.xlsx','Range','B2:N253'));
T = table2array(readtable('NNs.xlsx','Range','O2:O253'));
X_zs = table2array(readtable('NNs.xlsx','Range','B254:N254'));% 神经网络工具包语法默认需要以样本为列,所以对导入的数据进行转置
X = X'; T = T'; X_zs = X_zs';

样本自动分为训练集、验证集和测试集。训练集用于对网络进行训练,只要网络针对验证集持续改进,训练就会继续。测试集提供完全独立的网络准确度测量。

% 建立前馈神经网络,工具箱会自动把数据归一化
% 设置隐藏层
% 这个神经网络包含了三层,分别是输入层、一个包含15个神经元的隐藏层、一个包含6个神经元的隐藏层和一个包含9个神经元的输出层
net = feedforwardnet([15,6,9]);  % 开始训练,采用随机划分的方法把样本分为训练集、验证集和测试集
[net,tr] = train(net,X,T);  % [net,tr]分别是训练好的网络和训练记录
% X 和 T 分别表示输入数据和目标数据。
% 在这个训练过程中,神经网络会通过反向传播算法来不断调整权重和偏置,以最小化输出与目标之间的误差。
view(net) %可视化神经网络的结构% 求张三体脂率估计值
Y_zs = net(X_zs)
%使用训练好的神经网络 net 对输入数据 X_zs 进行预测,并将结果存储在 Y_zs 变量中。
% 这实际上是在进行前向传播,将输入数据传递给神经网络,然后获得网络的输出。% 调用工具包极大地简化了代码,对于初学者,直接使用matlab的默认设置更稳妥
% 更多细节,例如选择训练函数、设置其他终止条件、设置样本分类比例、设置学习率初始值、权重初始值等等可手动设置

这篇关于神经网络简介与原理讲解+使用“高贵的”MATLAB代码求例题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/303094

相关文章

详解Vue如何使用xlsx库导出Excel文件

《详解Vue如何使用xlsx库导出Excel文件》第三方库xlsx提供了强大的功能来处理Excel文件,它可以简化导出Excel文件这个过程,本文将为大家详细介绍一下它的具体使用,需要的小伙伴可以了解... 目录1. 安装依赖2. 创建vue组件3. 解释代码在Vue.js项目中导出Excel文件,使用第三

Linux alias的三种使用场景方式

《Linuxalias的三种使用场景方式》文章介绍了Linux中`alias`命令的三种使用场景:临时别名、用户级别别名和系统级别别名,临时别名仅在当前终端有效,用户级别别名在当前用户下所有终端有效... 目录linux alias三种使用场景一次性适用于当前用户全局生效,所有用户都可调用删除总结Linux

java图像识别工具类(ImageRecognitionUtils)使用实例详解

《java图像识别工具类(ImageRecognitionUtils)使用实例详解》:本文主要介绍如何在Java中使用OpenCV进行图像识别,包括图像加载、预处理、分类、人脸检测和特征提取等步骤... 目录前言1. 图像识别的背景与作用2. 设计目标3. 项目依赖4. 设计与实现 ImageRecogni

python管理工具之conda安装部署及使用详解

《python管理工具之conda安装部署及使用详解》这篇文章详细介绍了如何安装和使用conda来管理Python环境,它涵盖了从安装部署、镜像源配置到具体的conda使用方法,包括创建、激活、安装包... 目录pytpshheraerUhon管理工具:conda部署+使用一、安装部署1、 下载2、 安装3

Mysql虚拟列的使用场景

《Mysql虚拟列的使用场景》MySQL虚拟列是一种在查询时动态生成的特殊列,它不占用存储空间,可以提高查询效率和数据处理便利性,本文给大家介绍Mysql虚拟列的相关知识,感兴趣的朋友一起看看吧... 目录1. 介绍mysql虚拟列1.1 定义和作用1.2 虚拟列与普通列的区别2. MySQL虚拟列的类型2

使用MongoDB进行数据存储的操作流程

《使用MongoDB进行数据存储的操作流程》在现代应用开发中,数据存储是一个至关重要的部分,随着数据量的增大和复杂性的增加,传统的关系型数据库有时难以应对高并发和大数据量的处理需求,MongoDB作为... 目录什么是MongoDB?MongoDB的优势使用MongoDB进行数据存储1. 安装MongoDB

关于@MapperScan和@ComponentScan的使用问题

《关于@MapperScan和@ComponentScan的使用问题》文章介绍了在使用`@MapperScan`和`@ComponentScan`时可能会遇到的包扫描冲突问题,并提供了解决方法,同时,... 目录@MapperScan和@ComponentScan的使用问题报错如下原因解决办法课外拓展总结@

mysql数据库分区的使用

《mysql数据库分区的使用》MySQL分区技术通过将大表分割成多个较小片段,提高查询性能、管理效率和数据存储效率,本文就来介绍一下mysql数据库分区的使用,感兴趣的可以了解一下... 目录【一】分区的基本概念【1】物理存储与逻辑分割【2】查询性能提升【3】数据管理与维护【4】扩展性与并行处理【二】分区的

使用Python实现在Word中添加或删除超链接

《使用Python实现在Word中添加或删除超链接》在Word文档中,超链接是一种将文本或图像连接到其他文档、网页或同一文档中不同部分的功能,本文将为大家介绍一下Python如何实现在Word中添加或... 在Word文档中,超链接是一种将文本或图像连接到其他文档、网页或同一文档中不同部分的功能。通过添加超

Linux使用fdisk进行磁盘的相关操作

《Linux使用fdisk进行磁盘的相关操作》fdisk命令是Linux中用于管理磁盘分区的强大文本实用程序,这篇文章主要为大家详细介绍了如何使用fdisk进行磁盘的相关操作,需要的可以了解下... 目录简介基本语法示例用法列出所有分区查看指定磁盘的区分管理指定的磁盘进入交互式模式创建一个新的分区删除一个存