เริ่มต้นใช้งานเริ่มต้นใช้งานได้ฟรี

Critic network

วิธี Actor-Critic ต้องใช้โครงข่ายประสาทเทียมสองแบบที่แตกต่างกันอย่างชัดเจน

สถาปัตยกรรมของ actor network นั้นเหมือนกับ policy network ที่ใช้ใน REINFORCE ทุกประการ จึงนำ class PolicyNetwork มาใช้ซ้ำได้เลย

อย่างไรก็ตาม critic network เป็นสิ่งที่ยังไม่ได้นำมาใช้งานในบทก่อนหน้า หน้าที่ของ critic คือการประมาณค่าฟังก์ชันมูลค่าสถานะ \(V(s_t)\) แทนที่จะเป็นฟังก์ชันมูลค่าแอ็กชัน \(Q(s_t, a_t)\) แบบที่ Q-Network ใช้

ตอนนี้จะได้ลองสร้างโมดูล Critic network ซึ่งจะนำไปใช้ใน A2C

แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร

Deep Reinforcement Learning ด้วย Python

ดูคอร์ส

คำแนะนำการฝึกหัด

  • กำหนดขนาดที่ต้องการให้กับเลเยอร์ fully connected ที่สอง เพื่อให้ส่งออกค่าสถานะเพียงหนึ่งค่า
  • รับค่าที่ได้จากการทำ forward pass ผ่าน critic network

แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ

ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์

class Critic(nn.Module):
    def __init__(self, state_size):
        super(Critic, self).__init__()
        self.fc1 = nn.Linear(state_size, 64)
        # Fill in the desired dimensions
        self.fc2 = nn.Linear(____)

    def forward(self, state):
        x = torch.relu(self.fc1(torch.tensor(state)))
        # Calculate the output value
        value = ____
        return value

critic_network = Critic(8)
state_value = critic_network(torch.rand(8))
print('State value:', state_value)
แก้ไขและรันโค้ด