深度神经网络 用同一数据集训练神经网络,每次训练结果不一样,有时正确率很高,有时很低,为什么?
用同一数据集训练神经网络,每次训练结果不一样,有时正确率很高,有时很低,为什么?
其实这个问题的实质是,如果我们用机器学习算法在数据集上训练一次数据模型,保存模型,然后用同样的算法和同样的数据集和数据排序再训练一遍,第一个模型和第二个模型是一样的吗?
这可能是因为神经网络用增益或权重的随机值初始化,然后每个模拟在训练阶段有不同的起点。如果您希望始终保持相同的初始权重,可以尝试为初始权重修复种子以消除问题。
如果我们深入研究这个问题,我们可以根据ml算法的“确定性”来对其进行分类。当从同一个数据集进行训练时:
一个是总是生成相同的模型,并且记录以相同的顺序呈现;
另一个是总是生成不同的模型,并且记录顺序不同。
在实践中,大多数是“不确定的”。模型变化的原因可能是机器学习算法本身存在随机游走、不同权值的随机初始化、不同分量的概率分布抽样来分配优化函数。
虽然模型的“不确定性”可能会对单个训练结果造成干扰,但我们也可以用“不确定性”来确认模型的稳定性,如决策树、支持向量机(SVM)、神经网络等,最终可以通过多次迭代来确认模型的稳定性。
如何判断神经网络是否过度训练?
在机器学习中,如果训练样本太少,训练步骤太多,训练模型容易出现过度训练,会记录更多训练样本的特征,忽略样本间的共性挖掘。过度训练的特点是当模型对训练样本进行线性回归或分类时,损失很小,精度很高,甚至很快达到100%。但当模型对测试样本进行验证时,损失很大,精度严重降低。
为了解决过度训练的问题,首先将神经网络隐层中的部分神经元按一定比例丢弃,以降低神经元之间的连接强度;其次,对神经网络各层的训练参数进行标准化,以防止变化过快,从而降低网络性能减少训练次数;第三,实时检测训练损失;第四,适当增加训练样本数,减少训练步数,也可以减少训练过度的问题。
深度学习和普通的机器学习有什么区别?
一张图片显示了这种关系。机器学习是人工智能的重要领域之一,而深度学习是机器学习的一个分支。深度学习之所以近年来流行起来,是因为它突破了传统机器学习无法解决的一些问题。
机器学习的意义在于代替人工完成重复性工作,识别出统一的规则(模式)。但是对于传统的机器学习来说,特征提取的难度不小(特征可以是像素、位置、方向等)。特征的准确性将在很大程度上决定大多数机器学习算法的性能。为了使特征准确,在特征工程部分需要大量的人力来调整和改进特征。完成这一系列工作的前提是,数据集中所包含的信息量是充分的,并且易于识别。如果不满足这一前提,传统的机器学习算法将在信息的杂乱中失去其性能。深度学习的应用正是基于这个问题。它的深层神经网络使它能够在杂波中学习,自动发现与任务相关的特征(可以看作是自发学习的特征工程),并提取高级特征,从而大大减少了特征工程部分任务所花费的时间。
另一个明显的区别是他们对数据集大小的偏好。传统的机器学习在处理规则完备的小规模数据时表现出良好的性能,而深度学习则表现不好。随着数据集规模的不断扩大,深度学习的效果会逐渐显现出来,并变得越来越好。对比如下图所示。
如何估算神经网络的最优学习率?
。
具体来说,当前主流的神经网络模型使用梯度下降算法进行训练,或学习参数。学习速率决定权重在梯度方向上成批移动的距离。理论上,学习率越高,神经网络的学习速度越快。但是,如果学习速率过高,可能会“穿越”损失函数的最小值,导致收敛失败。
上图左边是高学习率,右边是低学习率,来源:mikkel Duif(quora)
那么,如何找到最佳学习率?
方法。但是,这种方法的初始学习率(上例中为0.1)不应该太高。如果初始学习率太高,可能会“穿越”最优值。
另外,还有另外一种思路,就是逆向操作,从学习率很低开始,每批之后再提高学习率。例如,从0.00001到0.0001,再到0.001,再到0.01,再到0.1。这个想法背后的直觉是,如果我们总是以很低的学习率学习,我们总是可以学习到最好的权重(除非整个网络架构有问题),但它将非常缓慢。因此,从一个很低的学习率开始,我们可以肯定地观察到损失函数的下降。然后逐渐加大学习率,直到学习率过高,导致发散。该方法还避免了上述方法初始学习率过高,一次“穿越”最优值的隐患。这是Leslie n.Smith在2015年的论文《训练神经网络的循环学习率》中提出的方法。
深度神经网络 神经网络是怎么训练的 神经网络训练完怎么用来预测
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。