建议实施深度强化学习算法

时间:2019-07-22 08:46:22

标签: python keras reinforcement-learning

我正在尝试针对以下问题实施深度强化学习算法: 我有一个简单的足球模拟器:点球大战游戏(2D)。 强化学习者是踢腿者,他必须学习如何得分。踢手可以使球绕120度(-60°; + 60°)旋转。 在第一个版本中,射门的力量是恒定的,守门员不会移动。守门员的位置在-50到+50之间。 然后,代理的作用是在-60°和+ 60°之间选择一个位置。 作为环境信息,座席将获得守门员的位置。 射击后,特工会得到奖励。

我正在使用Keras。 我不使用CNN,目的是仅使用数值数据(射击角度,守门员位置,奖励)

我创建了一个模型:

model = Sequential()
model.add(Dense(1, input_dim=1, activation='relu'))
model.add(Dense(10, activation='relu'))
model.add(Dense(1, activation='linear'))
model.compile(loss='mse', optimizer='adam')

第一层的尺寸为1,因为环境只有一个输入:守门员位置。 我任意选择第二个大小为10的图层。 输出层的尺寸为1,因为只有一个输出,代理的一种可能动作是射击角度。

对于输入和输出层,是否正确? RL算法是否可以返回例如-60至+60(或0至120)之间的值?还是我可以使用大小为100的输入层(每个可能的位置一个节点)和大小为120的输出层(每个可能的角度一个节点)?

每次拍摄后,我都更新了模型:

model.fit([0], reward, epochs=1, verbose=0)
predict = model.predict([0, 1])

在fit命令中,“ [0]”是守门员的位置,“奖励”是最后获得的奖励。 在预测命令中,我不能只为门将的位置写“ [0]”(我有执行错误),我必须写“ [0,1]”。 1代表什么都没有...

请帮助我实施这种深度强化学习算法?

1 个答案:

答案 0 :(得分:0)

输入层形状和输出层形状可以为1,就像您都是一维的情况一样。

对于输出,您可以使用连续动作模型,例如DDPGSAC,其中输出可以在-60°到+ 60°范围内。

您也不像问题中给出的代码片段那样适合奖励和状态。 我建议您在实施强化学习理论之前先进行研究。

通常,如果使用Q学习方法,则可以拟合目标Q值和预测Q值。如果使用基于策略的方法,则根据正在实施的算法的梯度更新规则来更新网络的参数。