关于experience rplay
1.大体介绍
经验回放(Experience Replay)是一种用于增强深度强化学习(Deep Reinforcement Learning)稳定性的技术。在经验回放中,智能体将之前的transition存储在一个经验池(Experience Pool)中,然后从中随机采样一小批transition,用于训练神经网络。这种做法有以下几个优点:
-
提高数据利用率:经验回放可以使智能体重复使用之前收集到的transition,从而提高数据利用率。
-
减少样本相关性:随机采样可以减少训练数据之间的相关性,从而提高神经网络的泛化能力。
-
平滑训练分布:经验回放可以平滑训练分布,从而减少训练过程中的方差,提高训练的稳定性。
通过经验回放技术,智能体可以更加稳定地学习到值函数或策略,并在复杂的环境中取得更好的表现。
2.重要参数
在经验回放技术中,比较重要的参数包括经验池的大小、采样批次的大小和采样策略。经验池的大小决定了可以存储多少transition,一般来说,经验池的大小应该足够大,以便智能体能够从中学习到足够多的信息。采样批次的大小决定了每次从经验池中随机采样多少transition进行训练,一般来说,采样批次的大小应该足够小,以充分利用之前收集到的transition。采样策略决定了智能体从经验池中随机采样transition的方式,一般来说,采样策略应该是均匀随机或优先级随机,以充分利用之前收集到的transition并减少训练数据之间的相关性。
3.简单实现
class ExperienceReplay:
def __init__(self, capacity):
self.capacity = capacity
self.memory = []
def push(self, transition):
if len(self.memory) < self.capacity:
self.memory.append(transition)
else:
self.memory.pop(0)
self.memory.append(transition)
def sample(self, batch_size):
return random.sample(self.memory, batch_size)
其中,ExperienceReplay类表示一个经验回放器,capacity表示经验池的容量大小,memory表示存储transition的列表。push方法用于将新的transition加入经验池中,如果经验池已满,则删除最早加入的transition;sample方法用于从经验池中随机采样一小批transition。
标题:10. 经验回放+Experience+Replay+(价值学习高级技巧+1_3)_哔哩哔哩_bilibili
网址:https://www.bilibili.com/video/BV1FM411L7QW/?p=9&vd_source=e12a6226d70520482a77d7878d59f665