在BP神经网络的实验中,我发现对于attribute很大,或者instance很多,累加到神经元处远远大于1。导致最终结果总是不对劲。
最开始想到的是换激活函数,找好函数的时候突然发现,本身BP神经网络的后向传播就是利用了sigmoid函数求导可以用原函数表示的特性。
那既然不能动激活函数的情况下,我想到最快的方法就是对输入数据进行归一化。
(不过现在还没想清楚归一化还有对不同量级的输入进行归一化是否会影响结果)
归一化和标准化:
最大最小归一化——Matlab中使用mapminmax函数
标准归一化——Matlab中使用mapstd函数
摘自知乎——https://www.zhihu.com/question/20455227
归一化和标准化本质上就是对向量 按照比例压缩再进行平移,也就是一种线性变换。
线性变换保持线性组合与线性关系式不变,这保证了特定模型不会失效。
归一化标准化区别:
数据归一化后,最优解的寻优过程明显会变得平缓,更容易正确的收敛到最优解。
什么时候用归一化,什么时候用标准化?