当前位置:网站首页>神经网络(ANN)
神经网络(ANN)
2022-07-31 00:07:00 【每天一道题】
算法介绍
概念
人工神经网络是由具有适应性的简单单元组成的广泛并行互连的网络,它的组织能够模拟生物神经神经系统对真实世界物体所作出的交互反应。在实际应用中,80%-90%的人工神经网络模型是采用误差反转算法或其变形形式的网络模型。
一个神经网络的典型结构:
作用
1.拟合 ->预测。
2.分离 -> 聚类分析。
神经网络模型和网络结构
1.神经元
大脑可视作为1000多亿神经元组成的神经网络。
下面为神经元的工作过程:
2.神经元信息传递
神经元的信息传递和处理是一种电化学活动,树突由于电化学作用接受外界的刺激;通过胞体内的活动体现为轴突电位,当轴突电位达到一定的值则形成神经脉冲或动作电位;再通过轴突末梢传递给其他的神经元。从控制论的观点来看,这一过程可以看作一个多输入单输出非线性系统的过程。
3.人工神经元的模型
x1-xn是从其他神经元传来的输入信号。
wij表示从神经元j到神经元i的连接权值。
另一个自变量表示阈值,或称为偏置。
神经元的输入与输出的关系:
4.激活函数
激活函数是对净激活函数与输出进行映射的函数。一些常用的激活函数,由于输入数据与期望值之间可能并不是量级一样,所以需要激活。
S形和双极S形函数图像:
S形和双极S形函数的导函数均为连续函数。
5.网络模型
根据网络中神经元的互联方式的不同,网络模型分为:
前馈神经网络:只在训练过程会有反馈信号,而在分类过程中数据只能向前传送,直到达到输出层,层间没有向后的输出信号。
反馈神经网络:从输出到输入具有反馈连接的神经网络,其结构要比前馈网络复杂的多。
自组织网络:通过自动寻找样本中的内在规律和本质属性,自组织,自适应地改变网络参数与结构。
6.工作状态
神经网络的工作状态分为学习和工作状态。
学习:利用学习算法来调整神经元间的连接权重,使得网络输出更符合实际。
工作:神经元间的连接权值不变,可以作为分类器或者预测数据之用。
7.学习方式
学习方式分为有导师学习(监督学习)和无导师学习(非监督学习)。
有导师学习:将一组训练集送入网络,根据网络的实际输出与期望输出间的差别来调整连接权。(如:BP算法)
无导师学习:抽取样本集合中蕴含的统计特性,并以神经元之间的联接权的形式存于网络中。(如:Hebb学习率)
建立和应用神经网络的步骤
(1)网络结构的确定
包括网络的拓扑结构和每个神经元相应函数的选取。
(2)权重和阈值的确定
通过学习得到,为有指导的学习,也就是利用已知的一组正确的输入、输出数据,调整权和阈值使得网络输出与理想输出偏差尽量小。
(3)工作阶段
用带有确定权值和阈值的神经网络解决实际问题的过程,也叫做模拟。
BP算法
采用BP学习算法的前馈神经网络称为BP神经网络。
BP算法基本原理:利用输出后的误差来估计输出层的直接前导层的误差,再用这个误差估计更前一层的误差,如此一层一层反传下去,就获得了所有其他各层的误差估计。
预测类代码
% 读取数据
input = rand(2,200);
output = input(1,:) .* input(2, :);
% 训练集,测试集
input_train = input(:, 1:150);
output_train = output(1:150);
input_test = input(:, 151:end);
output_test = output(151:end);
% 数据归一化
[inputn, inputps] = mapminmax(input_train, 0, 1);
[outputn, outputps] = mapminmax(output_train);
inputn_test = mapminmax('apply', input_test, inputps);
% 构建BP神经网络
net = newff(inputn, outputn, [8, 7]) % 输入层,输出层,隐含层神经元个数
% 网络参数
net.trainParam.epochs = 1000; % 训练次数
net.trainParam.lr = 0.01; % 学习速率
net.trainParam.goal = 0.000001 % 训练目标最小误差
% BP神经网络训练
net = train(net, inputn, outputn);
% BP神经网络测试
an = sim(net, inputn_test); % 用训练好的模型进行仿真
test_simu = mapminmax('reverse', an, outputps); % 预测结果反归一化
error = test_simu - output_test; % 预测值和真实值的误差
% 真实值与预测值误差比较
figure(1)
plot(output_test, 'bo-')
hold on
plot(test_simu, 'r*-')
hold on
plot(error, 'square', 'MarkerFaceColor', 'b')
legend('期望值', '预测值', '误差值')
xlabel('数据组数'),ylabel('值'),title('测试集预测值和期望值的误差对比'),set(gca,'fontsize',12)%计算误差
[~,len] = size(output_test);
MAE1 = sum(abs(error ./ output_test)) / len;
MSE1 = error * error' / len;
RMSE1 = MSE1 ^ (1/2);
disp(['---------------误差计算---------------'])
disp(['平均绝对误差MAE为:', num2str(MAE1)])
disp(['均方误差MSE为:', num2str(MSE1)])
disp(['均方根误差RMSE为:', num2str(RMSE1)])
边栏推荐
猜你喜欢
SWM32系列教程6-Systick和PWM
Summary of the stock problem of state machine dynamic programming
How to Repair Word File Corruption
Manually set transaction commit in mysql
.NET Cross-Platform Application Development Hands-on Tutorial | Build a Kanban-style Todo App with Uno Platform
动态修改el-tab-pane 的label(整理)
what is jira
实验7(MPLS实验)
In MySQL, the stored procedure cannot realize the problem of migrating and copying the data in the table
How to solve the error of joiplay simulator
随机推荐
joiplay模拟器如何使用
牛逼的公司都在用的绩效管理法OKR
状态机动态规划之股票问题总结
Shell script if statement
Android安全性优化——APP加固
ctfshow 文件包含
【深入浅出玩转FPGA学习15----------时序分析基础】
Shell编程条件语句 test命令 整数值,字符串比较 逻辑测试 文件测试
MPI简谈
怎么开通代付通道接口?
How to adjust Chinese in joiplay simulator
【深入浅出玩转FPGA学习14----------测试用例设计2】
WebServer流程讲解(注册模块)
What are the efficient open source artifacts of VSCode
Chevrolet Trailblazer, the first choice for safety and warmth for your family travel
借助深度估计的点云场景重建
Axure Carousel
asser利用蚁剑登录
jira是什么
[0x800706D9] solution appears in Microsoft Store