Rede de críticos
Os métodos Actor Critic exigem duas redes neurais muito diferentes.
A arquitetura da rede de atores é idêntica à da rede de políticas que você usou para REINFORCE, portanto, você pode reutilizar a classe PolicyNetwork
.
No entanto, a rede de críticas é algo que você não implementou até o momento. O objetivo do crítico é aproximar a função de valor do estado \(V(s_t)\), rather than the action value function \(Q(s_t, a_t)\) aproximada por Q-Networks.
Agora você implementará o módulo de rede Critic
que será usado no A2C.
Este exercício faz parte do curso
Aprendizado por reforço profundo em Python
Instruções de exercício
- Preencha a dimensão desejada para a segunda camada totalmente conectada, de modo que ela produza um valor de estado.
- Obtenha o valor retornado pela passagem direta pela rede crítica.
Exercício interativo prático
Experimente este exercício preenchendo este código de exemplo.
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)