使用有限的计算资源进行机器学习

时间:2016-12-10 01:16:33

标签: machine-learning neural-network artificial-intelligence evolutionary-algorithm

我即将开始编程竞赛,我们正在设计人工智能播放器以相互竞争。我们的代码结构使得我们可以从总部生成单个单元,这些单元可以执行某些操作并在某些规则下进行交互。为简单起见,我将详细介绍特定代理A,它具有以下输入和操作:

Agent A:

Inputs: Position, Surrounding Tiles, Radio Message

Actions: Move, Attack, Build, Mine Resources, Broadcast Radio

无线电是指可以向其他代理广播的整数信号。这是单位实际可以做的简化版本,但问题仍然是相同的。

这个问题有一个关键的限制因素,即每个代理都有有限的周期来执行计算以确定其策略。我真的想尝试在确定优化策略时实现某种机器学习,但是像输入空间上的神经网络(可能是相对高维的)这样的结构会导致计算过于复杂。换句话说,我不能简单地让每个代理都有自己的神经网络,通过某种遗传算法进行训练,(矩阵乘法操作太昂贵)。其他竞争者正在手工设计他们的特工并给他们一套简单的条件以确定行动(例如,如果敌人靠近,远离敌人)。

所以我的问题是,如果有人建议实施简化形式的行为,那么它仍然能够尝试不同的策略,而不需要硬编码条件语句,也不需要服用要求大量的计算资源。换句话说,有没有办法为给定的输入空间生成有限的动作规则列表,以便规则集可以任何有意义的方式训练?

对不起,如果这个问题有点模棱两可或不清楚;如果对我到底意味着什么有任何疑问,我非常愿意指定其他细节。谢谢!

1 个答案:

答案 0 :(得分:0)

这对我来说就像麻省理工学院的BattleCode竞赛一样,这是正确的吗?我曾经为2014年版的代理商工作过(虽然比实际竞争时间晚得多,没有参与或类似的事情),至少在那一年,计算限制确实非常有限;所以限制几乎任何在线算法都可以立即抛出窗口。

从理论上讲,您可以随时查看算法,例如蒙特卡罗树搜索,理论上可以随时停止并返回结果,其中结果的质量随着处理时间的增加而增加。但是,在这种情况下,你可能必须尽早终止这个过程,以至于它也不会给出有意义的输出。

如果您真的想要使用机器学习方法,我可能建议在使用时使用最便宜的型号,我认为这将是决策树或规则学习系统。您需要一个包含各种游戏状态的大型数据集,以及“正确的”#39;''为了训练这样的系统,他们会在这些情况下发挥作用。您是否可以访问此类数据集,或者您是否考虑过如何生成它? (请注意,这也是神经网络的一个问题。)