AIの鬼
#開発・実装 Zenn AI

A3C(Asynchronous Advantage Actor-Critic)を数式と実装で理解する

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の鬼編集部が要約・再構成したものです。正確な内容は出典元をご確認ください。

御社でもAIを使ってみませんか
まずはここから 御社でもAIを使ってみませんか? 御社の実際の業務を題材に、AIで何ができるかを一緒に考えます。 「ChatGPTの使い方」を教えるだけの研修ではありません。 AI研修・AI活用相談 →