Q-learning ด้วย Neural Network เป็นฟังก์ชันการประมาณ


11

ฉันกำลังพยายามที่จะใช้เครือข่ายประสาทเพื่อให้ใกล้เคียงกับ Q-ค่าใน Q-การเรียนรู้ในขณะที่มีคำถามเกี่ยวกับ Q-การเรียนรู้โดยใช้โครงข่ายประสาทเทียม ตามที่แนะนำในคำตอบแรกฉันใช้ฟังก์ชั่นการเปิดใช้งานเชิงเส้นสำหรับเลเยอร์เอาท์พุทในขณะที่ฉันยังคงใช้ฟังก์ชั่นการเปิดใช้งาน sigmoid ในเลเยอร์ที่ซ่อนอยู่ (2 แม้ว่าฉันจะสามารถเปลี่ยนได้ในภายหลัง) ฉันยังใช้ NN เดี่ยวที่คืนค่าเอาต์พุตสำหรับแต่ละการดำเนินการQ(a)ตามที่แนะนำ

อย่างไรก็ตามอัลกอริทึมยังคงแยกออกสำหรับปัญหาการทรงตัวของรถเข็นเสาอย่างง่าย ดังนั้นฉันกลัวว่าการอัปเดต Q ของฉันจะผิด หลังจากการเริ่มต้นสิ่งที่ฉันทำในแต่ละขั้นตอนมีดังต่อไปนี้:

  • คำนวณQt(st)โดยใช้การขยายพันธุ์ไปข้างหน้าของ NN สำหรับการดำเนินการทั้งหมด
  • เลือกการกระทำใหม่T , ที่ดินในรัฐใหม่s Tatst
  • คำนวณQt(st+1)โดยใช้การขยายพันธุ์ไปข้างหน้าของ NN สำหรับการดำเนินการทั้งหมด
  • a t Q t + 1 ( sQt+1(st,at)=Qt(st,at)+αt[rt+1+γmaxaQ(st+1,a)Qt(st,at)]atQt+1(s,at)=Qt(s,at)
  • ตั้งค่าเวกเตอร์ข้อผิดพลาดเป็นe=QtargetQt=Qt+1Qt
  • เผยแพร่ข้อผิดพลาดผ่าน NN เพื่ออัปเดตการฝึกอบรมเรื่องน้ำหนัก

ใครช่วยชี้ให้ฉันที่ฉันผิดไปได้ไหม

นอกจากนี้คุณคิดว่าฉันควรรวมคำว่าอคติไว้ในชั้นข้อมูลเข้าและเลเยอร์ที่ซ่อนอยู่เป็นครั้งแรก (เช่นสำหรับฟังก์ชัน sigmoid) หรือไม่ มันจะสร้างความแตกต่างหรือไม่?

ขอบคุณล่วงหน้ามากสำหรับความช่วยเหลือของคุณ ฉันสามารถช่วยชี้แจงคำถามหรือแบ่งปันรหัสหากจำเป็น

คำตอบ:


9

เป้าหมายของคุณควรเป็นเพียงแค่

rt+1+γmaxaQ(st+1,a)ก)

โปรดทราบว่าข้อผิดพลาดของคุณ (ซึ่งถูกต้อง) นั้นสามารถเขียนใหม่เป็น rt+1+γmaxaQ(st+1,a)Qt

ซึ่งเป็นคำที่อยู่ในวงเล็บในสูตรการอัพเดท สิ่งนี้จะได้รับการคูณด้วยอัตราการเรียนรู้ NN ของคุณและข้อกำหนดการ backpropagation อื่น ๆ ในระหว่างการเรียนรู้จากนั้นเพิ่มลงในน้ำหนักก่อนหน้าเช่นเดียวกับสูตรการอัพเดตQ


ขอบคุณสำหรับเคล็ดลับ! วิธีที่ฉันสามารถหลีกเลี่ยงการคำนวณผิดพลาดในค่าเป้าหมาย: ในขณะที่คุณพูดมันจะไม่มีจุดหมายที่จะเพิ่มแล้วลบQ_tQt
Enrico Anderlini

อย่างไรก็ตามการเรียนรู้ NN + Q ของฉันยังคงไม่มาบรรจบกัน ดังนั้นถ้าวิธีการนั้นถูกต้องฉันก็จะลองเล่นกับอัตราการเรียนรู้และจำนวนเซลล์ประสาทในเลเยอร์ที่ซ่อนอยู่
Enrico Anderlini

1
ใช่คุณควรทำเช่นนั้น (ลองใช้ฟังก์ชันถ่ายโอน ReLU ด้วย) แต่โปรดทราบว่าการเรียนรู้ Q ไม่มีการรับประกันการบรรจบกับการประมาณฟังก์ชั่น หากความพยายามครั้งต่อไปของคุณไม่ทำงานคุณอาจต้องลองการเรียนรู้ขั้นสูง และในที่สุดปัญหาอาจเกิดจากข้อมูลของคุณไม่ได้เป็น iid ดังนั้นคุณต้องใช้การเล่นซ้ำขั้นสูง
rcpinto

ฉันมีส่วนขยายของคำถาม ผมเข้าใจขั้นตอนวิธีการดังกล่าวในคำถาม แต่กำลังสับสนเกี่ยวกับและเงื่อนไข หากรางวัลสำหรับเกมเป็นที่รู้จักเฉพาะตอนท้ายของเกม (เมื่อชนะหรือแพ้) เราจะให้รางวัลสำหรับขั้นตอนกลางได้อย่างไร? r t + 1Qt+1rt+1
Kanishka Ganguly

1
คุณทำไม่ได้มันเป็นศูนย์ แต่มันจะถูกแพร่กระจายอย่างช้าๆโดยค่า Q ไปยังสถานะก่อนหน้าเนื่องจากค่า Q เป็นค่าประมาณของรางวัลในอนาคตสะสม
rcpinto
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.