我需要使用强化学习来教神经网络棋盘游戏的策略。我选择 Q-learning 作为特定的算法。
我希望神经网络具有以下结构:
- 层 -
rows * cols + 1
神经元 - 输入 - 棋盘上连续字段的值(0
为空,1
或2
代表玩家),该状态下的动作(自然数) - 层 - (??) 神经元 - 隐藏
- 层 - 1 神经元 - 输出 - 给定状态下的动作值(浮点数)
我的第一个想法是从创建状态、动作和价值观的地图开始,然后尝试教授神经网络。如果教学过程不成功,我可以增加神经元的数量并重新开始。
但是,我很快遇到了性能问题。首先,我需要从简单的内存 Python 切换dict
到数据库(没有足够的 RAM)。现在数据库似乎是一个瓶颈(简单地说,有太多可能的状态,以至于检索动作值需要相当长的时间)。计算需要数周时间。
我想可以即时教授神经网络,而中间没有地图层。但是我如何在隐藏层上选择正确数量的神经元呢?我怎么知道我正在丢失大量保存(学习)的数据?