0Pricing
Learn AI with Python · レッスン

アクター・クリティック法(A2C)

アドバンテージ関数、アクター(方策)とクリティック(価値)、同期型A2Cの実装について学習します。

「アクター・クリティック法(A2C)」はCoddyKit上の無料Learn AI with Pythonレッスンです。 これはレッスン2/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはLearn AI with Python学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Learn AI with Pythonコースには全4レッスンが含まれています。

方策と価値の組み合わせ

アクター・クリティック法は、2つの考え方を組み合わせたものです。1つは行動を選択する方策であるアクター、もう1つはその行動を評価する価値関数であるクリティックです。クリティックは、生のリターンよりも分散の小さいフィードバックを提供し、学習を安定させます。

アクター

アクターは方策ネットワークです。REINFORCEの場合と同様に、現在の状態に対する行動のロジット(または確率)を出力し、何をするかを決定します。

class ActorCritic(nn.Module):
    def __init__(self, obs_dim, n_actions):
        super().__init__()
        self.shared = nn.Sequential(nn.Linear(obs_dim, 128), nn.ReLU())
        self.actor = nn.Linear(128, n_actions)

クリティック

クリティックは状態価値V(s)を推定します。これは、状態sから得られる期待リターンです。クリティックは単一の出力ヘッドで、現在の状況がどの程度良いかを予測します。

        self.critic = nn.Linear(128, 1)

    def forward(self, s):
        h = self.shared(s)
        return self.actor(h), self.critic(h)

共有バックボーンと2つのヘッド

通常、アクターとクリティックは初期層(バックボーン)を共有し、そこから2つのヘッドに分岐します。特徴を共有すると効率が良くなり、両方のタスクが有用な表現の学習を促進できます。

アドバンテージ関数

重要な量はアドバンテージA = r + gamma * V(s') - V(s)です。これは、ある行動がクリティックの予測よりどれだけ良かったかを測定します。アドバンテージが正なら「平均より良い」ことを、負なら平均より悪いことを意味します。

advantage = reward + gamma * V_next - V_current

生のリターンよりアドバンテージが優れている理由

完全なリターンG_tの代わりにアドバンテージを使うと、信号がクリティックの推定値を中心に揃うため、分散を大幅に削減できます。これが、アクター・クリティック法がREINFORCEより安定して学習できる主な理由です。

アクターの損失

アクターはREINFORCEと同じように学習しますが、リターンではなくアドバンテージで重み付けします。アドバンテージが正の行動の確率を上げます。

actor_loss = -(log_prob * advantage.detach()).mean()

クリティックの損失

クリティックは、リターンを正確に予測できるように学習します。その損失は、予測値V(s)と観測されたターゲットr + gamma * V(s')の間の二乗誤差です。

target = reward + gamma * V_next.detach()
critic_loss = (V_current - target).pow(2).mean()

結合した損失

損失を合計して両方のヘッドを同時に学習します(探索を促すために、小さなエントロピー・ボーナスを加えることもよくあります)。1回の逆伝播で、共有バックボーンと両方のヘッドが更新されます。

loss = actor_loss + 0.5 * critic_loss - 0.01 * entropy
loss.backward()

同期型A2C

A2C(Advantage Actor-Critic)は同期型の手法です。複数の並列ワーカーが環境のコピーから同時に経験を収集し、その後、すべてのデータを使って単一の同期更新を行います。これにより、安定性とスループットが向上します。

# N parallel envs step together each iteration
# gather all transitions, then one combined update

A2CとA3C

非同期型のA3Cでは、ワーカーが独立して更新できます。A2Cはワーカーを同期させるため、よりシンプルでGPUに適しており、通常は同程度の効果が得られます。そのため広く使われています。

理解度チェック

アクター・クリティックについての理解度を確認しましょう。

まとめ:アクター・クリティックとA2C

アクターは方策ロジットを出力し、クリティックはV(s)を推定することを学びました。これらは多くの場合、共有バックボーンと2つのヘッドを通じて実装されます。アドバンテージr + gamma*V(s') - V(s)は分散を削減し、同期型A2Cは並列ワーカーを使って安定かつ効率的に学習します。

よくある質問

「アクター・クリティック法(A2C)」レッスンは無料ですか?

はい。「アクター・クリティック法(A2C)」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Learn AI with Pythonコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Learn AI with Pythonコースには全4レッスンが含まれています。

「アクター・クリティック法(A2C)」で何を学びますか?

アドバンテージ関数、アクター(方策)とクリティック(価値)、同期型A2Cの実装について学習します。 ブラウザで直接実行するハンズオンコードでLearn AI with Pythonを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Learn AI with Pythonを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのLearn AI with Pythonは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン2/4です。

「アクター・クリティック法(A2C)」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このLearn AI with Pythonレッスンでコードを書いて実行できますか?

はい。すべてのLearn AI with Pythonレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. 方策勾配法:REINFORCE
  2. アクター・クリティック法(A2C)
  3. 近接方策最適化(PPO)
  4. カスタムGymnasium環境
← Learn AI with Pythonに戻る