A3C(Asynchronous Advantage Actor-Critic)を数式と実装で理解する
A3C(Asynchronous Advantage Actor-Critic)は、2016年にDeepMindが提案した強化学習の手法である。方策を学ぶActorと、状態の価値を推定するCriticの2つで構成され、行動の相対的な良さを表すアドバンテージ関数で方策を更新する。方策勾配だけで学ぶと報酬の分散が大きく不安定になりがちなので、Criticを使って分散を抑える。損失は方策損失、価値損失、エントロピー正則化の3項からなる。
最も特徴的なのは「非同期」の部分だ。経験再生を使わず、複数のワーカーがそれぞれ別の環境で同時にサンプルを集め、共有パラメータを非同期に更新する。1本のトラジェクトリ由来の相関が薄まり、ワーカー数が増えるほど経験が多様になる。更新の衝突を厳密に排除せずスループットを稼ぐHogwild!の考え方が背景にある。面白いのは、その後の流れが同期への揺り戻しになっていることだ。後継のA2Cは複数環境を同期的にバッチ処理してGPUでまとめ、PPOは方策の更新幅をクリッピングで抑えて安定させた。現在の実装ではA3Cをそのまま使うことは少なく、多くはA2CかPPOが選ばれる。並列で数を稼ぐ速さと、結果の決定性のどちらを取るかというトレードオフが、流行の中で振り子のように振れてきたと読める。
実務に置き換えると、処理を並列に走らせると速くなるが、同じ条件でも結果が毎回同じになるとは限らない。業務システムでは、速さよりも再現性と説明できることが効く場面の方が多い。限られた計算資源の中で頑健に学習させるという問いへの答えとして設計を見ると、速さと再現性のどちらを優先するかを先に決めておくことが、判断をぶらさないコツになる。導入前に、並列化で何を得て何を失うかを一度言語化しておくとよい。
※ 上記は配信元記事をもとにAIの鬼編集部が要約・再構成したものです。正確な内容は出典元をご確認ください。
このニュースの全文は、配信元でお読みいただけます。 Zenn AIで元記事を読む →


