关于clip与gaussian噪声的疑问
Created by: kosoraYintai
看了一下DDPG与PPO例子,有两个细节不太清楚。
1、无论是DDPG还是PPO,都采取了"train阶段加clip和action_mapping,而test阶段只加action_mapping"的方式,代码如下所示:
#train
action = agent.policy_sample(obs)
action = np.clip(action, -1.0, 1.0)
action = action_mapping(action, env.action_space.low[0],
env.action_space.high[0])
#test
action = agent.policy_predict(obs)
action = action_mapping(action, env.action_space.low[0],
env.action_space.high[0])
由于agent和model层并未进行action的clip,这样能保证test阶段action的预测值在(-1.0,1.0)之间吗?如果不能保证,直接action_mapping会不会有偏差?
2、DDPG与PPO加高斯噪声的时机不一样。 DDPG在模型之外加的噪声:
# Add exploration noise, and clip to [-1.0, 1.0]
action = np.clip(np.random.normal(action, 1.0), -1.0, 1.0)
action = action_mapping(action, env.action_space.low[0],
env.action_space.high[0])
PPO在模型内部加的噪声:
def sample(self, obs):
means, logvars = self.policy(obs)
sampled_act = means + (
layers.exp(logvars / 2.0) * # stddev
layers.gaussian_random(shape=(self.act_dim, ), dtype='float32'))
return sampled_act
这两种不同的策略是微调出来的经验,还是都可以使用?另外,直接在model层对于action进行fluid.clip(action,low,high)的方式是不是也可以?