如何区分真正的改进和随机噪声?
How to differentiate between real improvement and random noise?
我正在用 moses 构建一个自动翻译器。为了提高其性能,我使用对数线性权重优化。这种技术有一个随机成分,它会稍微影响最终结果(但我不知道具体有多少)。
假设模型当前性能为25 BLEU。
假设现在我修改了语言模型(例如更改平滑),我得到了 26 BLEU 的性能。
我的问题是:我怎么知道改进是因为修改,还是只是来自随机分量的噪声?
这几乎就是统计学的全部内容。你基本上可以做以下两件事之一(从基本的一套解决方案,当然还有很多更高级的):
尝试 measure/model/quantify 随机性的影响,如果您知道是什么原因造成的,您也许能够实际计算出它对您的模型的影响程度。如果解析解不可能,你总是可以训练 20 个具有相同 data/settings 的模型,收集结果并估计噪声分布。一旦你有了这个,你就可以执行统计测试来检查改进是否具有统计显着性(例如通过方差分析测试)。
更简单的方法(但就data/time而言更昂贵)是通过平均来简单地减少方差。简而言之 - 不要训练一个模型(或评估一次模型),因为它很难确定噪声分量 - 多次执行 10、20 次,然后取平均结果。这样您就可以减少分析结果的方差。这可以(并且应该)与之前的选项结合使用 - 因为现在每个 运行 有 20 个结果,因此您可以再次使用统计睾丸来查看这些是否有显着差异。
我正在用 moses 构建一个自动翻译器。为了提高其性能,我使用对数线性权重优化。这种技术有一个随机成分,它会稍微影响最终结果(但我不知道具体有多少)。
假设模型当前性能为25 BLEU。
假设现在我修改了语言模型(例如更改平滑),我得到了 26 BLEU 的性能。
我的问题是:我怎么知道改进是因为修改,还是只是来自随机分量的噪声?
这几乎就是统计学的全部内容。你基本上可以做以下两件事之一(从基本的一套解决方案,当然还有很多更高级的):
尝试 measure/model/quantify 随机性的影响,如果您知道是什么原因造成的,您也许能够实际计算出它对您的模型的影响程度。如果解析解不可能,你总是可以训练 20 个具有相同 data/settings 的模型,收集结果并估计噪声分布。一旦你有了这个,你就可以执行统计测试来检查改进是否具有统计显着性(例如通过方差分析测试)。
更简单的方法(但就data/time而言更昂贵)是通过平均来简单地减少方差。简而言之 - 不要训练一个模型(或评估一次模型),因为它很难确定噪声分量 - 多次执行 10、20 次,然后取平均结果。这样您就可以减少分析结果的方差。这可以(并且应该)与之前的选项结合使用 - 因为现在每个 运行 有 20 个结果,因此您可以再次使用统计睾丸来查看这些是否有显着差异。