การเรียนรู้แบบมีผู้เรียนเทียบกับการเสริมแรงการเรียนรู้สำหรับรถบังคับเลี้ยวแบบ RC


12

ฉันกำลังสร้างรถขับเคลื่อนด้วยตนเองที่ควบคุมจากระยะไกลเพื่อความสนุกสนาน ฉันใช้ Raspberry Pi เป็นคอมพิวเตอร์ออนบอร์ด และฉันใช้ปลั๊กอินต่าง ๆ เช่นกล้อง Raspberry Pi และเซ็นเซอร์ระยะทางเพื่อรับคำติชมเกี่ยวกับสภาพแวดล้อมของรถ ฉันใช้ OpenCV เพื่อเปลี่ยนเฟรมวิดีโอเป็นเทนเซอร์และฉันใช้ TensorFlow ของ Google เพื่อสร้างเครือข่ายประสาทที่ซับซ้อนเพื่อเรียนรู้ขอบเขตถนนและอุปสรรค คำถามหลักของฉันคือฉันควรใช้การเรียนรู้แบบมีผู้สอนเพื่อสอนรถยนต์ให้ขับรถหรือฉันควรให้วัตถุประสงค์และบทลงโทษและเรียนรู้การเสริมแรง (เช่นไปที่จุด B ให้เร็วที่สุดเท่าที่จะทำได้ในขณะที่ไม่ชนอะไร ด้านล่างนี้เป็นรายการข้อดีและข้อเสียที่ฉันคิดขึ้นมา

ผู้เชี่ยวชาญด้านการเรียนรู้ภายใต้การดูแล:

  • อินพุตของอัลกอริทึมการเรียนรู้นั้นค่อนข้างตรงไปตรงมา รถเรียนรู้ที่จะเชื่อมโยงเทนเซอร์เฟรมวิดีโอและการอ่านระยะทางเซ็นเซอร์กับการเคลื่อนที่ไปข้างหน้าถอยหลังและล้อเชิงมุม
  • ฉันสามารถสอนรถยนต์ให้มากขึ้นหรือน้อยลงได้อย่างที่ฉันต้องการ (โดยไม่ต้องใส่มากเกินไป)
  • ฉันเคยทำปัญหาการเรียนรู้แบบมีผู้ควบคุมมาก่อนและวิธีนี้ดูเหมือนจะเหมาะกับทักษะที่มีอยู่ของฉัน

ข้อเสียการเรียนรู้ภายใต้การดูแล:

  • มันยังไม่ชัดเจนว่าจะสอนความเร็วอย่างไรและความเร็วที่ถูกต้องนั้นค่อนข้างไร้เหตุผลตราบใดที่รถไม่ไปอย่างรวดเร็วจนมันเบี่ยงเบนไปจากถนน ฉันคิดว่าฉันสามารถขับรถเร็วในระหว่างการฝึกอบรม แต่นี่ดูเหมือนจะเป็นวิธีที่หยาบ บางทีฉันสามารถเพิ่มตัวแปรคงที่ด้วยตนเองในระหว่างการฝึกอบรมที่สอดคล้องกับความเร็วสำหรับเซสชันการฝึกอบรมนั้นและเมื่อมีการปรับใช้อัลกอริทึมการเรียนรู้ฉันจะตั้งค่าตัวแปรนี้ตามความเร็วที่ฉันต้องการ?

ข้อดีการเรียนรู้การเสริมแรง:

  • ถ้าฉันสร้างรถด้วยจุดประสงค์เฉพาะในการแข่งรถขับด้วยตนเองของผู้อื่นการเรียนรู้การเสริมแรงนั้นดูเหมือนจะเป็นวิธีธรรมชาติในการบอกรถของฉันว่า "ไปถึงที่นั่นให้เร็วที่สุด"
  • ฉันเคยอ่านว่า RL บางครั้งใช้สำหรับโดรนอัตโนมัติดังนั้นในทางทฤษฎีมันควรจะง่ายขึ้นในรถยนต์เพราะฉันไม่ต้องกังวลเกี่ยวกับการขึ้นลง

ข้อเสียการเรียนรู้เสริม:

  • ฉันรู้สึกว่าการเรียนรู้การเสริมแรงจะต้องใช้เซ็นเซอร์เพิ่มเติมจำนวนมากและตรงไปตรงมารถของฉันมีความยาวไม่มากพอที่จะพิจารณาว่ามันจำเป็นต้องใส่แบตเตอรี่, Raspberry Pi, และเขียงหั่นขนม

  • รถจะมีพฤติกรรมที่ผิดพลาดอย่างมากในตอนแรกดังนั้นมันอาจทำลายตัวเองได้ อาจใช้เวลานานเกินสมควรในการเรียนรู้ (เช่นเดือนหรือปี)

  • ฉันไม่สามารถสร้างกฎที่ชัดเจนได้ในภายหลังเช่นหยุดที่ไฟแดงของเล่น ด้วยการเรียนรู้ภายใต้การดูแลฉันสามารถรวมอัลกอริธึม SL จำนวนมาก (เช่นตัวแยกประเภทของ Haar Cascade เพื่อระบุตัวหยุด) ลงในเอ็นจิ้นกฎที่กำหนดค่าได้ซึ่งได้รับการประเมินระหว่างแต่ละเฟรมวิดีโอ กลไกของกฎจะสามารถแทนที่อัลกอริทึม SL ในการขับขี่หากเห็นสต็อปไลท์สีแดงแม้ว่าสต็อปไลท์อาจไม่ได้เป็นส่วนหนึ่งของการฝึกอบรมอัลกอริทึมการขับขี่ RL ดูเหมือนจะทำสิ่งนี้อย่างต่อเนื่องเกินไป (เช่นหยุดที่สถานะเทอร์มินัลเท่านั้น)
  • ฉันไม่ได้มีประสบการณ์มากมายกับการเรียนรู้การเสริมแรงที่ใช้แม้ว่าฉันจะต้องการเรียนรู้อย่างแน่นอน

นี่ไม่ใช่คำตอบจริง ๆ แล้วฉันกำลังทำโครงการเดียวกันขับรถด้วยตัวเองกับ Q-learning (RL) (ยังอยู่ในช่วงเริ่มต้น) และฉันอยากจะถามว่ารหัสโครงการของคุณมีบ้างที่ออนไลน์หรือไม่ จะเป็นประโยชน์มากสำหรับฉัน นี่คือโครงการที่ฉันกำลังติดตามอยู่ในขณะนี้: Medium.com/@harvitronix/เขาใช้ RL กับ NN เช่นการเรียนรู้ Google Q ลึก (กระดาษ Atari) แต่เขาไม่ได้ใช้การเรียนรู้แบบมีผู้ควบคุม รหัสของเขามีอยู่ที่นี่: github.com/harvitronix/reinfo
Mahmoud Hossam

@MahmoudHossam คุณมีสถานที่อื่นสำหรับรหัสหรือไม่ ลิงค์ที่คุณให้นั้นตายไปแล้ว
Homunculus Reticulli

@MahmoudHossam ดูเหมือนว่า repo เปลี่ยนเป็น: github.com/harvitronix/rl-rc-car
Ryan Zotti

คำตอบ:


12

ฉันขอแนะนำให้คุณลองใช้วิธีไฮบริด:

  • ครั้งแรกในการฝึกอบรมรถของคุณได้ในแฟชั่นภายใต้การดูแลโดยการสาธิต เพียงควบคุมและใช้คำสั่งของคุณเป็นป้ายกำกับ สิ่งนี้จะช่วยให้คุณได้รับข้อดีทั้งหมดของ SL
  • จากนั้นปรับจูนประสาทของคุณโดยใช้การเรียนรู้การเสริมแรง คุณไม่จำเป็นต้องใช้เซ็นเซอร์พิเศษสำหรับสิ่งนั้น: อาจได้รับรางวัลจากเซ็นเซอร์ระยะ (ระยะทางที่ใหญ่กว่า = ดีกว่า) และจากความเร็ว สิ่งนี้จะให้ข้อดีของ RL และฝึกฝน NN ของคุณไปยังเป้าหมายที่ถูกต้องในการขับขี่อย่างรวดเร็วในขณะที่หลีกเลี่ยงอุปสรรคแทนที่จะเป็นเป้าหมายของการเลียนแบบคุณ
  • การรวมทั้งสองวิธีเข้าด้วยกันจะทำให้คุณได้เปรียบทั้ง SL และ RL ในขณะที่หลีกเลี่ยงข้อเสีย RL จะไม่เริ่มต้นจากพฤติกรรมแบบสุ่มเพียงแค่เบี่ยงเบนไปเล็กน้อยจากสิ่งที่คุณลอง NN วิธีการที่คล้ายกันถูกนำมาใช้ successfuly โดยกูเกิลดีปไมด์กับAlphaGo
  • คุณสามารถรวมกฎที่ชัดเจนไว้ด้านบนของสิ่งนี้ได้เสมอ ใช้พวกเขาด้วยลำดับความสำคัญสูงและเรียก NN เฉพาะเมื่อไม่มีกฎที่ชัดเจนสำหรับสถานการณ์ปัจจุบัน นี้เป็นที่ระลึกของSubsumption สถาปัตยกรรม

DeepMind ถอนตัว Matthew Lai ออกจากผลการแข่งขัน Giraffe Chess NN ที่น่าตื่นเต้นของเขา: motherboard.vice.com/en_us/article/…
DukeZhou
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.