크리틱 네트워크
Actor-Critic 방법에는 서로 매우 다른 두 개의 신경망이 필요해요.
Actor 네트워크의 아키텍처는 REINFORCE에서 사용했던 정책 네트워크와 동일하므로, PolicyNetwork 클래스를 재사용할 수 있어요.
하지만 크리틱 네트워크는 아직 구현하지 않았어요. 크리틱의 목표는 Q-Networks가 근사하는 행동 가치 함수 $Q(s_t, a_t)$가 아니라, 상태 가치 함수 $V(s_t)$를 근사하는 것이에요.
이제 A2C에서 사용할 Critic 네트워크 모듈을 구현해 보세요.
이 연습은 강의의 일부입니다
Python으로 배우는 Deep Reinforcement Learning
연습 안내
- 두 번째 완전 연결 레이어의 출력 차원을 한 개의 상태 가치가 되도록 채워 넣으세요.
- 크리틱 네트워크의 순전파를 통해 반환되는 값을 얻으세요.
실습형 인터랙티브 연습
이 예제를 이 샘플 코드를 완성하여 풀어보세요.
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)