本站原创文章,转载请说明来自《老饼讲解-BP神经网络》bp.bbbdata.com
本文简单讲解BP神经网络归一化与数据分割的意义
通过本文理解为什么BP神经网络在建模前为什么需要归一化与数据分割
本节讲解为什么要做归一化和数据分割及其意义
为什么要将数据归一化
归一化一般是指把数据映射到【-1,1】之间
为什么要归一化为【-1,1】之间?
归一化能令网络特性更简单
因为归一化后,能使网络的特性更加确定、统一、简单
例如
隐层的输出(也就是它下一层的输入)为【-1,1】,
把输入层的数据归一化后,可以保持所有层的数据输入范围统一
这样可以更方便把数据统一映射 tansig的有效区间内
研究成果基于网络归一化
由于这种“简单、确定、统一”能给理论研究省去许多不必要的声明
因此许多研究结果都是基于归一化数据得出的研究结果
这导致在训练过程中一些细节的处理
都是依据“输入输出数据范围为【-1,1】”进行量身定造
例如
梯度下降法中的学习率,如果在归一化的前提下,设为0.1是合理的,
而如果在数据是【-10000000,1000000】,那学习率设为0.1显然就不合理的
当然,学习率只是一个例子,
用于说明训练细节依赖于“输入数据范围为【-1,1】”这一条件
总的来说,把数据归一化为【-1,1】,通常能让训练效果更好
为什么要将数据分割
数据分割为三分,训练数据、验证数据和测试数据
为什么要分割成三份数据?
主要因为训练出的网络在实际使用中不一定准确
为了让模型在实际应用时的效果更好,将数据分割为三份
下面分别说下三份数据各自的用处
训练数据
训练数据用于模型训练
模型的系数就是通过训练数据求得的
验证数据
验证数据主要用于监督模型训练,预防模型走向过拟合
验证数据并不参与模型的求解,只是在求解过程中不断检验模型效果
如果模型过拟合,由于验证数据也未参与训练,
所以验证数据的预测效果就会非常差
如此一来
如果出现训练数据误差越来越小,而验证数据误差越来越大
则说明模型已经开始走向过拟合,此时就该停止训练
测试数据
测试数据用于模型效果评估
由于测试数据完全不参与训练
它的预测效果相对会更接近实际使用的效果
总的来说
验证数据就是在训练过程不断检验模型,防止模型过走向拟合
End