使用模拟来训练 ML 算法

数据挖掘 分类 异常检测 模拟
2021-10-13 03:21:50

可能类似的问题:是否可以使用算法收集数据来训练另一个?

我有一个模型可以准确地描述一个底层的物理复杂系统。该模型基本上是一组基于系统物理特性的 ODE,并针对测量进行了验证。当系统发生扰动时,我可以运行数千次模拟来评估新系统状态是否安全。这基本上是一个分类程序(是/否)。

这个过程非常耗时并且必须实时执行(因此需要巨大的计算资源)。有数千种可能的扰动和无限数量的初始点。从一个初始点开始的相同扰动会导致系统稳定,而从另一个初始点开始,系统会变得不稳定。

我的问题是:

是否可以使用大量模拟生成的数据来训练分类算法以在线执行此检测?使用模拟数据来训练一个算法,然后将其与真实数据一起在线使用时,有哪些考虑因素(显然模拟需要非常非常准确)?对此类示例的任何引用?

如果这是一个基本问题,我深表歉意。我是数据科学技术的新手,具有更多的物理/工程背景。

1个回答

是否可以使用大量模拟生成的数据来训练分类算法以在线执行此检测?

是的,当您标记了iid训练数据时,始终可以训练分类算法,并且没有理由不能使用模拟器来生成分类算法。

在尝试之前很难说这样一个训练有素的模型是否适合目的。

使用模拟作为数据源有一些好处:

  • 生成更多的训练和测试数据很简单。

  • 您将自动拥有高质量的真实标签(假设您的目标是匹配模拟)。

  • 如果您发现某些参数值存在问题,则可以在收集更多训练数据时针对它们。

就像从现实世界测量中获取的数据一样,您需要测试您的结果以了解您的模型的准确性。

使用模拟数据来训练一个算法,然后将其与真实数据一起在线使用时,有哪些考虑因素(显然模拟需要非常非常准确)?

  • 您的模型是一个函数逼近器。充其量它会匹配模拟器的输出。在实践中,它通常会在一定程度上达不到它。您必须通过测试模型来衡量这种差异,并确定偶尔的假阴性或假阳性的成本是否会被性能改进所抵消。

  • 统计机器学习模型在数据点之间进行插值时表现最好,而在外插时往往表现不佳。因此,当您说输入可以无限变化时,希望那是在实际值的某些受限参数空间内,而不是获得与您之前考虑的任何东西完全不同的输入 - 模拟将处理这样的输入,但统计数据 -基于函数逼近器很可能不会。

  • 如果您的模拟具有类别快速切换且参数值变化很小的区域,那么您将需要在这些区域进行密集采样。

  • 如果您的模拟在任何区域产生近乎混沌的行为(类值变化很大,并且对一个或多个参数值的微小变化高度敏感),那么这是很难近似的。

  • 如果您有一些自然比例因子、无量纲数或其他易于计算的物理系统行为摘要,则可能值得将其用作工程特征,而不是让机器学习代码从统计上计算出来。例如,在流体动力学中,雷诺数可以表征流动,并且可能是神经网络预测涡旋脱落的有用特征。

对此类示例的任何引用?

我在这里找到的示例是关于流体模拟和其他复杂物理系统的渲染,在这些系统中可以逼近完整的模拟,并且它们都使用神经网络来实现比完整模拟的速度提高。

但是,我认为这些都不是分类器。