动作噪声

stable_baselines3 库主要提供了 NormalActionNoiseOrnsteinUhlenbeckActionNoise 这两种噪声类,这两种噪声已经覆盖了强化学习中最常见的需求。通常,NormalActionNoise 用于添加独立并且相同分布(i.i.d)的高斯噪声,而 OrnsteinUhlenbeckActionNoise 则是为动作序列提供时间相关性的噪声。

然而,如果这两种类型的噪声无法满足您的需求,您可以自定义噪声生成类。自定义的噪声生成类应该实现 __call__ 方法,当每次调用该对象时,它应返回一组新的噪声值。

例如,如果您想使用均匀分布的噪声,可以创建如下的噪声类:

1
2
3
4
5
6
7
8
9
10
class UniformActionNoise:
def __init__(self, low, high):
self.low = low
self.high = high

def __call__(self):
return np.random.uniform(self.low, self.high)

def reset(self):
pass

在这个例子中,每当这个对象被调用,它都会从一个均匀分布中抽样一个新的噪声值。注意到 reset 方法在这个例子中并没有实际的功能,但它是必须存在的,因为在模型中可能会在某些时间调用它。如果在你的自定义噪声中,reset 方法有其特定的功能,你可以在里面添加相应的实现。