วิธี Actor-Critic (A2C)
ฟังก์ชันความได้เปรียบ actor (นโยบาย) และ critic (ค่า) และการใช้งาน A2C แบบทำงานพร้อมกัน
วิธี Actor-Critic (A2C) เป็นบทเรียน Learn AI with Python ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Learn AI with Python และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Learn AI with Python มีบทเรียนทั้งหมด 4 บทเรียน
การผสานนโยบายกับค่า
วิธีการ แอ็กเตอร์-คริติก ผสานแนวคิดสองอย่างเข้าด้วยกัน ได้แก่ actor (นโยบายที่เลือกการกระทำ) และ critic (ฟังก์ชันค่าที่ประเมินการกระทำเหล่านั้น) critic ให้ข้อมูลป้อนกลับที่มีความแปรปรวนต่ำกว่าผลตอบแทนดิบ จึงช่วยให้การเรียนรู้มีเสถียรภาพ
แอ็กเตอร์
actor คือเครือข่ายนโยบาย โดยจะแสดงผล ลอจิตส์ ของการกระทำ (หรือความน่าจะเป็น) สำหรับสถานะปัจจุบัน เช่นเดียวกับใน REINFORCE และเป็นผู้ตัดสินใจว่าจะทำอะไร
class ActorCritic(nn.Module):
def __init__(self, obs_dim, n_actions):
super().__init__()
self.shared = nn.Sequential(nn.Linear(obs_dim, 128), nn.ReLU())
self.actor = nn.Linear(128, n_actions)คริติก
critic ประเมิน ค่าของสถานะ V(s) ซึ่งก็คือผลตอบแทนคาดหมายจากสถานะ s โดยเป็นส่วนหัวเอาต์พุตเดียวที่คาดการณ์ว่าสถานการณ์ปัจจุบันดีเพียงใด
self.critic = nn.Linear(128, 1)
def forward(self, s):
h = self.shared(s)
return self.actor(h), self.critic(h)แบ็กโบนแบบใช้ร่วมกัน สองส่วนหัว
โดยปกติ actor และ critic จะ shared เลเยอร์ช่วงต้น (แบ็กโบน) แล้วแยกออกเป็นสองส่วนหัว การใช้คุณลักษณะร่วมกันมีประสิทธิภาพ และช่วยให้งานทั้งสองด้านส่งเสริมการเรียนรู้ตัวแทนที่เป็นประโยชน์
ฟังก์ชันความได้เปรียบ
ปริมาณสำคัญคือ ความได้เปรียบ A = r + gamma * V(s') - V(s) ซึ่งวัดว่าการกระทำหนึ่งดีกว่าที่ critic คาดหมายไว้มากเพียงใด ค่าความได้เปรียบเป็นบวกหมายถึง "ดีกว่าค่าเฉลี่ย" ส่วนค่าลบหมายถึงแย่กว่า
advantage = reward + gamma * V_next - V_currentเหตุใดค่าความได้เปรียบจึงดีกว่าผลตอบแทนดิบ
การใช้ค่าความได้เปรียบแทนผลตอบแทนเต็มรูปแบบ G_t ช่วยจัดสัญญาณให้อยู่รอบค่าประมาณของ critic ทำให้ความแปรปรวนลดลงอย่างมาก นี่คือเหตุผลหลักที่ทำให้แอ็กเตอร์-คริติกเรียนรู้ได้เสถียรกว่า REINFORCE
ฟังก์ชันการสูญเสียของแอ็กเตอร์
actor ได้รับการฝึกเช่นเดียวกับ REINFORCE แต่ถ่วงน้ำหนักด้วยค่าความได้เปรียบแทนผลตอบแทน: เพิ่มความน่าจะเป็นของการกระทำที่มีค่าความได้เปรียบเป็นบวก
actor_loss = -(log_prob * advantage.detach()).mean()ฟังก์ชันการสูญเสียของคริติก
critic เรียนรู้ที่จะคาดการณ์ผลตอบแทนให้แม่นยำ ฟังก์ชันการสูญเสียของมันคือความคลาดเคลื่อนกำลังสองระหว่างค่าที่คาดการณ์ V(s) กับเป้าหมายที่สังเกตได้ r + gamma * V(s')
target = reward + gamma * V_next.detach()
critic_loss = (V_current - target).pow(2).mean()ฟังก์ชันการสูญเสียรวม
ฝึกทั้งสองส่วนหัวพร้อมกันด้วยการรวมฟังก์ชันการสูญเสียเข้าด้วยกัน (มักเพิ่มโบนัสเอนโทรปีเล็กน้อยเพื่อส่งเสริมการสำรวจ) การทำ backward หนึ่งครั้งจะอัปเดตแบ็กโบนที่ใช้ร่วมกันและส่วนหัวทั้งสอง
loss = actor_loss + 0.5 * critic_loss - 0.01 * entropy
loss.backward()A2C แบบทำงานพร้อมกัน
A2C (แอ็กเตอร์-คริติกที่ใช้ค่าความได้เปรียบ) เป็นเวอร์ชันแบบทำงานพร้อมกัน: ผู้ปฏิบัติงานแบบขนาน หลายตัวเก็บประสบการณ์จากสำเนาของสภาพแวดล้อมพร้อมกัน จากนั้นการอัปเดตแบบประสานกันเพียงครั้งเดียวจะใช้ข้อมูลทั้งหมดของพวกเขา ช่วยเพิ่มเสถียรภาพและอัตราการประมวลผล
# N parallel envs step together each iteration
# gather all transitions, then one combined updateA2C เทียบกับ A3C
รูปแบบแบบไม่พร้อมกันอย่าง A3C อนุญาตให้ผู้ปฏิบัติงานแต่ละตัวอัปเดตอย่างอิสระ ส่วน A2C จะประสานผู้ปฏิบัติงานเหล่านั้น ทำให้เรียบง่ายกว่า เหมาะกับ GPU มากกว่า และโดยทั่วไปมีประสิทธิผลไม่แพ้กัน จึงได้รับความนิยม
ตรวจสอบความเข้าใจ
ทดสอบความเข้าใจเกี่ยวกับแอ็กเตอร์-คริติก
ทบทวน: แอ็กเตอร์-คริติกและ A2C
คุณได้เรียนรู้ว่า actor แสดงผลลอจิตส์ของนโยบาย และ critic ประเมินค่า V(s) ซึ่งมักทำผ่าน แบ็กโบนแบบ shared ที่มีสองส่วนหัว ค่าความได้เปรียบ r + gamma*V(s') - V(s) ช่วยลดความแปรปรวน และ A2C แบบทำงานพร้อมกัน ใช้ผู้ปฏิบัติงานแบบขนานเพื่อการฝึกที่เสถียรและมีประสิทธิภาพ
คำถามที่พบบ่อย
บทเรียน “วิธี Actor-Critic (A2C)” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “วิธี Actor-Critic (A2C)” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Learn AI with Python ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Learn AI with Python มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “วิธี Actor-Critic (A2C)”
ฟังก์ชันความได้เปรียบ actor (นโยบาย) และ critic (ค่า) และการใช้งาน A2C แบบทำงานพร้อมกัน คุณปฏิบัติ Learn AI with Python ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Learn AI with Python หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Learn AI with Python บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน
บทเรียน “วิธี Actor-Critic (A2C)” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Learn AI with Python นี้ได้ไหม
ได้ บทเรียน Learn AI with Python ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- วิธีไล่ระดับนโยบาย: REINFORCE
- วิธี Actor-Critic (A2C)
- การปรับให้เหมาะสมของนโยบายแบบใกล้เคียง (PPO)
- สภาพแวดล้อม Gymnasium แบบกำหนดเอง