始める無料で始める

Critic ネットワーク

Actor-Critic 法では、性質の異なる2つのニューラルネットワークが必要です。

Actor ネットワークのアーキテクチャは、REINFORCE で使用したポリシーネットワークと同一なので、PolicyNetwork クラスを再利用できます。

一方、Critic ネットワークはまだ実装していません。Critic は、Q-Network が近似する行動価値関数 \(Q(s_t, a_t)\) ではなく、状態価値関数 \(V(s_t)\) を近似することを目的とします。

ここでは、A2C で使用する Critic ネットワークモジュールを実装します。

この演習はコースの一部です

Pythonで学ぶDeep Reinforcement Learning

コースを見る

演習の手順

  • 第2の全結合層が状態価値を1つ出力するように、希望する出力次元を指定してください。
  • 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)
コードを編集して実行