PPO

Published onesixx on

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와 같은 다른 벡터화된 환경을 직접 사용할 수 있습니다.
그것은 모두 환경의 특성과 사용 중인 강화 학습 알고리즘에 따라 다릅니다.

Categories: RL

onesixx

Blog Owner

Subscribe
Notify of
guest

0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x