我已经实现了DoodleJump,并希望AI通过Q-Learning学习它。人工神经网络和整个Q学习过程也已经实现。
但是到目前为止,它似乎无法正常工作。我非常确定,其原因在于奖励系统或输入要素工程(也许两者都有)。
所以我的问题是:奖励代理商的一种好方法是什么?我应该给人工神经网络哪些输入?
我的方法是:
奖励系统:
输入:
1.0/d
整个输入数组:
input = [velocity, distance first direction, distance second direction, …, distance 8. direction]
所以我经常有这样的输入:
[-0.2 0. 0. 0. 0. 0. 0.25 0. 0. ]
[0.4 0. 0. 0. 0. 0. 0. 1. 0. ]
[0.6 0.14285714 0. 0. 0. 0.11111111 0. 0. 0. ]
但是,就像我说的那样,它不起作用。
(为防止NaN,我在这里将y
设置为0
,所以问题不在于Q值升至无穷大)
这是我的模特:
model = Sequential()
model.add(Dense(9))
model.add(Activation('relu'))
model.add(Dense(6))
model.add(Activation('relu'))
model.add(Dense(3))
model.add(Activation('linear'))
model.compile(loss='mse',
optimizer=Adam(),
metrics=['mae'])
答案 0 :(得分:0)
不是直接的解决方案,而是一种解决方法:
我现在尝试了一种不同的方法,在有监督的学习下进行了尝试-绝对成功。这就像一种魅力。