假设我们有一个没有源代码的遗留系统,并且该系统位于用 Cobol 编写的大型机上。有没有什么方法可以使用机器学习,我们可以从输入和输出中学习可执行文件的工作方式?在我看来,做这个分析可能会导致开发一些可以替代遗留系统的 rest/soap 网络服务。
如何使用机器学习复制遗留系统?
人工智能
机器学习
2021-11-07 05:07:21
1个回答
让我们从一开始就假设输入空间太大而无法进行详尽的制表。
应用 ML 时的基本问题是,被建模的程序通常可能:
- 是离散的,即(至少部分地)对整数、布尔值或分类变量进行操作。
- 包含各种条件/循环结构(
if/while/for
等)。 - 具有影响程序其他部分(例如非局部变量)或世界状态(例如写入文件)的副作用。
这些对 ANN 等 ML 方法构成了障碍。与这些问题最直接兼容的 ML 方法是遗传编程(GP)。GP 最近专门关注现有软件系统的转换的一个专业是遗传改进 (GI)。
然而,GP/GI(或任何其他当前的 ML 技术)都不是“灵丹妙药”:
- 尽管进行了数十年的研究,GP 仍然最擅长合成相对较小的函数,当然不是整个遗留程序。
- 因为只能在程序输入空间的一个非常小的子集上进行训练,所以几乎不能保证程序会泛化到它没有被训练过的输入。
- 出于培训目的,如何正式确定副作用的成功与否?
如果程序有一个全面的测试套件,其中一些问题可以在一定程度上得到解决,但是更换整个非平凡的程序不太可能很快。替换具有良好单元测试的程序的较小部分是更现实的目标。
这是一个案例研究,展示了如何通过仅对程序二进制文件进行操作,成功地使用 GI 来修复 Apache Hadoop 实施中的错误。
其它你可能感兴趣的问题