对于训练,我随机生成一个形状N的网格,其值为0和1.有两个动作被定义为[0,1],我想教一个策略使用DQN在下一个数字为1时采取行动0并采取行动1当数组中的下一个数字为0时。
我正在使用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]
考虑我们只移动到数组的右侧:下一步应该采取VALID操作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个小时的训练,它也可以更好地预测变化!