Machine learning 为什么每次我运行深度学习计划时,我的最佳表现模式都不一样?

Machine learning 为什么每次我运行深度学习计划时,我的最佳表现模式都不一样?,machine-learning,tensorflow,deep-learning,Machine Learning,Tensorflow,Deep Learning,我有一个训练数据集和测试数据集,每个数据集分别有大约1300和400个样本。我运行了一个网格搜索,它使用softmax为输出创建x个深度网络,使用RELU为隐藏层创建深度网络,并在预先指定的隐藏层数量中使用不同数量的隐藏节点进行梯度下降。例如,如果我说check all single layer models(检查所有单层模型),网格搜索将创建100个深层网络,其中单层中有1、2、3…100个隐藏节点。对于每个模型和每个历元,网格搜索将训练模型,并通过使用预先指定的批量大小随机输入训练/测试数据

我有一个训练数据集和测试数据集,每个数据集分别有大约1300和400个样本。我运行了一个网格搜索,它使用softmax为输出创建x个深度网络,使用RELU为隐藏层创建深度网络,并在预先指定的隐藏层数量中使用不同数量的隐藏节点进行梯度下降。例如,如果我说check all single layer models(检查所有单层模型),网格搜索将创建100个深层网络,其中单层中有1、2、3…100个隐藏节点。对于每个模型和每个历元,网格搜索将训练模型,并通过使用预先指定的批量大小随机输入训练/测试数据的模型批次进行测试。然后,该程序在所有100个模型的每个训练阶段后都会给出一个AUC值。因此,我们得到100个输出文件,其中包含每个历元训练后的所有AUC值。然后,我可以用解析器检查这些文件,看看什么是最佳模型,什么是最佳纪元数


然而,当我运行网格搜索时,我注意到第一次运行中的最佳模型与后续运行中的模型不同。我将此归因于输入模型进行训练和测试的随机批次,但我如何才能真正找到最佳模型?

我认为“最佳”是非常主观的,您可能会发现在预测特定数据集时,特定模型的性能更好,而另一个模型在另一个数据集上的性能稍好。在我看来,一个很好的测量方法是均方根误差

某些AI包可以设置为消除随机性,例如H2O,这样,如果下次加入相同的“种子”,则可以复制相同的结果


希望这对您有所帮助

还有随机初始化权重的效果。可能不是一个最优模型,而是多个最优模型。我向您保证,这些运行不会返回最优模型,而是返回不同的局部最优/次最优解。由于随机性和启发式驱动学习在这个上下文=非凸优化问题,将始终存在这种差异。你可以增加交叉验证次数来降低方差。太好了!谢谢你的评论。现在,我将权重初始化为一个常量值,即从一个运行到另一个运行的前一层中的节点数为1/sqrtnumber@sascha谢谢你对cv褶皱的评论,我一定会调查的。您是否推荐任何其他优化技术来帮助我的模型变得尽可能健壮?