【发布时间】:2023-03-29 16:07:01
【问题描述】:
我正在编写一个用于玩两人纸牌游戏的多层感知器神经网络。我想知道是否有比使用随机重新生成的权重测试神经网络更好的方法来优化权重。
这是我实现神经网络的方式。
- 第一层中的神经元输出字段值,表示牌组中纸牌的状态。对于这些神经元中的每一个,都有一组恒定权重。例如,如果卡片在 AI 手中,则神经元输出等于数组中第一个权重的字段,如果卡片在桌子上 - 第二个,依此类推。这些恒定的输入权重需要在训练过程中进行优化。
- 接下来,有几个隐藏的神经元层。拓扑是固定的。前一层的所有神经元都连接到下一层的每个神经元。连接的权重需要优化。
- 最后一层神经元代表玩家的动作。这些对应于可以打出的牌,以及一些非特定于牌的动作,例如从桌上拿牌或结束回合。与合法动作对应的最大输出字段值决定了要播放的动作。
有一个警告。我希望神经网络找到最佳策略,所以我不能在单独的回合中训练它。相反,我必须让它玩,直到它赢或输,这大约是 50 回合。 我想知道在这种情况下最好的训练方法是什么,在这种情况下,人们不知道每一轮的正确响应,但只知道在多次 NN 评估后问题是否正确解决,即它赢得了比赛。
目前,我只想到了一种简单的进化方法,其中一组随机生成的 NN 多次相互对抗,并且一些最成功的 NN 留在下一轮,其中没有的 NN t pass 被其他随机的替换。我看到的问题是,在这种方法中,权重开始收敛需要很长时间。但是由于获胜的分数是许多权重的函数(我预计需要数百个才能正确建模问题),这些权重对 NN 输出具有高度非线性影响,所以我不知道如何使用函数最小化技术。
有谁知道这个权重优化问题是否会比蒙特卡洛技术更适用于其他任何问题?
【问题讨论】:
标签: machine-learning neural-network mathematical-optimization evolutionary-algorithm