Main Content

深層ニューラル ネットワークを使用した強化学習

強化学習は目標指向型の計算手法で、コンピューターが不明な動的環境とやり取りすることによってタスクの実行を学習します。この学習手法により、コンピューターは人間の介入なしに、またタスクを達成するために明示的にプログラムされることなく、タスクの累積報酬を最大化するような一連の決定を下すことができるようになります。次の図は、強化学習のシナリオの全体像を示しています。

強化学習の目的は、不明な "環境" 内でタスクを完了できるよう "エージェント""方策" に学習させることです。エージェントは、環境から "観測値""報酬" を受け取り、環境に "アクション" を送信します。報酬は、タスク目標を完了することに関してアクションがどの程度成功したかを示す測定値です。

強化学習エージェントを作成して学習させるために、Reinforcement Learning Toolbox™ ソフトウェアを使用できます。一般的にエージェントの方策は、Deep Learning Toolbox™ ソフトウェアを使用して作成できる深層ニューラル ネットワークを使用して実装されます。

強化学習は、制御および計画分野での多くの用途に活用できます。以下の例では、強化学習エージェントにロボティクスや自動運転のタスクを学習させる方法を説明します。

強化学習のワークフロー

強化学習を使用してエージェントに学習させる一般的なワークフローには、以下のステップが含まれます。

  1. 問題の定式化 — エージェントと環境のやり取りの方法やエージェントが達成しなければならない主な目標や 2 次的な目標など、エージェントに学習させるタスクを定義します。

  2. 環境の作成 — エージェントと環境の間のインターフェイスや環境の動的モデルなど、エージェントが動作する環境を定義します。

  3. 報酬の定義 — タスク目標に対するパフォーマンスを測定するためにエージェントが使用する報酬信号と、環境からのこの信号を計算する方法を指定します。

  4. エージェントの作成 — エージェントを作成します。これには、方策表現の定義やエージェントの学習アルゴリズムの構成が含まれます。

  5. エージェントの学習 — 定義された環境、報酬、およびエージェントの学習アルゴリズムを使用して、エージェントに方策表現を学習させます。

  6. エージェントの検証 — エージェントと環境を一緒にシミュレートすることにより、学習済みエージェントのパフォーマンスを評価します。

  7. 方策の展開 — 生成された GPU コードなどを使用して、学習済みの方策表現を展開します。

強化学習を使用したエージェントの学習は、反復プロセスです。後段での判定や結果によっては、学習ワークフローの初期の段階に戻らなければならないことがあります。たとえば、学習プロセスが妥当な時間内に最適な方策に収束しない場合、エージェントに再学習させる前に以下のいずれかを更新する必要があるかもしれません。

  • 学習の設定

  • 学習アルゴリズムの構成

  • 方策表現

  • 報酬信号の定義

  • アクションと観測値の信号

  • 環境ダイナミクス

強化学習の環境

タスクを完了するようにエージェントに学習させる強化学習のシナリオでは、環境が、エージェントがやり取りをするダイナミクスをモデル化します。環境は以下を行います。

  1. エージェントからのアクションの受け取り。

  2. アクションに対する応答としての観測値の出力。

  3. アクションがタスクの達成にどの程度貢献したかを示す報酬の生成。

次の定義を含む環境モデルを作成します。

  • エージェントが環境を操作するのに使用するアクションと観測値の信号。

  • エージェントがその成功度を測定するのに使用する報酬信号。詳細については、Define Reward Signals (Reinforcement Learning Toolbox)を参照してください。

  • 環境の動的動作。

環境は MATLAB® と Simulink® のいずれかで作成できます。詳細については、Create MATLAB Reinforcement Learning Environments (Reinforcement Learning Toolbox)およびCreate Simulink Reinforcement Learning Environments (Reinforcement Learning Toolbox)を参照してください。

強化学習エージェント

強化学習エージェントには "方策""学習アルゴリズム" の 2 つのコンポーネントが含まれています。

  • 方策とは、環境からの観測値に基づくアクション選択のマッピングのことです。一般的に方策は、深層ニューラル ネットワークのような、調整可能なパラメーターをもつ関数近似器です。

  • 学習アルゴリズムは、アクション、観測値、および報酬に基づいて方策パラメーターを継続的に更新します。学習アルゴリズムの目標は、タスク実行中に受け取る累積報酬が最大になる最適な方策を見つけることです。

エージェントは、学習アルゴリズムと方策表現によって区別されます。エージェントは、離散行動空間、連続行動空間、もしくはその両方で動作できます。離散行動空間において、エージェントは取り得るアクションの有限集合からアクションを選択します。連続行動空間において、エージェントは取り得るアクション値の連続的な範囲からアクションを選択します。Reinforcement Learning Toolbox ソフトウェアは、以下のタイプのエージェントをサポートしています。

エージェント行動空間
Q-Learning Agents (Reinforcement Learning Toolbox)離散
Deep Q-Network (DQN) Agents (Reinforcement Learning Toolbox)離散
SARSA Agents (Reinforcement Learning Toolbox)離散
Policy Gradient Agents (Reinforcement Learning Toolbox)離散または連続
Actor-Critic Agents (Reinforcement Learning Toolbox)離散または連続
Proximal Policy Optimization Agents (Reinforcement Learning Toolbox)離散または連続
Deep Deterministic Policy Gradient (DDPG) Agents (Reinforcement Learning Toolbox)連続
Twin-Delayed Deep Deterministic Policy Gradient Agents (Reinforcement Learning Toolbox)連続
Soft Actor-Critic Agents (Reinforcement Learning Toolbox)連続

詳細については、Reinforcement Learning Agents (Reinforcement Learning Toolbox)を参照してください。

深層ニューラル ネットワークの方策および価値関数の作成

使用しているエージェントのタイプに応じて、その方策および学習アルゴリズムは、深層ニューラル ネットワークを使用して実装できる 1 つ以上の方策表現と価値関数表現を必要とします。

Reinforcement Learning Toolbox は、以下のタイプの価値関数表現と方策表現をサポートしています。

  • V(S|θV) — 与えられた観測値 S に基づいて予想される累積長期報酬 (価値関数) を推定するクリティック。

  • Q(S,A|θQ) — 与えられた離散行動 A および与えられた観測値 S についての価値関数を推定するクリティック。

  • Qi(S,AiQ) — 取り得るすべての離散行動 Ai および与えられた観測値 S についての価値関数を推定する多出力のクリティック。

  • μ(S|θμ) — 与えられた観測値 S に基づいてアクションを選択するアクター。アクターは、確定的手法と確率的手法のいずれかを使用してアクションを選択できます。

学習が実行されている間、エージェントはこれらの表現のパラメーター (θV、θQ、および θμ) を更新します。

Reinforcement Learning Toolbox のほとんどのエージェントは、既定の方策表現と価値関数表現で作成できます。エージェントは、環境からのアクションと観測値の仕様に基づいて、これらの深層ニューラル ネットワークの入力層および出力層を定義します。

あるいは、ディープ ネットワーク デザイナー アプリなどの Deep Learning Toolbox の機能を使用して、エージェントのアクター表現およびクリティック表現を作成することもできます。この場合、アクター表現およびクリティック表現の入力と出力の次元が、対応する環境のアクションと観測値の仕様と確実に一致するようにしてください。ディープ ネットワーク デザイナーを使用してクリティック表現を作成する例については、ディープ ネットワーク デザイナーを使用したエージェントの作成およびイメージ観測値を使用した学習を参照してください。

深層ニューラル ネットワークは、一連の相互結合層で構成されます。利用可能な層の全リストについては、深層学習層の一覧を参照してください。

Q 学習エージェントと SARSA エージェント以外のすべてのエージェントは、再帰型ニューラル ネットワーク (RNN) をサポートしています。これらのネットワークには、入力 sequenceInputLayer と、lstmLayer のような隠れ状態の情報をもつ層が少なくとも 1 つあります。これらのネットワークは、観測値ベクトル内にない状態を環境がもつ場合に、特に役立ちます。

エージェントの作成および関連する価値関数表現と方策表現の詳細については、前述の表にある対応するエージェントのページを参照してください。

Reinforcement Learning Toolbox ソフトウェアは、深層ニューラル ネットワークの表現を作成する際に使用できる追加の層を提供します。

説明
scalingLayer (Reinforcement Learning Toolbox)線形スケーリングと線形バイアスを入力配列に適用します。この層は、tanhLayersigmoidLayer などの非線形層の出力のスケーリングとシフトを行う場合に役立ちます。
quadraticLayer (Reinforcement Learning Toolbox)入力配列の要素から構築された 2 次単項式のベクトルを作成します。この層は、LQR コントローラー用の出力のような、入力に対するいくつかの 2 次関数である出力が必要な場合に役立ちます。
softplusLayer (Reinforcement Learning Toolbox)出力が必ず常に正であるようにするソフトプラス活性化 Y = log(1 + eX) を実装します。これは正規化線形ユニット (ReLU) の平滑化バージョンです。

方策表現と価値関数表現の作成の詳細については、Create Policies and Value Functions (Reinforcement Learning Toolbox)を参照してください。

Deep Learning Toolbox のネットワーク インポート機能を使用して、事前学習済みの深層ニューラル ネットワークまたは深層ニューラル ネットワークの層のアーキテクチャをインポートすることもできます。詳細については、Import Neural Network Models (Reinforcement Learning Toolbox)を参照してください。

強化学習エージェントの学習

環境と強化学習エージェントを作成したら、関数 train (Reinforcement Learning Toolbox) を使用して、環境でエージェントに学習させることができます。学習を構成するには、rlTrainingOptions (Reinforcement Learning Toolbox) オブジェクトを使用します。詳細については、Train Reinforcement Learning Agents (Reinforcement Learning Toolbox)を参照してください。

Parallel Computing Toolbox™ ソフトウェアを所有している場合、マルチコア プロセッサまたは GPU を使用して学習およびシミュレーションを高速化できます。詳細については、Train Agents Using Parallel Computing and GPUs (Reinforcement Learning Toolbox)を参照してください。

学習済みの方策の展開

強化学習エージェントに学習させたら、最適な方策を展開するためのコードを生成できます。以下を生成できます。

  • CUDA® コード (GPU Coder™ を使用)

  • C/C++ コード (MATLAB Coder™ を使用)

与えられた観測値に基づいてアクションを選択する方策評価関数を作成するには、generatePolicyFunction (Reinforcement Learning Toolbox) コマンドを使用します。このコマンドは、方策評価関数と最適な方策のデータを含む MAT ファイルを含む MATLAB スクリプトを生成します。

GPU Coder または MATLAB Coder を使用して、この方策関数を展開するコードを生成できます。

詳細については、Deploy Trained Reinforcement Learning Policies (Reinforcement Learning Toolbox)を参照してください。

関連するトピック