โปรเจ็กต์นี้มอบโครงสร้างพื้นฐานที่ได้รับการปรับปรุงให้เหมาะสมสำหรับการเรียนรู้แบบเสริมกำลัง โดยขยายอินเทอร์เฟซโรงยิม OpenAI ไปยังสภาพแวดล้อมแบบขนานหลายรายการ และช่วยให้ตัวแทนสามารถนำไปใช้ใน TensorFlow และดำเนินการคำนวณแบบแบตช์ โดยจุดเริ่มต้น เราได้จัดเตรียม BatchPPO ซึ่งเป็นการใช้งาน Proximal Policy Optimization ที่ได้รับการปรับปรุงประสิทธิภาพแล้ว
โปรดอ้างอิงเอกสาร TensorFlow Agents หากคุณใช้โค้ดจากโปรเจ็กต์นี้ในการวิจัยของคุณ:
@article { hafner2017agents ,
title = { TensorFlow Agents: Efficient Batched Reinforcement Learning in TensorFlow } ,
author = { Hafner, Danijar and Davidson, James and Vanhoucke, Vincent } ,
journal = { arXiv preprint arXiv:1709.02878 } ,
year = { 2017 }
}
การพึ่งพา: Python 2/3, TensorFlow 1.3+, ยิม, ruamel.yaml
โคลนที่เก็บและรันอัลกอริทึม PPO โดยพิมพ์:
python3 -m agents.scripts.train --logdir=/path/to/logdir --config=pendulum
อัลกอริธึมที่จะใช้ถูกกำหนดไว้ในการกำหนดค่าและ pendulum
ที่เริ่มต้นที่นี่ใช้การใช้งาน PPO ที่รวมอยู่ ตรวจสอบการกำหนดค่าที่กำหนดไว้ล่วงหน้าเพิ่มเติมใน agents/scripts/configs.py
หากคุณต้องการดำเนินการรันที่เริ่มต้นไว้ก่อนหน้านี้ต่อ ให้เพิ่มแฟล็ก --timestamp=<time>
ให้กับคำสั่งสุดท้าย และระบุการประทับเวลาในชื่อไดเร็กทอรีของการรันของคุณ
หากต้องการแสดงภาพเมตริก ให้เริ่ม TensorBoard จากเทอร์มินัลอื่น จากนั้นชี้เบราว์เซอร์ของคุณไปที่ http://localhost:2222
:
tensorboard --logdir=/path/to/logdir --port=2222
หากต้องการเรนเดอร์วิดีโอและรวบรวมสถิติ OpenAI Gym เพื่ออัปโหลดไปยังกระดานคะแนน ให้พิมพ์:
python3 -m agents.scripts.visualize --logdir=/path/to/logdir/ < time > - < config > --outdir=/path/to/outdir/
เราเผยแพร่โครงการนี้เป็นจุดเริ่มต้นที่ทำให้สามารถนำแนวคิดการเรียนรู้แบบเสริมกำลังใหม่ๆ ไปใช้ได้อย่างง่ายดาย ไฟล์เหล่านี้เป็นจุดเริ่มต้นที่ดีในการแก้ไขโค้ด:
ไฟล์ | เนื้อหา |
---|---|
scripts/configs.py | การกำหนดค่าการทดลองที่ระบุงานและอัลกอริทึม |
scripts/networks.py | โมเดลโครงข่ายประสาทเทียม |
scripts/train.py | ไฟล์ปฏิบัติการที่มีการตั้งค่าการฝึก |
algorithms/ppo/ppo.py | กราฟ TensorFlow สำหรับอัลกอริทึม PPO |
หากต้องการรันการทดสอบหน่วยและ linting ให้พิมพ์:
python2 -m unittest discover -p " *_test.py "
python3 -m unittest discover -p " *_test.py "
python3 -m pylint agents
หากมีคำถามเพิ่มเติม โปรดเปิดปัญหาใน Github
เรามีอินเทอร์เฟซแบบแบตช์สำหรับสภาพแวดล้อม OpenAI Gym ที่ผสานรวมกับ TensorFlow อย่างสมบูรณ์เพื่อการใช้งานอัลกอริทึมที่มีประสิทธิภาพ สามารถทำได้ผ่านองค์ประกอบหลักเหล่านี้:
agents.tools.wrappers.ExternalProcess
เป็น wrapper สภาพแวดล้อมที่สร้างสภาพแวดล้อม OpenAI Gym ภายในกระบวนการภายนอก การเรียกไปยัง step()
และ reset()
รวมถึงการเข้าถึงแอ็ตทริบิวต์จะถูกส่งต่อไปยังกระบวนการและรอผลลัพธ์ สิ่งนี้ทำให้สามารถรันหลายสภาพแวดล้อมพร้อมกันโดยไม่ถูกจำกัดโดยการล็อคล่ามส่วนกลางของ Pythonagents.tools.BatchEnv
ขยายอินเทอร์เฟซ OpenAI Gym ไปยังกลุ่มสภาพแวดล้อมต่างๆ โดยผสมผสานสภาพแวดล้อม OpenAI Gym หลายรายการเข้าด้วยกัน โดย step()
ยอมรับชุดของการดำเนินการ และส่งคืนชุดของการสังเกต รางวัล ธงที่ทำเสร็จแล้ว และออบเจ็กต์ข้อมูล หากแต่ละสภาพแวดล้อมอยู่ในกระบวนการภายนอก สภาพแวดล้อมเหล่านั้นก็จะถูกก้าวไปพร้อมๆ กันagents.tools.InGraphBatchEnv
รวมสภาพแวดล้อมแบบแบตช์เข้ากับกราฟ TensorFlow และทำให้ฟังก์ชัน step()
และ reset()
เข้าถึงได้ในขณะที่ดำเนินการ ชุดการสังเกต การกระทำล่าสุด รางวัล และแฟล็กที่ทำเสร็จแล้วจะถูกจัดเก็บไว้ในตัวแปรและทำให้พร้อมใช้งานเป็นเทนเซอร์agents.tools.simulate()
หลอมรวมขั้นตอนของสภาพแวดล้อมแบตช์ในกราฟและอัลกอริธึมการเรียนรู้แบบเสริมเข้าด้วยกันเป็นการดำเนินการเดียวที่จะเรียกภายในลูปการฝึกอบรม ซึ่งจะช่วยลดจำนวนการโทรเซสชันและให้วิธีง่ายๆ ในการฝึกอัลกอริทึมในอนาคต เพื่อทำความเข้าใจโค้ดทั้งหมด โปรดทำความคุ้นเคยกับการดำเนินการควบคุมโฟลว์ของ TensorFlow โดยเฉพาะ tf.cond()
, tf.scan()
และ tf.control_dependencies()
นี่ไม่ใช่ผลิตภัณฑ์อย่างเป็นทางการของ Google