目前为止,我们已经学习了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类:
前馈网络也称前向网络,是最常见的神经网络,前文提到的都是前馈网络。称之为前馈是因为它在输出和模型本身之间没有反馈,数据只能向前传送,直到到达输出层,层间没有向后的反馈信号。
反馈型神经网络是一种从输出到输入具有反馈连接的神经网络,其结构比前馈网络要复杂得多。
自组织神经网络是一种无监督学习网络。它通过自动寻找样本中的内在规律和本质属性,自组织、自适应地改变网络参数与结构。
以我个人的理解,神经网络会有很多数据输入,激活函数有两个作用,第一是因为实际数据会有噪声,为了让噪声对下一层的影响较小,采用激活函数可以抑制边缘奇异性较大的数据,第二个作用就是对前一层输出值进行约束,这就好比人一样,我们的身高在1-3米之间,加入计算中计算出了一个非常夸张的数,就可以用激励函数约束(一般训练初时病态比较严重)在1-3米之间,常用的双极型函数就是把数据都约束在-1到1的超球体内。
当然可以了!!!我硕士三年研究的都是神经网路!告诉你哈,想要模拟你说的那两个函数真是太简单了!
同时学习多少个都是可以的!先给一个输入数据集合x=[],然后把你说的那两个函数分别设为两个目标函数就可以了,最后出一张图或者出两张图分别显示这两个函数的学习情况。但是我建议你分别编两个程序去学习这两个函数,这样程序收敛的快!效果是一样的。只要输入数据集合被指定为同一组就是了。
另外,两个隐层的神经网络?太复杂了!看你提问的内容,应该不是硕博士吧!我硕士期间都一直用的是单隐层,可以学习很多复杂的问题,关键是你的参数要给的好!双隐层来学习你这两个函数,浪费了,而且反而更加难收敛,因为参数更多,你如果给的不准,学习效果就不好。
希望能帮到你。
输入层、隐层的神经元激励函数选为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)输出的结果
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)