이 기사는 Huawei 클라우드 커뮤니티 " MindSpore 강화 학습: HalfCheetah-v2 환경에서 PPO를 사용한 교육 ", 저자: irrational에서 공유되었습니다.
Half Cheetah는 P. Wawrzyński가 "A Cat-Like Robot Real-Time Learning to Run"에서 제안한 MuJoCo 기반의 강화 학습 환경입니다. 이 환경의 하프치타는 9개의 링크와 8개의 관절(발톱 2개 포함)로 구성된 2D 로봇입니다. 이 환경에서 목표는 관절에 토크를 적용하여 치타가 가능한 한 빨리 앞으로(오른쪽으로) 달리도록 만드는 것입니다. 이동 거리에 따른 긍정적 보상과 뒤로 이동하면 부정적인 보상이 제공됩니다. 치타의 몸통과 머리는 고정되어 있으며 앞뒤 허벅지, 종아리, 발에만 토크를 가할 수 있습니다.
행동 공간은 Box(-1, 1, (6,), float32)
각 행동이 링크 사이의 토크를 나타내는 공간입니다. 관찰 공간에는 치타의 다양한 신체 부위의 위치 및 속도 값이 포함되어 있으며, 모든 위치 값이 먼저 오고 모든 속도 값이 뒤따릅니다. 기본적으로 관찰에는 치타 질량 중심 x 좌표가 포함되지 않으며 exclude_current_positions_from_observation=False
빌드 시 이를 전달하여 포함할 수 있습니다. 포함된 경우 관찰 공간은 18차원을 갖게 되며, 여기서 첫 번째 차원은 치타 질량 중심의 x 좌표를 나타냅니다.
보상은 두 부분으로 나뉜다: 전방 보상과 통제된 비용. 순방향 보상은 행동 전후의 x좌표 변화를 기준으로 계산되며, 제어 비용은 과도한 행동을 한 치타를 처벌하는 비용입니다. 총 보상은 순방향 보상에서 제어 비용을 뺀 값입니다.
각 상태는 무작위성을 높이기 위해 상태(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0)에 노이즈를 추가하는 것으로 시작됩니다. 처음 8개 값은 위치 값이고 마지막 9개 값은 속도 값입니다. 위치 값은 균일한 노이즈를 추가하는 반면, 초기 속도 값(모두 0)은 표준 일반 노이즈를 추가합니다.
에피소드 길이가 1000을 초과하면 에피소드가 잘립니다.
이 환경에 대한 자세한 내용은 https://www.gymlibrary.dev/environments/mujoco/half_cheetah/에서 확인할 수 있습니다.
이는 많은 환경보다 더 복잡합니다.
하지만 상관없습니다. 강화 학습은 물론 대규모 언어 모델까지 실행할 수 있는 ppo 알고리즘이 있습니다.
PPO(Proximal Policy Optimization) 알고리즘은 강화학습을 위한 정책 최적화 방법으로, TRPO, Trust Region Policy Optimization 등의 전통적인 정책 경사 방법에서 신뢰 영역 문제를 해결하도록 설계되었습니다.
PPO 알고리즘은 기울기를 계산할 때 분산을 줄이기 위해 클리핑 기법과 중요도 샘플링 기법을 도입하여 알고리즘의 수렴 속도와 안정성을 향상시킵니다.
PPO 알고리즘에는 두 가지 주요 개념이 있습니다.
- 정책 (Policy ) : 정책은 주어진 상태 s에 따라 조치를 취할 확률 분포를 정의하는 함수입니다.
- 가치함수(Value Function) : 가치함수는 상태 s에서 시작하여 주어진 전략에 따라 특정 상태 또는 터미널에 도달할 때 얻을 수 있는 기대 수익을 추정합니다.
PPO 알고리즘의 주요 단계는 다음과 같습니다.
- 샘플링 : 상태, 행동, 보상 및 다음 상태를 포함하여 현재 전략에서 데이터를 샘플링합니다.
- 목표 계산 : 목표 전략을 사용하여 목표 가치 함수를 계산하고 목표 전략의 KL 발산을 계산합니다.
- 업데이트 정책 : 중요도 샘플링 기술 및 클리핑 기술을 사용하여 정책을 업데이트합니다.
- 가치함수 업데이트 : 정책 기울기 방법을 사용하여 가치함수를 업데이트합니다.
PPO 알고리즘의 핵심 아이디어는 전략과 가치 기능을 교대로 업데이트하여 전략과 가치의 공동 최적화를 달성하는 것입니다. 이 방법은 기울기를 계산할 때 분산을 효과적으로 줄이고 알고리즘의 수렴 속도와 안정성을 향상시킬 수 있습니다.
다음은 PPO 알고리즘에 대한 단순화된 마크다운 공식입니다.
# 근접 정책 최적화(PPO) 알고리즘 ## 1. 샘플링 상태 $s$, 행동 $a$, 보상 $r$ 및 다음 상태 $s'$를 포함하여 현재 정책의 데이터를 샘플링합니다. ## 2. 목표 계산 객관적인 정책을 사용하여 객관적인 가치 함수를 계산하고 객관적인 정책의 KL 발산을 계산합니다. ## 3. 정책 업데이트 중요도 샘플링 기술과 클리핑 기술을 사용하여 전략을 업데이트합니다. ## 4. 값 기능 업데이트 정책 그래디언트 방법을 사용하여 가치 함수를 업데이트합니다. ## 전략과 가치의 공동 최적화를 달성하려면 1~4단계를 반복합니다.
이 공식은 실제로 단순화된 버전입니다. PPO 알고리즘에는 경험 재생, 학습 속도의 동적 조정 등과 같은 다른 많은 세부 정보도 포함되어 있습니다.
인수 가져오기 우리를 수입하다 Mindpore 가져오기 컨텍스트에서 Mindpore에서 dtype을 mstype으로 가져옵니다. mindpore.communication에서 get_rank, init 가져오기 mindpore_rl.distribution.distribution_policies를 DP로 가져오기 mindpore_rl.algorithm.ppo에서 구성 가져오기 mindpore_rl.algorithm.ppo.ppo_session에서 PPOSession 가져오기 mindpore_rl.algorithm.ppo.ppo_trainer에서 PPOTrainer 가져오기 파서 = argparse.ArgumentParser(description="MindSpore 강화 PPO") parser.add_argument("--episode", type=int, default=650, help="총 에피소드 수.") 파서.추가_인수( "--device_target", 유형=str, 기본값="자동", 선택=["상승", "CPU", "GPU", "자동"], help="ppo 예제를 실행할 장치를 선택하세요(기본값: 자동).", ) 파서.추가_인수( "--정밀도_모드", 유형=str, 기본값="fp32", 선택=["fp32", "fp16"], help="정밀 모드", ) 파서.추가_인수( "--env_yaml", 유형=str, default="../env_yaml/HalfCheetah-v2.yaml", help="ppo 예제를 업데이트하려면 환경 yaml을 선택하세요(기본값: HalfCheetah-v2.yaml).", ) 파서.추가_인수( "--algo_yaml", 유형=str, 기본값=없음, help="ppo 예제를 업데이트하려면 알고 yaml을 선택하세요(기본값: 없음).", ) 파서.추가_인수( "--enable_distribute", 유형=부울, 기본값=거짓, help="분산 모드로 훈련(기본값: False).", ) 파서.추가_인수( "--worker_num", type=int, default=2, help="작업자 번호(기본값: 2)." ) 파서.추가_인수( "--graph_op_run", type=int, default=1, help="커널별로 커널 실행(기본값: 1)." ) 옵션, _ = 파서.parse_known_args()`
wget https://www.roboti.us/download/mujoco200_linux.zip mv mujoco200_linux ~/.mujoco/mujoco200 wget https://www.roboti.us/file/mjkey.txt cp mjkey.txt /home/kewei/.mujoco/mjkey.txt wget https://download-ib01.fedoraproject.org/pub/epel/7/x86_64/Packages/p/patchelf-0.12-1.el7.x86_64.rpm 냠 localinstall patchelf-0.12-1.el7.x86_64.rpm pip install 'mujoco_py==2.0.2.13'
처음으로 mujoco를 컴파일하는 데 시간이 걸립니다.
bashrc에 다음 내용을 추가합니다.
내보내기 LD_LIBRARY_PATH=$LD_LIBRARY_PATH:~/.mujoco/mujoco200/bin MUJOCO_KEY_PATH=~/.mujoco${MUJOCO_KEY_PATH} 내보내기 내보내기 LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/kewei/.mujoco/mujoco210/bin 내보내기 LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib/nvidia
그런 다음 훈련을 시작할 수 있습니다. 입력을 보존하려면 이전 섹션의 with를 사용하세요.
# dqn_session.run(class_type=DQNTrainer, 에피소드=에피소드) RealTimeCaptureAndDisplayOutput()을 Capture_new로 사용: ppo_session.run(class_type=PPOTrainer, 에피소드=에피소드, 기간=기간)
화웨이 클라우드의 신기술에 대해 빨리 알아보고 팔로우하려면 클릭하세요~
오픈 소스 산업용 소프트웨어를 포기하기로 결정했습니다 . 주요 이벤트 - OGG 1.0 출시, Huawei가 모든 소스 코드를 제공했습니다. Google Python Foundation 팀이 "코드 똥산"에 의해 해고되었습니다 . ". Fedora Linux 40이 정식 출시되었습니다. 유명 게임 회사가 출시했습니다. 새로운 규정: 직원의 결혼 선물은 100,000위안을 초과할 수 없습니다. China Unicom은 세계 최초로 오픈 소스 모델의 Llama3 8B 중국어 버전을 출시했습니다. Pinduoduo는 보상금을 선고 받았습니다 . 불공정 경쟁에 500만 위안 국내 클라우드 입력 방식 - 화웨이만 클라우드 데이터 업로드 보안 문제 없음