시작하기무료로 시작하기

크리틱 네트워크

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)
코드 편집 및 실행