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