0

我已经采用了 PPO 算法的一些参考实现,并正在尝试创建一个可以玩太空入侵者的代理。不幸的是,从第 2 次试验开始(在第一次训练演员和评论家 N 网络之后),动作的概率分布仅收敛于动作,并且 PPO 损失和评论家损失仅收敛于一个值。

想了解这可能发生的可能原因。我真的不能在我的云虚拟机中运行代码,因为我不能确定我没有遗漏任何东西,因为虚拟机的使用成本很高。我将不胜感激这方面的任何帮助或建议。如果需要,我也可以发布代码。使用的超参数如下:

clipping_val = 0.2critic_discount = 0.5 entropy_beta = 0.001 gamma = 0.99 lambda = 0.95

4

1 回答 1

0

原因之一可能是您没有在 [0,1] 范围内对 CNN 的输入进行归一化,从而使您的神经网络饱和。我建议您在代码中使用 preprocess() 函数将您的状态(输入)转换为网络。

def preprocess(self,img):
    width = img.shape[1]
    height = img.shape[0]
    dim = (abs(width/2), abs(height/2))
    resized = cv2.resize(img,(80,105) ) #interpolation = cv2.INTER_AREA)
    resized = resized/255.0 # convert all pixel values in [0,1] range
    resized = cv2.cvtColor(resized, cv2.COLOR_BGR2GRAY)
    resized = resized.reshape(resized.shape+(1,))
    return resized
于 2020-05-06T06:24:37.597 回答