Aan de slagGa gratis aan de slag

Critic-netwerk

Actor-Critic-methoden hebben twee heel verschillende neurale netwerken nodig.

De architectuur van het actor-netwerk is identiek aan die van het beleid/netwerk (policy network) dat je gebruikte voor REINFORCE, dus je kunt de klasse PolicyNetwork hergebruiken.

Het critic-netwerk heb je echter nog niet geïmplementeerd. De critic probeert de toestandwaardefunctie \(V(s_t)\) te benaderen, in plaats van de actie-waardefunctie \(Q(s_t, a_t)\) die door Q-Networks wordt benaderd.

Je gaat nu de Critic-netwerkmodule implementeren die je in A2C zult gebruiken.

Deze oefening maakt deel uit van de cursus

Deep Reinforcement Learning in Python

Cursus bekijken

Oefeninstructies

  • Vul de gewenste dimensie in voor de tweede volledig verbonden laag zodat deze één toestandwaarde uitgeeft.
  • Verkrijg de waarde die wordt teruggegeven door de forward-pass door het critic-netwerk.

Praktische interactieve oefening

Probeer deze oefening eens door deze voorbeeldcode in te vullen.

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)
Code bewerken en uitvoeren