보충 자료는 https://github.com/sacktock/AMBS/blob/main/supplementary-material.pdf에서 찾을 수 있습니다. 또한 여기에서 우리의 논문을 방문해보세요:
AMBS는 이제 Safety Gym과 호환됩니다 .
"안전한 강화 학습을 위한 대략적인 모델 기반 차폐" 및 "연속 환경에서 확률론적 안전 보장을 위한 대략적인 모델 기반 차폐 활용"에 대한 GitHub 저장소입니다.
예측 차폐를 위해 월드 모델을 활용함으로써 우리는 학습된 RL 정책의 안전성을 검증하기 위한 범용 알고리즘을 얻습니다. 특히 DreamerV3를 사용하여 학습된 역학 모델의 잠재 공간에서 가능한 미래(추적)를 시뮬레이션하고 이러한 각 추적을 확인하고 가까운 미래에 안전 위반이 발생할 확률을 추정합니다. 이 확률이 충분히 낮지 않으면 제약 조건 위반을 최소화하도록 훈련된 안전한 정책으로 학습된 정책을 재정의합니다.
"안전한 강화 학습을 위한 대략적인 모델 기반 차폐"에 자세히 설명된 실험에서 모든 에이전트는 JAX로 구현되지만 종속성은 대부분 겹치지만 DreamerV3 기반 에이전트를 실행하는지 도파민 기반 에이전트를 실행하는지에 따라 약간 다를 수 있습니다.
DreamerV3 기반 에이전트와 도파민 기반 에이전트에 대해 별도의 conda 환경을 만드는 것이 좋습니다.
conda create -n jax --clone base
conda create -n jax_dopamine --clone base
DreamerV3 기반 에이전트와 관련된 종속성 목록은 DreamerV3 저장소를 참조합니다. 그리고 도파민 기반 에이전트와 관련된 종속성 목록은 google/dopamine을 참조하세요.
conda activate jax
pip install //DreamerV3 dependencies
conda activate jax_dopamine
pip install //dopamine dependencies
또는 요구 사항 파일을 사용하세요. 단, 필요한 특정 JAX 설치는 하드웨어에 따라 다르다는 점을 강조합니다.
conda activate jax
pip install -r requirements_jax.txt
conda activate jax_dopamine
pip install -r requirements_jax_dopamine.txt
DreamerV3 기반 에이전트의 경우 관련 하위 디렉터리로 이동하여 train.py
실행합니다. 다음 명령은 40M 프레임에 대해 Seaquest에서 AMBS와 함께 DreamerV3를 실행합니다. --env.atari.labels
플래그는 안전 라벨 death
, early-surface
, out-of-oxygen
지정하는 데 사용되며 xlarge
옵션은 모델 크기를 결정합니다( xlarge
는 atari 게임의 기본값입니다).
cd dreamerV3-shield
python train.py --logdir ./logdir/seaquest/shield --configs atari xlarge --task atari_seaquest --env.atari.labels death early-surface out-of-oxygen --run.steps 10000000
--seed
플래그(기본값 0)를 사용하여 무작위 시드를 설정할 수 있습니다.
도파민 기반 에이전트의 경우 도파민 하위 디렉터리로 이동하여 원하는 에이전트를 실행합니다.
cd dopamine
python -um dopamine.discrete_domains.train --base_dir ./logdir/seaquest/rainbow --gin_files ./dopamine/jax/agents/full_rainbow/configs/full_rainbow_seaquest.gin
해당 .gin 파일을 수정하여 무작위 시드를 설정할 수 있습니다(예: JaxFullRainbowAgent.seed=0).
플로팅 실행에는 텐서보드를 사용합니다. 관련 하위 디렉터리로 이동하여 텐서보드를 시작합니다.
cd dreamerV3-shield
tensorboard --logdir ./logdir/seaquest
안전 체육관은 MuJoCo를 기반으로 구축되었습니다. MuJoCo 설치에 대한 자세한 내용은 여기를 참조하세요. 안전 체육관에 대한 추가 요구 사항은 다음과 같습니다.
gym>=0.15.3
joblib>=0.14.0
mujoco_py>=2.0.2.7
numpy>=1.17.4
xmltodict>=0.12.0
이전 설정 및 설치 지침을 따랐다면 이러한 종속성이 이미 충족되었을 수 있습니다.
AMBS가 Safety Gym에서 작동하도록 하려면 (차폐되지 않은) 작업 정책에 페널티를 적용해야 합니다. AMBS가 보상을 극대화하고 안전 체육관 환경의 안전 제약 조건을 충족하는 정책으로 수렴하는 데 도움이 되는 다음 세 가지 페널티 기술을 제공합니다.
python train.py ./logdir/safetygym/PointGoal1/shield_penl --configs safetygym_vision large --task safetygym_Safexp-PointGoal1-v0 --penalty_coeff 1.0 --normalise_ret False --penl_critic_type vfunction --run.steps 500000
python train.py --logdir ./logdir/safetygym/PointGoal1/shield_plpg --configs safetygym_vision large --task safetygym_Safexp-PointGoal1-v0 --penalty_coeff 0.8 --plpg True --normalise_ret False --penl_critic_type vfunction --run.steps 500000
python train.py --logdir ./logdir/safetygym/PointGoal1/shield_copt --configs safetygym_vision large --task safetygym_Safexp-PointGoal1-v0 --penalty_coeff 1.0 --copt True --normalise_ret False --penl_critic_type vfunction --run.steps 500000
이러한 기술을 개괄적으로 설명하는 연구 논문은 여기에서 찾을 수 있습니다: http://arxiv.org/abs/2402.00816
우리는 코드가 개발된 다음 저장소를 참조합니다.