输入层、隐层的神经元激励函数选为S型函数,输出层采用线性函数purelin。各层的节点数分别为3、10、2,训练步数选为1500次。在Matlab中进行BP神经网络的建立、训练、仿真,结果如下:
T=[023 023];目标输出值
P=[-04953 -04915 ;04889 06160; 03708 04535]; 输入矩阵三行两列
net=newff(minmax(P),[5,12,1],{'tansig','tansig','purelin'},'traingd');网络建立、训练
nettrainParamepochs=1500;训练步数
nettrainParamgoal=000001;均方误差
[net,tr]=train(net,P,T);进行训练
y=sim(net,P)输出的结果
目前为止,我们已经学习了2个机器学习模型。线性回归一般用来处理线性问题,逻辑回归用来处理2分类问题。虽然逻辑回归也可以处理非线性的分类问题,但是当我们有非常多的特征时,例如大于100个变量,将会有数量非常惊人的特征组合。这对于一般的逻辑回归来说需要计算的特征太多了,负荷太大。而神经网络既可以解决复杂的非线性分类问题,又可以避免庞大的计算量。
人工神经网络是由很多神经元(激活单元)构成的,神经元是神经网络的基本元素。
实际上,可以这样理解神经元工作过程,当将输入送进神经元后,神经元将输入与权值线性组合(实际上就是θ T X)输出一个线性表达式,再将这个表达式送入激活函数中,便得到了神经元的真实输出。
神经网络由好多个激活单元构成,如下图所示:
激活函数的选择是构建神经网络过程中的重要环节,下面简要介绍常用的激活函数。
(1) 线性函数( Liner Function )
(2) 斜面函数( Ramp Function )
(3) 阈值函数( Threshold Function )
以上3个激活函数都属于线性函数,下面介绍两个常用的非线性激活函数。
(4) S形函数( Sigmoid Function )
S形函数与双极S形函数的图像如下:
双极S形函数与S形函数主要区别在于函数的值域,双极S形函数值域是(-1,1),而S形函数值域是(0,1)。由于S形函数与双极S形函数都是 可导的 (导函数是连续函数),因此适合用在BP神经网络中。(BP算法要求激活函数可导)
人工神经网络中,最常用的激活函数就是sigmoid函数
神经网络是由大量的神经元互联而构成的网络。根据网络中神经元的互联方式,常见网络结构主要可以分为下面3类:
前馈网络也称前向网络,是最常见的神经网络,前文提到的都是前馈网络。称之为前馈是因为它在输出和模型本身之间没有反馈,数据只能向前传送,直到到达输出层,层间没有向后的反馈信号。
反馈型神经网络是一种从输出到输入具有反馈连接的神经网络,其结构比前馈网络要复杂得多。
自组织神经网络是一种无监督学习网络。它通过自动寻找样本中的内在规律和本质属性,自组织、自适应地改变网络参数与结构。
BP网络一般都是用三层的,四层及以上的都比较少用;
传输函数的选择,这个怎么说,假设你想预测的结果是几个固定值,如1,0等,满足某个条件输出1,不满足则0的话,首先想到的是hardlim函数,阈值型的,当然也可以考虑其他的;
然后,假如网络是用来表达某种线性关系时,用purelin---线性传输函数;
若是非线性关系的话,用别的非线性传递函数,多层网络时,每层不一定要用相同的传递函数,可以是三种配合,可以使非线性和线性,阈值的传递函数等;
compet---竞争型传递函数;
hardlim---阈值型传递函数;
hardlims---对称阈值型传输函数;
logsig---S型传输函数;
poslin---正线性传输函数;
purelin---线性传输函数;
radbas---径向基传输函数;
satlin---饱和线性传输函数;
satlins---饱和对称线性传输函数;
softmax---柔性最大值传输函数;
tanhsig---双曲正切S型传输函数;
tribas---三角形径向基传输函数;
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)