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

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

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

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

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


回答:

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

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

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

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

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