如何区分真正的改进和随机噪声?

我正在使用Moses构建一个自动翻译器。为了提升其性能,我采用了对数线性权重优化技术。这种技术带有随机成分,可能会轻微影响最终结果(但我并不确切知道影响程度)。

假设当前模型的性能为25 BLEU。

现在假设我修改了语言模型(例如,改变平滑方法),结果性能达到了26 BLEU。

我的问题是:如何判断性能提升是由于修改所致,还是仅仅是随机成分带来的噪声?


回答:

这基本上就是统计学的核心内容。你可以采取以下两种基本方法之一(当然,还有更多高级方法):

  • 尝试测量/建模/量化随机性的影响,如果你知道是什么导致了随机性,你可能能够计算出它对模型的影响程度。如果无法通过解析方法解决,你可以用相同的数据和设置训练20个模型,收集结果并估算噪声分布。一旦你有了这些数据,你就可以进行统计测试来检查改进是否具有统计学意义(例如通过ANOVA测试)。

  • 更简单的做法(但在数据和时间上成本更高)是通过平均来减少方差。简而言之——不要只训练一个模型(或只评估一次模型),因为这样难以确定噪声成分——而是多次进行,10次、20次,并平均结果。这样你就能在分析中减少结果的方差。这可以(而且应该)与前一种选项结合使用——因为现在你每轮有20个结果,因此你可以再次使用统计测试来查看这些结果是否有显著差异。

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注