我在做这个游戏:https://bot.generals.io/ 的强化学习bot,算法采用了PPO,神经网络用的是CNN,但是怎么train都不怎么起作用,哪位大佬能告诉我问题出在哪?
这个环境大概就是:有一个地图,大概长成这个样子,不一定每次都一样,随机生成的
然后对于每个回合,general(也就是王冠)会产出1个士兵,每个回合可以采取的动作是将你拥有的土地上的兵移动到相邻一格(如果这一格只有1个士兵,那么无法移动,因为每一格至少有1士兵),如果不是自己的,这块的兵扣掉占领所需的兵力(这块地上的当前敌对兵力),如果是自己的,那么将兵移动过去。山是障碍物,塔也可以每回合产出1兵,其实空地也可以,但是速度很慢。每个玩家相互争夺土地,被别人占领了general的玩家死亡,直到最后有一个玩家胜利。
这个问题涉及无效动作的问题,因为维护一个可变的动作空间很麻烦,所以动作空间是任意一格移动到它相邻的一格。我给无效的动作设置了一个比较大的负奖励,但是在训练过程中发现,无论怎么训练,agent总是学习不到怎么做出有效的动作,我应该对哪里做出修改?是网络结构还是算法?是不是解决这种问题需要MCTS之类的
现在用的神经网络是4层卷积+2层全连接