模型简介
有趣的比喻
想象你有一个超级勤奋的宠物——比如说,一只名叫“神经网”(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的默认设置更稳妥
% 更多细节,例如选择训练函数、设置其他终止条件、设置样本分类比例、设置学习率初始值、权重初始值等等可手动设置