안녕! 제 이름은 Eric Yu이며 Pytorch를 사용하여 처음부터 초보자가 근위 정책 최적화 (PPO)를 작성하는 데 도움이되는이 저장소를 작성했습니다. 저의 목표는 베어 본 (작은/멋진 트릭) 및 매우 잘 문서화/스타일 및 구조화 된 PPO 코드를 제공하는 것입니다. 나는 특히 끝없는 PPO 구현을 읽는 데 지친 사람들을 대상으로하고 있으며 무슨 일이 일어나고 있는지 전혀 모른다.
당신이 매체에서 오지 않는다면 먼저 내 시리즈를 읽으십시오.
정책 그라디언트 (PG) 알고리즘 및 PPO 작업 (PPO의 경우 이론적 수준에 익숙해 져야하는 방법을 포함하여 Python 및 Pyntercement Learning (RL)에 대한 경험이 있다는 가정 하에이 코드를 썼습니다. 결국 PPO를 실천하는 데 도움이되어야합니다). RL, PG 또는 PPO에 익숙하지 않은 경우 아래 세 가지 링크를 따라 순서 :
RL에 익숙하지 않은 경우 RL에 대한 OpenAi 소개 (모두 3 부)를 읽으십시오.
PG에 익숙하지 않은 경우 정책 기울기에 대한 직관적 인 설명을 읽으십시오.
PPO 이론에 익숙하지 않은 경우 PPO 스택 오버 플로우 게시물을 읽으십시오.
3 개 모두에 익숙하지 않은 경우 위에서 아래로 순서대로 위의 링크를 살펴보십시오.
이 PPO 구현은 지속적인 관찰 및 동작 공간을 가정하지만 비교적 쉽게 이산되도록 변경할 수 있습니다. 나는 Openai의 PPO 회전에 제공된 의사 코드를 따릅니다 : https://spinningup.openai.com/en/latest/algorithms/ppo.html; 의사 코드 라인 번호는 ppo.py에서 "alg step #"로 지정됩니다.
강화 학습으로의 여정을 시작할 때 이와 같은 자원이 있기를 바랍니다.
이 튜토리얼의 파트 4를 해준 Zhirui Xia에게 특별한 감사를드립니다.
먼저 파이썬 가상 환경을 만드는 것이 좋습니다.
python -m venv venv
source venv/bin/activate
pip install -r requirements.txt
처음부터 훈련하기 위해 :
python main.py
테스트 모델 :
python main.py --mode test --actor_model ppo_actor.pth
기존 배우/비평가 모델과 함께 훈련하기 위해 :
python main.py --actor_model ppo_actor.pth --critic_model ppo_critic.pth
참고 : 하이퍼 파라미터, 환경 등을 변경하려면 main.py에서 수행하십시오. 나는 그것이 명령을 얼마나 길게하는지 마음에 들지 않기 때문에 명령 줄 인수로 그것들을 가지고 있지 않았습니다.
main.py는 우리의 실행 파일입니다. arguments.py를 사용하여 인수를 구문 분석 한 다음 환경과 PPO 모델을 초기화합니다. 지정된 모드 (기본적으로 Train)에 따라 모델을 교육하거나 테스트합니다. 우리의 모델을 훈련시키기 위해서는 우리가해야 할 일은 Call learn Function! 이것은 stable_baselines를 염두에두고 PPO2를 훈련시키는 방법으로 설계되었습니다.
Arguments.py는 Main이 명령 줄에서 인수를 구문 분석하기 위해 호출 할 것입니다.
ppo.py에는 PPO 모델이 포함되어 있습니다. 모든 학습 마법은이 파일에서 발생합니다. 내 중간 시리즈를 읽고 어떻게 작동하는지 확인하십시오. 내가 권장하는 또 다른 방법은 pdb 또는 Python Debugger라는 것을 사용하고 main.py에서 learn 에서 전화 할 때부터 내 코드를 밟는 것입니다.
네트워크.
eval_policy.py에는 정책을 평가하기위한 코드가 포함되어 있습니다. 다른 코드와 완전히 별도의 모듈입니다.
Graph_Code 디렉토리에는 데이터를 자동으로 수집하고 그래프를 생성하는 코드가 포함되어 있습니다. 내 중간 기사에서 모든 데이터를 생성하기 위해 괜찮은 컴퓨터에서 ~ 10 시간이 걸립니다. 중간 기사의 모든 데이터는 여전히 관심이있는 경우 graph_code/graph_data 에 있어야합니다. 원한다면 데이터와 함께 사용하는 그래프를 재생할 수 있습니다. 자세한 내용은 Graph_Code에서 readme를 읽으십시오.
다음은 시작하기위한 훌륭한 PDB 튜토리얼입니다 : https://www.youtube.com/watch?v=vqjcx3p89yk&ab_channel=tutorialedge입니다
또는 Debuggers의 전문가 인 경우 다음은 다음과 같습니다. https://docs.python.org/3/library/pdb.html
다음은 시도해 볼 수있는 환경 목록입니다. 이 PPO 구현에서는 관찰 및 동작 공간 모두에 Box 있는 것만 사용할 수 있습니다.
하이퍼 파라미터는 여기에서 찾을 수 있습니다.
내 중간 기사를 참조하십시오.
궁금한 점이 있거나 저에게 연락하고 싶다면 여기에서 찾을 수 있습니다.
이메일 : [email protected]
LinkedIn : https://www.linkedin.com/in/eric-yu-engineer/