用同一数据集训练神经网络,每次训练结果不一样,有时正确率很高,有时很低,为什么?
其实这个问题本质就是,如果我们使用机器学习算法在数据集上训练一次数据模型,保存模型,然后使用相同的算法和相同的数据集和数据排序再次训练它,第一个模型是否与第二个模型相同?
这可能是因为在神经网络使用增益或权重的随机值进行初始化,然后在训练阶段每个模拟都有不同的起点。 如果想要始终保持相同的初始权重,可尝试为初始权重固定种子,即可消除该问题。
如果我们深入研究这个问题,我们可以从它们的“确定性”对ML算法进行分类,当从同一数据集训练时:
一类是始终产生相同模型,并且记录以相同顺序呈现;
二类是始终产生不一样模型,并且记录顺序不同。
在实际情况中,一般情况下是“不确定性”居多,产生模型变化的原因可能是在机器学习算法本身中可能存在随机游走,权重随机初始化不同,或概率分布的采样以分配优化函数的分量不同。
虽然模型“不确定性”可能对单次训练结果造成干扰,但我们也可以利用该“不确定性”来确认模型的稳定性,例如决策树、支持向量机(SVM)、神经网络等,可通过多次迭代来最终确认模型的稳定性。
赞 (0)