1

我对人工智能很感兴趣,两天前我发现了这个领域的一个有趣的最新发展,它被称为 ES-HyperNEAT,首先是 NEAT,然后是 HyperNEAT,然后是 ES-HyperNEAT。

以下是该主题的一些链接:

http://eplex.cs.ucf.edu/hyperNEATpage/

http://eplex.cs.ucf.edu/ESHyperNEAT/

所以我下载了AHNI的Java版,但是没有教程,我猜开发人员理所当然地认为它好用,但是对我来说,我不知道如何实现以下问题的解决方案,不看起来并不难,但有人可以告诉我如何开始吗?

输入看起来像这样:

   Date   ,  A  ,  B  ,  C  ,  D
2013-07-26,18.94,19.06,18.50,18.63
2013-07-25,18.85,19.26,18.55,19.04
2013-07-24,19.32,19.40,18.47,18.99
2013-07-23,20.15,20.30,19.16,19.22   <-- Predict it ? [ Output ]
2013-07-22,20.09,20.23,19.80,20.03   <-- Start Date
2013-07-19,20.08,20.48,19.76,20.02
2013-07-18,19.88,20.68,19.64,20.12
2013-07-17,19.98,20.07,19.69,19.83
2013-07-16,20.38,20.49,19.51,19.92
  ......
2013-07-02,18.19,18.20,17.32,17.69
2013-07-01,18.38,18.96,17.95,18.15   <-- End Date

程序应该从 Start Date 读取上述数据倒数 n 天到 End Date,对这些数据进行训练,正确的输出将始终是第二天的 D 值,我想知道如何用 ES-HyperNEAT 实现?

具体来说 :

[1] Which classes to call to start the process ?
[2] How to tell it which fields in the input file to gather data, in this case it can ignore the Date field, and gather data from A,B,C,D [ not normalized to 0,1 ]
[3] How to tell it the correct result is the next day's D value ?
[4] How to specify the program should start from line x at the Start Date, and get data through line y at the End Date ?

有没有类似的东西: myProgram.start(FilePath,Delimiliter,Filed2,Field3,..,Line_X,Line_Y,...) ?

4

1 回答 1

4

readme.txt(您可以在https://github.com/OliverColeman/ahni看到)包含一些关于开始您自己的实验的信息,具体请参见开发和创建新实验部分。目前没有专门用于在 AHNI 中执行时间序列预测的代码,因此您必须扩展基本适应度函数类之一(请参阅自述文件)。您的代码需要执行您询问的事情(第 2-4 点),但您可以创建一个相当通用的时间序列预测类,可以通过 .properties 文件进行配置,以指定第 2-4 点中的内容。如果你这样做了,请随意贡献它,我们会将它添加到 github 上的 AHNI 软件中:)。

AHNI 旨在作为一个研究平台来支持我自己的研究(希望还有其他人),而不是“易于使用,将通用机器学习问题 X 扔给它”类型的软件包(取决于您对“容易使用”)。我尝试保持代码干净、组织良好且 API 文档齐全,以便其他人可以使用它,但是为许多可能的用例创建一个完整的教程(和功能)超出了项目的范围(虽然我当然很乐意包含其他人编写的教程)。

在继续之前,我建议考虑以下内容:

在谷歌搜索之前关于使用 HyperNEAT 进行时间序列预测的研究时,我遇到了几年前我问过的一个问题,这个问题与我完全忘记的你的问题相似(我很惊讶地看到我的名字附在这个问题上!:) ) http://tech.groups.yahoo.com/group/neat/message/5470对这个问题的回答是对此事的深思熟虑。此外:

(ES-)HyperNEAT 旨在利用输入或输出中的几何规律(模式、相关性)(参见http://eplex.cs.ucf.edu/papers/gauci_nc10.pdf),所以一个可能值得探讨的问题是数据是否包含可以以几何方式表示的规律性(在我的问题中,我建议在 2D 平面上绘制时间序列的一些窗口,网络的 2D 输入层“看到”该窗口,类似于http 中使用的方法: //eplex.cs.ucf.edu/papers/verbancsics_gecco10.pdf . 然而,对于这类问题,使用循环网络的 NEAT 听起来可能与 HyperNEAT 一样好。

于 2013-08-04T22:23:58.380 回答