我正在用Atari的目标环境从零开始在PyTorch中实现DQN模型。经过一段时间的超参数调整后,我似乎无法获得模型来实现大多数出版物中所报告的性能(~ +21奖励;这意味着代理几乎赢得了每一次截击)。
我最近的结果如下图所示。请注意,x轴是集(完整的游戏到21),但总训练迭代是670万。

我的设置的具体内容如下:
模型
class DQN(nn.Module):
def __init__(self, in_channels, outputs):
super(DQN, self).__init__()
self.conv1 = nn.Conv2d(in_channels=in_channels, out_channels=32, kernel_size=8, stride=4)
self.conv2 = nn.Conv2d(in_channels=32, out_channels=64, kernel_size=4, stride=2)
self.conv3 = nn.Conv2d(in_channels=64, out_channels=64, kernel_size=3, stride=1)
self.fc1 = nn.Linear(in_features=64*7*7 , out_features=512)
self.fc2 = nn.Linear(in_features=512, out_features=outputs)
def forward(self, x):
x = F.relu(self.conv1(x))
x = F.relu(self.conv2(x))
x = F.relu(self.conv3(x))
x = x.view(-1, 64 * 7 * 7)
x = F.relu(self.fc1(x))
x = self.fc2(x)
return x # return Q values of each action超参数
更多信息
有没有人有过类似的经历,被困在6-9平均奖励每集这样?
任何修改超参数或算法细节的建议都将不胜感激!
发布于 2020-01-04 22:34:07
试着使用按优先顺序的体验回放。
这肯定能帮你得到更好的分数。
也可以试试batch_size更大的f. 64。(它可以改善坡度)
尝试学习速度下降(随着训练时间的推移)。(这可能有效)。
https://stackoverflow.com/questions/54371840
复制相似问题