吴恩达机器学习—BP神经网络+matlab程序

烨枫_邱 https://www.jianshu.com/p/6ab6f53874f7

1概念:

BP神经网络是一种多层的前馈神经网络,其主要的特点是:信号是前向传播的,而误差是反向传播的。

具体来说,对于如下的只含一个隐层的神经网络模型:BP神经网络的过程主要分为两个阶段,
第一阶段是信号的前向传播,从输入层经过隐含层,最后到达输出层;
第二阶段是误差的反向传播,从输出层到隐含层,最后到输入层,依次调节隐含层到输出层的权重和偏置,输入层到隐含层的权重和偏置。

在这里插入图片描述正向传递
在这里插入图片描述BP网络采用的传递函数是非线性变换函数——Sigmoid函数(又称S函数)。其特点是函数本身及其导数都是连续的,因而在处理上十分方便。为什么要选择这个函数,等下在介绍BP网络的学习算法的时候会进行进一步的介绍。S函数有单极性S型函数和双极性S型函数两种,单极性S型函数定义如下:f(x)=1/1+e−x

在这里插入图片描述
在这里插入图片描述在这里插入图片描述
一个例子
在这里插入图片描述神经网络的代价函数与逻辑回归代价函数对比
在这里插入图片描述
误差的反向传递
在这里插入图片描述
整个编程流程
在这里插入图片描述在这里插入图片描述
随机初始化:
如果学习率和特征变量初始化都一样的话,会导致隐含层的神经元数值一样,从而导致学习不成功,所以才有随机初始化的方法,从而避免了所有变量相同的问题

matlab程序

按照点的坐标分类


P1=[1	10	8	7	8	5	0	5	7	5	2	6   7	8	6	4	2	7	3	2	7	8	2	6;
    7	8	6	4	2	7	3	2	7	8	2	6   1	10	8	7	8	5	0	5	7	5	1	7 ;
];%学习的数据库的点坐标
T1=[1	0	0	1	1	1	0	0	0	1	0	0   1	0	0	1	1	1	0	0	0	1	0	0;
];%对应数据库点的分类情况


[p1,minp,maxp,t1,mint,maxt]=premnmx(P1,T1);%按行进行归一化
%创建网络
net=newff(minmax(P1),[3,1],{'logsig','purelin'},'trainlm');%purelin
%设置训练次数
net.trainParam.epochs = 10000;
%设置收敛误差
net.trainParam.goal=0.0000001;
% 学习速率
net.trainParam.lr=0.001;
%训练网络
[net,tr]=train(net,p1,t1);
 
%输入检测数据
%a=[3.0;9.3;3.3;2.05;100;2.8;11.2;50];
a1=[4,6,4,7;3,4,6,6];
%将输入数据归一化
a=premnmx(a);
%放入到网络输出数据
b=sim(net,a);
%将得到的数据反归一化得到预测数据
c=postmnmx(b,mint,maxt);
c
color=['or';'ob';'*r';'*b'];%红色和蓝色
for i = 1:size(P1,2)
    b=T1(1,i)+1;
plot(P1(1,i),P1(2,i),color(b,:));%显示学习的数据库内的点
hold on;
end

for i = 1:size(a1,2)
    b=round(c(1,i))+3;
plot(a1(1,i),a1(2,i),color(b,:));%显示检测的数据的点
hold on;
end


结果
在这里插入图片描述在这里插入图片描述

原点是学习的数据,星号是检测的点数据,颜色是分类情况

  • 5
    点赞
  • 63
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值