Gymで強化学習②基本的な枠組み
今記事では強化学習の基本的な枠組みを解説します。
前回はGymnasium(Gym)で強化学習を行う環境を準備しました。
その際に以下の用語が登場しました。
エージェント(agent)
環境(env)
観測値(observation)
行動(action)
報酬(reward)
これらの用語を使って強化学習エージェントがどのように学習を行うのかを議論します。
さっそく始めましょう。
エージェントと環境のやり取り
強化学習ではエージェントが環境から学ぶことで最適な行動を決めれるようになることを目指します。つまり、エージェントは環境に作用し、その結果を環境から観測します。
ただし、環境で起きていることをすべて観測できる場合とそうでない場合があります。また、最適な行動とは何かという疑問もわきます。そこでは環境から得られる報酬が関係してきます。
以下では、Gymの環境でも見られた環境の初期化から始めてエージェントと環境の相互作用を通して様々な疑問に答えていきます。
環境の初期化
環境が初期化されると、エージェントは最初の観測値を受け取ります。
観測値は環境によってさまざまです。ゲーム環境などでは画像データそのものが観測値として与えられます。囲碁、チェス、将棋などのボードゲームではボードの情報がすべて与えられます。
そのように環境にあるものを完全に観測可能(Fully observable)な強化学習がある一方、部分的に観測可能(Partially observable)なものもあります。例えば、視界が遮られているとか、環境の範囲が広く一度に全て観測できない場合です。また、医療やトレーディングなど全ての情報が手に入るとは限らない場合も含まれます。
この記事と今後の記事では主に完全に観測可能な環境を取り扱います。
ただし、完全に観測可能であってもチェスの相手の心理までは読めません。よって観測値とその奥に秘められた隠れ状態(hidden stateあるいはstate)はエージェントが観測値から学ぶ必要があります。
よって、エージェントが環境の真の状態をよりよく推測できれば、より最適な行動を選ぶことができます。もちろん、私たちはまだ最適な行動の意味を定義していません。これについては報酬のセクションで議論しましょう。
ここからは、エージェントが何らかの行動を行うことで次に何が生じるのかを見ていきましょう。
行動の選択
エージェントが何らかの行動を選択します。前回の記事ではエージェントの行動はランダムでした。これは観測値をまったく参考にしていません。
いずれにせよ、エージェントの行動は環境へ伝えられます。
これによって環境の状態に何らかの変化が起こるかもしれません。
例えば、ゲーム内で宇宙船を右側に動かすとか、将棋で相手の駒を取るなどの行動は環境へ影響します。これによって環境の状態が変わるとそれが観測値にも影響します。
つまり、エージェントの行動が環境の状態を更新します。また、エージェントの行動が環境に影響しない場合もあります。
環境の更新
エージェントの行動が環境へ与えられると、エージェントは観測値を受け取ります。これによってエージェントはまた環境の状態を推測して次の行動を決めます。
また、環境からエージェントへ報酬(Reward)が与えられます。報酬は数値で与えられ、良い行動に関しては正の値が、悪い行動に関しては負の値が与えられます。負の値はペナルティ(罰則)と解釈します。なお、0の場合は可も不可もありません。これらすべてをまとめて報酬と呼びます。
例えば、ゲームで宇宙船が着陸地点に近づくとエージェントは正の報酬を受けます。離れるとペナルティを受けます。
このように、強化学習の枠組みではエージェントによる行動の選択が環境にさようすることで観測値が更新され報酬が与えられるというプロセスが繰り返されます。
では、報酬についてもう少し掘り下げましょう。
報酬は正解なのか
エージェントが行動を選択すると報酬が与えられます。報酬は数値なので、お金に換算して考えるとわかりやすくなります。エージェントの最適な行動とは多くの報酬を集めることです。つまり、多くのお金を集めるのと同じです。
ただし、最終的に多くのお金が集まるならば、途中で少しペナルティを受けてお金を失っても構いません。ある意味、投資に似ています。現在、お金を出して、将来のリターンを狙うイメージです。
将棋の例で考えると最大の報酬は勝つことです。駒をたくさん失っても最終的に勝てば全ての行動は正当化されます。いらない駒を相手に取らせておいて、相手の隙をつくというのも一時的なペナルティを受けつつ大きな成果を得ると考えれば最適な行動となります。
つまり、「行動の直接の結果としての報酬は正解ではない」ということです。エージェントにとって「正解とは累計報酬を最大化する行動をとる」ことになります。
この点で強化学習は「教師あり学習」と大きく異なります。教師あり学習では予測と正解は一対一で評価されますが、強化学習では行動の積み重ねが評価されます。
では、このような強化学習をロボットのコントロールなど実践的な用途で使用したい場合にどのように報酬を決めるのでしょうか。
報酬構造
実は、これはとても難しい問題です。
例えば、自動運転を考えてみてください。運転するシステム(エージェント)が最適な行動をするような報酬の決めたいとします。目的は人をA地点からB地点まで安全に素早く運び届けることとします。エージェントの訓練はシミュレーション環境で行うとします。エージェントが行う行動に従ってその都度に環境からの報酬をスコアとして与えるとしましょう。
まず、事故が起きたら大きなペナルティを与えてゲームオーバーにします。交通違反も同様にゲームオーバーにしたいところですが、速度制限を少し超えた場合は軽いペナルティとしても良いでしょうか。交通の流れを妨げないことに重きを置くべきでしょうか。人間が飛び出す可能性のある駐車中の車の横を通る時は速度を落とさなけらばなりません。向こうに津波が見えたらどうしますか。あらゆることをエージェントに考えさせるとフレーム問題が生じかねませんし、そもそもあらゆる行動と環境の状態における報酬を考えるだけでも無限の可能性がありそうです。
このように、環境の状態に対してどのような行動が作用したら、どのくらいの報酬をエージェントに与えるのかを決めるのは大変困難な課題です。つまり、報酬構造を上手に設定できれば強化学習を通して最適なエージェントを訓練することが可能になるのですが、現実的な問題を解くエージェントに対する報酬構造を決めること自体が大きな壁になります。
また、報酬構造を自分で決めて、強化学習を行うのは問題設定と問題解決を同時に決めるようなものです。
よって、強化学習ではまず存在する環境と報酬構造を利用してエージェントの訓練の仕方を工夫するという点に重きが置かれてきました。
なぜゲームなのか
強化学習はゲームがよく使われます。これは環境も報酬構造もすでに与えられているからです。また、既存のゲームであればコンピューターがあれば可能であり、大掛かりなシミュレーションの開発は不要です。
さらに、人間との比較もスコアを比べることで簡単にできます。つまり、人間並あるいは以上のスコアを出すエージェントのゲームプレイは高く評価することができます。
2013年にDeepMindの強化学習エージェントがアタリ(Atari)のゲームを人間並にプレイできることが論文によって発表されました。
DeepMindがゲームを使ったのはある意味必然的でした。アタリという既存の環境と報酬構造を利用して効果的なエージェントの訓練方法であるDQN(Deep Q-Learning)を開発しました。DQNについては後々に詳しく紹介します。
次回は、エージェントが行動を選択するプロセスにおいて仮定される条件などについてもう少し掘り下げていきます。
(続く)
この記事が気に入ったらチップで応援してみませんか?