PPO
Proximal Policy Optimization(PPO)
A2C(Advantage Actor-Critic)
DummyVecEnv
‘DummyVecEnv’를 사용하면 RL 알고리즘이 환경을 수정하지 않고 병렬성을 활용할 수 있으므로 단일 사용자 지정 환경에서 온 정책 알고리즘으로 에이전트를 병렬로 훈련하려는 경우 특히 유용할 수 있습니다.
강화 학습의 알고리즘 중 on-policy methods(정책기반: PPO, A2C) 기반 알고리즘은
여러 parallelization 환경에서 동시에 작동하도록 설계되었습니다.
=> parallelization는 training process를 가속화하고 샘플 효율성을 향상시킬 수 있습니다.
custom environments나 복잡한state spaces을 가진 environments은
기본적으로 parallelization를 처리하도록 설계되지 않고, 일반적으로 한 번에 single agent와 함께 작동하도록 설계되었습니다.
‘DummyVecEnv’를 사용하면, single environment을 래핑하여 동일한 환경 배치(batch of identical environments)를 효과적으로 생성할 수 있습니다. 그렇게 함으로써 정책 내 알고리즘이 환경의 여러 인스턴스에서 병렬로 경험을 수집할 수 있습니다. 환경은 동일하지만 각 인스턴스는 독립적으로 작동하며 환경과의 상호 작용은 training 중에 별도로 유지됩니다.
import gym from stable_baselines3 import PPO from stable_baselines3.common.vec_env import DummyVecEnv # Create a single Gym environment env = gym.make('CartPole-v1') # Wrap the single environment in a DummyVecEnv to create a batch of size 1 env = DummyVecEnv([lambda: env]) # Initialize the PPO agent model = PPO("MlpPolicy", env, verbose=1) # Train the model model.learn(total_timesteps=10000)
single environmen ‘CartPole-v1’을 batch size가 1인 ‘DummyVecEnv’를 래핑
=> PPO가 이 single environmen에서 경험을 병렬로 수집하여, 더 빠른 훈련을 위해 병렬 처리를 활용할 수 있습니다.
DummyVecEnv
가 유용할 수 있지만 항상 필요한 것은 아닙니다.
기본적으로 병렬 처리를 처리하도록 설계된 특정 환경(예: Gym에서 제공하는 Atari 환경)의 경우 DummyVecEnv
를 사용하지 않고 VecFrameStack
또는 VecNormalize
와 같은 다른 벡터화된 환경을 직접 사용할 수 있습니다.
그것은 모두 환경의 특성과 사용 중인 강화 학습 알고리즘에 따라 다릅니다.