使用机器学习来预测复杂系统的崩溃和稳定?

Lou*_*ato 5 artificial-intelligence machine-learning data-mining pattern-matching fuzzy-logic

我过去3个月一直在研究模糊逻辑SDK,它已经到了我需要开始大量优化引擎的地步.

与大多数基于"实用"或"需要"的AI系统一样,我的代码通过在世界各地放置各种广告,将所述广告与各种代理的属性进行比较,并相应地"基于每个代理"对广告进行"评分"来工作.

反过来,这会为大多数单一代理模拟生成高度重复的图形.但是,如果考虑到各种代理,则系统变得非常复杂并且使我的计算机难以模拟(因为代理可以在彼此之间广播广告,创建NP算法).

下图:针对单个代理的3个属性计算的系统重复性示例:

上:根据3个属性和8个代理计算的系统示例:

EXP-系统

(在开始时折叠,并在之后不久恢复.这是我能够生成的最适合图像的示例,因为恢复通常非常慢)

从两个示例中可以看出,即使代理计数增加,系统仍然是高度重复的,因此浪费了宝贵的计算时间.

我一直在尝试重新构建程序,以便在高重复性期间,更新功能仅连续重复线图.

虽然我的模糊逻辑代码当然可以提前预测计算系统的崩溃和/或稳定性,但它对我的CPU极为不利.我正在考虑机器学习是最好的选择,因为似乎一旦系统初始设置被创建,不稳定时期总是看起来大致相同(但它们出现在"半")随机时间.我说半,因为它通常很容易通过图表上显示的不同模式注意到;但是,就像不稳定的长度一样,这些模式从设置到设置都有很大差异).

显然,如果不稳定期间的时间长度相同,一旦我知道系统何时崩溃,它很容易弄明白何时会达到平衡.

在关于该系统的附注中,并非所有配置在重复期间都是100%稳定的.

图中非常清楚地显示:

例外

因此,机器学习解决方案需要一种方法来区分"伪"折叠和完全折叠.

使用ML解决方案的可行性如何?任何人都可以推荐任何最适合的算法或实现方法吗?

至于可用资源,评分代码根本不能很好地映射到并行体系结构(由于代理之间的纯粹互连),所以如果我需要专门用一个或两个CPU线程来进行这些计算,那就这样吧.(我不想使用GPU,因为GPU正在与我的程序中不相关的非AI部分征税).

虽然这很可能没有什么区别,但代码运行的系统在执行期间还剩下18GB的RAM.因此,使用可能高度依赖数据的解决方案肯定是可行的.(虽然除非必要,我宁愿避免它)

小智 2

是的,我也不确定 StackExchange 上是否有更好的地方来讨论这个主题,但我会尝试一下,因为我在这方面有一些经验。

\n\n

这是控制系统工程中经常遇到的问题。它通常被称为黑盒时间序列建模问题。它\xe2\x80\x99是一个\xe2\x80\x9c黑盒子\xe2\x80\x9d,从某种意义上说,你不\xe2\x80\x99知道\xe2\x80\x99到底里面是什么。你给它一些输入,你可以测量一些输出。给定足够数量的数据、足够简单的系统和适当的建模技术,通常可以近似系统的行为。

\n\n

许多建模技术都围绕着获取一定数量的过去输入和/或测量值,并尝试预测下一次测量值。这通常称为自回归模型

\n\n

根据您尝试建模的系统的复杂性,非线性自回归外生模型可能是更好的选择。这可以采用神经网络或径向基函数的形式,它再次将过去的 n 个测量值作为输入,并给出下一个测量值的预测作为输出。

\n\n

查看您的数据,应用类似的技术,可以轻松构建振荡行为的简单模型。关于塌陷或伪塌陷建模,我认为这可以通过使用足够复杂的模型来捕获,但可能会更困难。

\n\n

因此,让\xe2\x80\x99s 举一个简单的例子来尝试说明如何构建某种振荡行为的自回归模型。

\n\n

对于系统,我们\xe2\x80\x99将采用一个具有一定频率的简单正弦波,并添加一些高斯噪声。这可以通过测量表示如下X, 某个频率欧米茄和高斯噪声\\phi在某个离散的时间点 k。

\n\n

x_k = sin(\\omega t_k) + \\phi_k

\n\n

使用它,我们可以生成几秒钟数据的测量结果。这样,我们就构建了一个由 2 个数组组成的数据集。第一个包含历史测量值集G对于任何时间步长和包含任何给定时间步长的测量值的第二个H

\n\n

如果我们使用维基百科文章中的线性模型,则参数乙然后可以使用线性最小二乘法通过线性回归找到自回归模型。

\n\n

H=GB

\n\n

b = (G^TG)^{-1}G^TH

\n\n

直接将该模型的结果与数据集进行比较,很容易获得这个玩具问题的准确结果。如果只需要预测未来的一步,并且在进行下一次预测之前再次收集实际测量值,则预测中的误差不会累积。这有时称为进行开环预测。

\n\n

AR 模型的开环预测

\n\n

闭环预测是指您只为模型提供一次初始测量。之后,您可以使用自己的预测作为后续预测的输入。预测中的噪声可能会累积,从而导致长期预测不准确。虽然这些长期预测可能不准确,但这并不意味着结果不会相似或足够好。我玩了一下上面的玩具系统,我的闭环预测往往会低估幅度,并且经常导致正确频率的衰减振荡。

\n\n

AR模型的闭环预测

\n\n

如果出现此类问题,您可以添加更多历史样本作为模型的输入,为其提供更多训练数据或使用更加非线性的模型。

\n\n

在上述玩具问题中,仅对一个值进行建模。在您的图表中,似乎有来自代理的多个数据“渠道”,并且它们以某种方式相互交互。要对此行为进行建模,您可以将每个通道的 n 个历史值作为模型的输入,并将输出作为每个通道的预测。

\n\n

如果我可以以某种方式澄清这一点以更好地解决您的问题,请告诉我。如果有兴趣的话,我也可以分享我在玩具问题上使用的 matlab 代码。

\n