2
神经网络的输入/输出编码,以学习基于网格的游戏
我正在写一个简单的玩具游戏,目的是在其上训练深层神经网络。游戏规则大致如下: 游戏的棋盘由六边形单元组成。 两位玩家都拥有相同的棋子集合,他们可以选择自由放置在棋盘上。 根据彼此的位置和配置放置不同类型的棋子奖励积分(或减少对手的积分)。 得分更高的人获胜。 还有其他规则(关于转弯,件数和类型等),但是在此问题中它们并不重要。我想设计一个深度神经网络,该网络可以通过与自身竞争来反复学习。我的问题是关于输入和输出的表示。尤其是: 由于碎片的模式很重要,所以我一直认为至少要有一些卷积层。电路板可以有各种尺寸,但原则上非常小(在我的测试中为6x10,可以通过几个单元进行扩展)。是否有意义?我可以使用哪种池? 如何代表双方?在这篇关于go的论文中,作者使用了两种输入矩阵,一种用于白宝石,另一种用于黑宝石。在这种情况下也可以工作吗?但是请记住,我有不同类型的片段,例如A,B,C和D。我应该使用2x4输入矩阵吗?对我来说,它似乎很稀疏,效率很低。我担心卷积层将无法正常工作。 我认为输出结果可能是代表董事会位置的矩阵上的概率分布,以及指示要播放的部分的概率单独数组。不过,我也需要代表的能力通过交替之际,这是非常重要的。如何在不降低其在其他概率中的重要性的情况下做到这一点? 而且最重要的是,我是否只强制执行获胜举动还是执行失举?实施获胜的举动很容易,因为我只是将所需的概率设置为1。但是当失败时,我该怎么办?将该移动概率设置为0,将所有其他概率设置为相同值?另外,即使最终得分差异与输出的含义相违背,通过最终得分差异实施移动是否有意义? 另外,我在node.js中开发了游戏引擎,并考虑将Synaptic用作框架,但是我不确定它是否可以与卷积网络一起工作(我怀疑是否有办法固定与本地感知领域相关的权重)。关于与节点兼容的其他库的任何建议?