Critic 网络
Actor-Critic 方法需要两类截然不同的神经网络。
Actor 网络的结构与您在 REINFORCE 中使用的策略网络相同,因此可以复用 PolicyNetwork 类。
不过,critic 网络您此前还未实现。critic 的目标是逼近状态价值函数 $V(s_t)$,而不是 Q-Networks 用来逼近的动作价值函数 $Q(s_t, a_t)$。
接下来,您将实现用于 A2C 的 Critic 网络模块。
本练习是课程的一部分
Python 中的深度强化学习
练习说明
- 为第二个全连接层填写合适的维度,使其输出单个状态价值。
- 通过 critic 网络进行前向传播,获取返回的价值。
交互式实操练习
通过完成这段示例代码来试试这个练习。
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)