深度学习神经网络归一化方法及MATLAB函数

452 阅读3分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路

归一化方法及 MATLAB函数

数据归一化方法是神经网络预测前对数据常做的一种处理方法。数据归一化处理把所有数据都转化为[0,1]之间的数,其目的是取消各维数据间数量级差别,避免因为输入输出数据数量级差别较大而造成网络预测误差较大数据归一化的方法主要有以下两种。

最大最小法平均数方差法
xk=xkxmaxxmaxxminx_{k}=\frac{x_{k}-x_{max}}{x_{max}-x_{min}}xk=xkxmeanxvarx_{k}=\frac{x_{k}-x_{mean}}{x_{var}}
xminx_{min}​为数据序列中的最小数;xmaxx_{max}​​为序列中的最大数xmeanx_{mean}为数据序列的均值;xvarx_{var}为数据的方差

例如采用第一种最大最小法,归一化函数采用MATLAB自带函数mapminmax,该函数有多种形式,常用的方法如下:

%input_train,output_train分别是训练输入,输出数据
[inputn,inputps]=mapminmax(input_train);
[outputn,outputps]=mapminmax(output_train);

input_train,output_train分别是训练输入,输出原始数据;inputn,outputn是归一化后的数据,inputps,outputps是归一化后得到的结构体,里面包含了数据最大值,最小值,平均值等信息,可用于测试数据归一化和反归一化。测试数据归一化和反归一化程序如下

inputn_test= mapminmax('apply',input_test,inputps);   %测试输入数据归一化
BPoutput= mapminmax('reverse',an,outputps);   %网络预测数据反归一化

input_test是预测输入数据; inputn_test是一化后的预测数据; 'apply'表示根据 inputps的值对 input_testi进行归一化。an是网络预测结果; outputps是训练输出数据归一化得到的结构体; BPoutput是反归一化之后的网络预测输出; 'reverse'表示对数据进行反归一化

在[机器学习]领域中,不同评价指标(即特征向量中的不同特征就是所述的不同评价指标)往往具有不同的量纲和量纲单位,这样的情况会影响到数据分析的结果,为了消除指标之间的量纲影响,需要进行数据标准化处理,以解决数据指标之间的可比性。原始数据经过数据标准化处理后,各指标处于同一数量级,适合进行综合对比评价。其中,最典型的就是数据的归一化处理。(可以参考学习:[数据标准化/归一化]

简而言之,归一化的目的就是使得预处理的数据被限定在一定的范围内(比如[0,1]或者[-1,1]),从而消除奇异样本数据导致的不良影响。

1)在统计学中,归一化的具体作用是归纳统一样本的统计分布性。归一化在01之间是统计的概率分布,归一化在-1+1之间是统计的坐标分布。

2)奇异样本数据是指相对于其他输入样本特别大或特别小的样本矢量(即[特征向量],譬如,下面为具有两个特征的样本数据x1、x2、x3、x4、x5、x6(特征向量—>列向量),其中x6这个样本的两个特征相对其他样本而言相差比较大,因此,x6认为是奇异样本数据。