我正在尝试在 Keras/TF 中实现一个深度 Q 网络,该网络学习玩扫雷(我们的随机环境)。我注意到,无论是小板还是大板,智能体都能很好地玩游戏。但是,它仅在每个游戏的地雷布局相同时才会收敛/学习。也就是说,如果我在游戏之间随机化地雷分布,代理什么也学不到 - 或接近它。我尝试使用各种网络架构和超参数,但无济于事。
我尝试了很多网络架构,包括:
- 网络的输入是整个棋盘矩阵,如果未显示,则单个单元格的值为 -1,如果显示,则为 0 到 8。
- 网络的输出也是代表点击每个单元的可取性的整个板。
- 尝试了完全连接的隐藏层(宽和深)。
- 尝试了卷积隐藏层(尝试堆叠它们,使用不同的内核大小、填充等)。
- 也尝试在隐藏层之后添加 Dropout。
DQN 是否适用于每集都会改变的环境,还是我从错误的角度处理了这个问题?
似乎无论网络架构如何,代理都不会学习。非常感谢任何输入。如果您需要任何代码或进一步的解释,请告诉我。