网络在形状为 N 的网格上训练良好,但在评估任何变化时都失败了

Network trains well on a grid of shape N but when evaluating on any variation fails

为了进行训练,我随机生成了一个形状为 N 且包含值 0 和 1 的网格。 定义了两个动作 [0,1],我想使用 DQN 教授一个策略,当下一个数字为 1 时采取动作 0,并在数组中的下一个数字为 0 时采取动作 1。

我正在使用 DQN,使用 Keras 创建我的网络

Example :
N=11
grid=[ 0,1,0,1,1,1,1,0,0,0,0]
Agent mark = 0.5
start point=0
current state =[ 0.5,1,0,1,1,1,1,0,0,0,0]
action=[0,1]

假设我们只移动到数组的右边: 下一步应采取有效操作 0,从而导致以下状态:

Next state=[ 0,0.5,1,0,1,1,1,1,0,0,0]

这是通过经验回放强制执行的。 它训练得很好,我达到了 100% 的胜率(通过连续解决同一个迷宫 10 次来计算。 现在是时候根据这个网格的变化来评估它了:

[0,0,0,0,1,0,1,1,0,1,0]

开始
[0.5,0,0,0,1,0,1,1,0,1,0] 

网络无法预测正确的有效动作,在本例中为 1。

我的网络是这样的:

Dense
Relu
Dense
Relu
Dense (number_of_actions)

它学会了通过更多训练更好地预测。第一次评估是在训练 8 小时后进行的。经过将近 36 小时的训练后,它也能更好地预测变化!