神经网络训练流程-数据收集和数据预处理

数据选择

神经网络是一种由数据决定效果的办法,其数据必须也仅需覆盖神经网络可能用到的输入空间。

数据需要分为训练集,验证集和测试集(7:1.5:1.5),需要确保训练集,验证集和数据集均覆盖输入空间。

训练集用于计算梯度和更新权值,验证集用于在过拟合之前停止训练,测试集用于预测网络将来的性能。


a.如果训练集结果优于验证集和测试集结果,出现了过拟合,减小网络规模或者使用较慢的训练算法,同时提升神经网络的性能-防止过拟合

b.如果训练集和验证集结果较好,测试集结果不好,存在四种可能:网络陷入局部最优解、缺少足够的神经元拟合数据、网络外推继续采样。

c.如果三个集合的结果都不好,说明网络能力不够强大,增加神经元数量/层数(先加数量,再试层数)


如何确定输入空间已经被训练数据充分采样?

1.分析拟合问题中训练网络结果的一个有效方法是将训练后的网络输出与对应的目标作回归。

a=mt+c+e

m和c是线性函数的斜率和偏移量,t是目标值,a是训练后的网络输出,e是回归的残留误差。

对远离回归线的离群点进行研究,检查是数据本身有问题,还是与其他训练数据相距较远(在该区域内需要采集更多的数据。)

除了计算回归系数外,还需计算相关系数,即R值,或者可决系数,R的平方。

如果R或者R的平方远小于1,则说明神经网络对函数关系的拟合不好。

2.是否出现外推情况

测试集结果表现不好时,应如何处理?

1.陷入局部最优解:

通过5-10次随机初始化权重重新训练网络来解决。最小训练误差的网络通常获得了全局最小值。

数据预处理

数据预处理阶段的主要目的对数据进行初步处理,使得神经网络在训练中更容易提取数据的相关信息,便于网络的训练,在一定程度上可以减少神经网络在寻找输入和目标输出之间的潜在变换时的一部分工作。数据预处理包括归一化、非线性变换、特征提取、离散输入/目标的编码以及缺失数据的处理。


例如:在多层网络中,隐层经常使用S型传输函数。当净输入大于3时,这类函数基本就饱和了(exp(-3)~=0.05。在训练之初不希望出现类似情况,会导致梯度值变得很小。

网络第一层=输入*权重+偏置,当输入值很大时,为了防止传输函数饱和,相应的取很小的权值。

标准的做法时在输入传给网络之前进行归一化处理深度学习归一化方法总结(BN、LN、IN、GN)

数据归一化及三种方法(python)。输入值归一化后,网络权值大小具有一致意义,对于正则化而言较为重要。正则化要求网络权值较小。

除了常见了线性变化归一化,非线性变换也可用于归一化处理阶段。(通常结合先验知识对数据作预处理,如分子动力学仿真中原子力由原子之间距离的函数计算得到,已知原子力大小与距离负相关,可以对输入进行倒数变换后再传给网络。)


猜你喜欢

转载自blog.csdn.net/sky_ying/article/details/130122708
今日推荐