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