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

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

1概念:

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

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

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

吴恩达机器学习—BP神经网络+matlab程序_第3张图片
吴恩达机器学习—BP神经网络+matlab程序_第4张图片吴恩达机器学习—BP神经网络+matlab程序_第5张图片
一个例子
吴恩达机器学习—BP神经网络+matlab程序_第6张图片神经网络的代价函数与逻辑回归代价函数对比
吴恩达机器学习—BP神经网络+matlab程序_第7张图片
误差的反向传递
吴恩达机器学习—BP神经网络+matlab程序_第8张图片
整个编程流程
吴恩达机器学习—BP神经网络+matlab程序_第9张图片
随机初始化:
如果学习率和特征变量初始化都一样的话,会导致隐含层的神经元数值一样,从而导致学习不成功,所以才有随机初始化的方法,从而避免了所有变量相同的问题

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


结果
吴恩达机器学习—BP神经网络+matlab程序_第10张图片吴恩达机器学习—BP神经网络+matlab程序_第11张图片

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

你可能感兴趣的:(机器学习,深度学习)