강화 학습(RL)은 에이전트가 시행착오를 통해 환경에서 행동하는 방법을 학습할 수 있는 기계 학습 방법입니다. 에이전트는 원하는 결과로 이어지는 조치를 취한 것에 대해 보상을 받거나 처벌을 받습니다. 시간이 지남에 따라 에이전트는 예상 보상을 최대화하는 조치를 취하는 방법을 배웁니다
RL 에이전트는 일반적으로 순차적 결정 문제 수학적 프레임워크를 모델링하는 MDP(Markov Decision Process)를 사용하여 교육됩니다. MDP는 네 부분으로 구성됩니다:
에이전트의 목표는 상태를 작업에 매핑하는 정책 기능을 배우는 것입니다. 정책 기능을 통해 시간이 지남에 따라 에이전트의 예상 수익을 극대화합니다.
Deep Q-learning은 심층 신경망을 사용하여 정책 기능을 학습하는 강화 학습 알고리즘입니다. 심층 신경망은 현재 상태를 입력으로 사용하고 값 벡터를 출력합니다. 여기서 각 값은 가능한 작업을 나타냅니다. 그런 다음 에이전트는 가장 높은 값을 기반으로 작업을 수행합니다.
Deep Q-learning은 값 기반 강화 학습 알고리즘으로, 각 상태-작업 쌍의 값을 학습한다는 의미입니다. 상태-작업 쌍의 값은 에이전트가 해당 상태에서 해당 작업을 수행할 때 예상되는 보상입니다.
Actor-Critic은 가치 기반과 정책 기반을 결합한 RL 알고리즘입니다. 두 가지 구성 요소가 있습니다.
Actor: 액터는 작업 선택을 담당합니다.
비평가: 배우의 행동을 평가하는 역할을 담당합니다.
배우와 평론가는 동시에 훈련을 받습니다. 행위자는 예상 보상을 최대화하도록 훈련되고 비평가는 각 상태-행동 쌍에 대한 예상 보상을 정확하게 예측하도록 훈련됩니다.
행위자-비평가 알고리즘은 다른 강화 학습 알고리즘에 비해 몇 가지 장점이 있습니다. 첫째, 더 안정적입니다. 즉, 훈련 중에 편향이 발생할 가능성이 적습니다. 둘째, 더 효율적이므로 더 빨리 배울 수 있습니다. 셋째, 확장성이 뛰어나고 상태 공간과 행동 공간이 큰 문제에 적용할 수 있습니다.
아래 표에는 Deep Q-learning과 Actor-Critic의 주요 차이점이 요약되어 있습니다.
Actor-Critic은 정책 기반 접근 방식과 가치 기반 접근 방식을 결합한 인기 있는 강화 학습 아키텍처입니다. 다양한 강화 학습 작업을 해결하는 데 강력한 선택이 되는 많은 장점이 있습니다.
기존 정책 경사 방법과 비교할 때 A2C는 일반적으로 분산 훈련 중 성능이 낮습니다. 이는 A2C가 정책 그래디언트와 가치 함수를 모두 사용하고, 그래디언트 계산의 분산을 줄이기 위해 가치 함수를 사용하기 때문입니다. 낮은 분산은 학습 과정이 더 안정적이고 더 나은 전략으로 더 빠르게 수렴할 수 있음을 의미합니다
A2C는 낮은 분산의 특성으로 인해 일반적으로 더 빠른 속도로 정책을 학습할 수 있습니다. 전략. 학습 속도가 빨라지면 귀중한 시간과 컴퓨팅 리소스가 절약되므로 이는 광범위한 시뮬레이션이 필요한 작업에 특히 중요합니다.
A2C의 가장 큰 특징은 정책과 가치 기능을 동시에 학습한다는 점입니다. 이 조합을 통해 에이전트는 환경과 작업 간의 상관 관계를 더 잘 이해할 수 있으므로 정책 개선을 더 잘 이끌 수 있습니다. 가치 함수의 존재는 정책 최적화의 오류를 줄이고 훈련 효율성을 향상시키는 데에도 도움이 됩니다.
A2C는 연속 및 이산 동작을 포함한 다양한 유형의 동작 공간에 적응할 수 있으며 매우 다재다능합니다. 이로 인해 A2C는 로봇 제어부터 게임 플레이 최적화까지 다양한 작업에 적용할 수 있는 널리 적용 가능한 강화 학습 알고리즘이 됩니다.
A2C는 멀티 코어를 최대한 활용하기 위해 쉽게 병렬화할 수 있습니다. 처리 서버 및 분산 컴퓨팅 리소스. 이는 더 짧은 시간에 더 많은 경험적 데이터를 수집할 수 있어 훈련 효율성이 향상된다는 것을 의미합니다.
배우 비평가 방법에는 몇 가지 장점이 있지만 초매개변수 조정 및 훈련의 잠재적인 불안정성과 같은 몇 가지 과제도 직면합니다. 그러나 경험 재생 및 대상 네트워크와 같은 적절한 조정 및 기술을 사용하면 이러한 문제를 크게 완화할 수 있으므로 배우 평론가가 강화 학습에서 귀중한 방법이 됩니다
panda-gym은 PyBullet 엔진을 기반으로 개발되었으며 주로 팬더 로봇 팔 주위로 도달, 밀기, 슬라이드, 선택 및 배치, 쌓기, 뒤집기와 같은 6가지 작업을 캡슐화합니다. OpenAI Fetch로.
아래 코드를 보여주기 위해 panda-gym을 예로 사용하겠습니다.
먼저 강화 학습 환경을 위한 코드를 초기화해야 합니다.
!apt-get install -y \libgl1-mesa-dev \libgl1-mesa-glx \libglew-dev \xvfb \libosmesa6-dev \software-properties-common \patchelf !pip install \free-mujoco-py \pytorch-lightning \optuna \pyvirtualdisplay \PyOpenGL \PyOpenGL-accelerate\stable-baselines3[extra] \gymnasium \huggingface_sb3 \huggingface_hub \ panda_gym
import os import gymnasium as gym import panda_gym from huggingface_sb3 import load_from_hub, package_to_hub from stable_baselines3 import A2C from stable_baselines3.common.evaluation import evaluate_policy from stable_baselines3.common.vec_env import DummyVecEnv, VecNormalize from stable_baselines3.common.env_util import make_vec_env
env_id = "PandaReachDense-v3" # Create the env env = gym.make(env_id) # Get the state space and action space s_size = env.observation_space.shape a_size = env.action_space print("\n _____ACTION SPACE_____ \n") print("The Action Space is: ", a_size) print("Action Space Sample", env.action_space.sample()) # Take a random action
강화 학습을 최적화하는 좋은 방법은 입력 특성을 정규화하는 것입니다. 래퍼를 통해 입력 특성의 실행 평균과 표준 편차를 계산합니다. 또한norm_reward = True
env = make_vec_env(env_id, n_envs=4) env = VecNormalize(env, norm_obs=True, norm_reward=True, clip_obs=10.)
Stable-Baselines3 팀
model = A2C(policy = "MultiInputPolicy",env = env,verbose=1)
model.learn(1_000_000) # Save the model and VecNormalize statistics when saving the agent model.save("a2c-PandaReachDense-v3") env.save("vec_normalize.pkl")
from stable_baselines3.common.vec_env import DummyVecEnv, VecNormalize # Load the saved statistics eval_env = DummyVecEnv([lambda: gym.make("PandaReachDense-v3")]) eval_env = VecNormalize.load("vec_normalize.pkl", eval_env) # We need to override the render_mode eval_env.render_mode = "rgb_array" # do not update them at test time eval_env.training = False # reward normalization is not needed at test time eval_env.norm_reward = False # Load the agent model = A2C.load("a2c-PandaReachDense-v3") mean_reward, std_reward = evaluate_policy(model, eval_env) print(f"Mean reward = {mean_reward:.2f} +/- {std_reward:.2f}")
"panda-gym"에서는 Panda 로봇팔과 GYM 환경의 효과적인 결합을 통해 로컬에서 로봇팔에 대한 강화학습을 쉽게 수행할 수 있습니다.
Actor-Critic The Architecture 희소 보상 함수(결과가 바이너리인 경우)와 달리 에이전트가 각 시간 단계에서 점진적인 개선을 수행하는 방법을 학습하는 경우 Actor-Critic 방법이 이러한 유형의 작업에 특히 적합합니다.
정책 학습과 가치 추정을 완벽하게 결합함으로써 로봇 에이전트는 로봇 팔 엔드 이펙터를 능숙하게 조작하고 지정된 목표 위치에 정확하게 도달할 수 있습니다. 이는 로봇 제어와 같은 작업에 대한 실용적인 솔루션을 제공할 뿐만 아니라 민첩하고 정보에 입각한 의사 결정이 필요한 다양한 분야를 변화시킬 수 있는 잠재력을 가지고 있습니다
위 내용은 Panda-Gym의 로봇팔 시뮬레이션을 이용한 Deep Q-learning 강화학습의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!