主要内容

标准化多个输出的错误

用于训练神经网络的最常见性能函数是平方误差(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);

图神经网络训练(26-FEB-2022 11:07:25)包含一个类型Uigridlayout的对象。

y = net1(x);

在这里,您可以看到网络学会了很好地适合第一个输出元素。

图(1)图(x,y(1,:),x,t(1,:))

图包含一个轴对象。轴对象包含2个类型行的对象。

但是,第二个元素的功能不太合适。

图(2)图(x,y(2,:),x,t(2,2,:))

图包含一个轴对象。轴对象包含2个类型行的对象。

为了在相对意义上同样适合两个输出元素,请设置正常化性能参数至'标准'。然后,这可以计算出性能度量的错误,就好像每个输出元素的范围为2(即,好像每个输出元素的值范围从-1到1,而不是它们的不同范围)。

net.performparam.normalization ='标准';net2 =火车(net,x,t);

图神经网络训练(26-FEB-2022 11:07:56)包含一个类型Uigridlayout的对象。

y = net2(x);

现在,两个输出元素都非常合适。

图(3)图(x,y(1,:),x,t(1,:))

图包含一个轴对象。轴对象包含2个类型行的对象。

图(4)图(x,y(2,:),x,t(2,2,:))

图包含一个轴对象。轴对象包含2个类型行的对象。