标准化多个输出的错误
用于训练神经网络的最常见性能函数是平方误差(MSE)。但是,对于具有不同值范围的多个输出,具有均方根误差的训练倾向于优化输出元素的准确性,相对于输出元素,范围较小的值范围较宽。
例如,这里有两个目标元素的范围非常不同:
x = -1:0.01:1;t1 = 100*sin(x);t2 = 0.01*cos(x);t = [t1;T2];
范围T1
为200(最少-100至最多100),而范围T2
仅为0.02(从-0.01到0.01)。范围T1
比范围大10,000倍T2
。
如果您在此上创建并训练神经网络以最大程度地减少平方错误,则训练有利于第二个输出元件在第二个输出元件的相对准确性。
net = feedforwardnet(5);net1 =火车(net,x,t);
y = net1(x);
在这里,您可以看到网络学会了很好地适合第一个输出元素。
图(1)图(x,y(1,:),x,t(1,:))
但是,第二个元素的功能不太合适。
图(2)图(x,y(2,:),x,t(2,2,:))
为了在相对意义上同样适合两个输出元素,请设置正常化
性能参数至'标准'
。然后,这可以计算出性能度量的错误,就好像每个输出元素的范围为2(即,好像每个输出元素的值范围从-1到1,而不是它们的不同范围)。
net.performparam.normalization ='标准';net2 =火车(net,x,t);
y = net2(x);
现在,两个输出元素都非常合适。
图(3)图(x,y(1,:),x,t(1,:))
图(4)图(x,y(2,:),x,t(2,2,:))