機械学習における強化学習とは?
定義
強化学習とは、エージェントが環境と相互作用して累積報酬を最大化するポリシーを見つけることができるようにすることである。
説明1
強化学習を構成する要素は次のとおりである。
- エージェントagent: 与えられた状態において、ポリシーに従って行動を決定する。
- ステートstate, 状態: エージェントが置かれている状況を指す。
- アクションaction, 行動: エージェントが与えられた状態で選ぶことができる選択肢を指す。
- ポリシーpolicy, 方針: エージェントが与えられた状態で行動を決定する戦略を指す。
- リワードreward, 報酬: エージェントが与えられた状態で選んだ行動によって得られる点数を指す。エージェントが達成すべき目標と見なすことができる。
- 環境environment: エージェントが与えられた状態でどのような行動を決定すれば、MDPに従って次の状態とそれに伴う報酬を決定するか。
- エピソードepisode: エージェントと環境の相互作用が始まった時から終わるまでを指す。
これをさまざまな状況に例えると次のようになる。
強化学習 | 試験勉強 | 囲碁 |
---|---|---|
エージェント | 学生 | 囲碁の棋士 |
ステート | 試験まで残り日数 | 碁盤 |
アクション | 勉強、飲酒、ゲームなど | 着手 |
ポリシー | 日付別勉強計画 | 戦略 |
リワード | 試験点数 | 勝敗 |
エピソード | 試験期間 | 一局 |
強化学習の問題:グリッドモデル
強化学習を説明するための代表的な例としてグリッドワールドgrid worldがある。これから次のグリッドモデルを例に各要素を具体的に説明する。一度に上下左右の4方向のうち一つに一マスずつ動けるロボットが下記のようなのグリッドで動く場合を考えてみよう。スタート地点はからまで任意に決められ、ロボットがまたはまで最短距離で行くことが目標とする。
エージェント
強化学習におけるエージェントは学習する主体として説明されるが、実際には存在しない。後述する他の概念が確率変数などで定義されるのに対し、エージェントには明確な数学的定義がない。したがって、強化学習に関する理論的な勉強はエージェントという対象がなくても可能であり、実際にそうである。強化学習理論において本質的にエージェントを意味するのはポリシーである。しかし直感的には、学習する対象があると考える方が便利なため、「エージェントが行動する」「エージェントの状態が変わった」といった表現を用いる。エージェントは単にコンピュータシミュレーション(特にゲーム)においてキャラクターのように学習しているように見えるものに過ぎない。たとえば、グリッドモデルではエージェントが下の右側の図のように移動するのは、単純に状態の列挙で表すこともできる。
を順番にprint
するだけでよい。強化学習の最終的に私たちが得たいのは本質的にポリシーであるため、エージェントというものを定義しなくても学習することができる。一言で言えば、エージェントはポリシーの視覚化(実現化)であると言える。
もちろん、上記の話は理論やコンピュータシミュレーションでの話であり、自動運転のような実際の応用では、ポリシーに従って実際に動くドローンや自動車が必要である。この場合、ドローンや自動車などのロボットや機械がエージェントとなり、それがなければポリシーの学習は不可能である。
状態
状態stateは確率変数であり、stateの頭文字をとってと表記する。エピソードは時間に沿って順次進行するため、インデックスとしてを使用する。したがって、タイムステップがのときのステート関数をと表記する。初期ステートは通常で表される。まとめると、は時間がのとき、各グリッドに対して次のような関数値を与える関数である。
このとき、可能なすべての状態値(状態関数の関数値)の集合をと表記し、その要素をと表記する。
それでは上記の格子モデルに対する状態関数は次のようになります。
それでは時間がのときの状態値がから次のタイムステップで状態値がに変わる確率は次のようになります。
到達した瞬間にエピソードが終了する状態をターミナルステートterminal stateと呼びます。上記の格子モデルではターミナルステートはです。
行動
行動actionとはエージェントが現在の状態で取ることができる選択肢のことであり、これもまた確率変数です。actionの頭文字を取ってと表記します。上記の格子モデルの例では、 ~ の各々で上下左右を選択することができます。可能な全ての行動値(行動関数の関数値)の集合をと表記し、その要素をと表記します。
それではタイムステップでの行動関数は次のようになります。
エージェントは与えられた状態で確率に従って行動を決定します。例えばタイムステップがのときの状態値がで行動を選択した確率は次のようになります。
方針
方針policyとは状態で行動を決定する確率を全てのとに対して明記したものを言い、で表記します。ゲームや戦争に例えると戦略です。格子モデルの例で行動を決定する確率がで全て同じだとすると、方針は次のようになります。
もちろんこれは最適化された方針ではありません。簡単にの場合だけ考えても、上に行くと格子の外に出てしまうため、上に行く確率自体が全く無い方がより良い方針です。したがって、下の図でよりもがより良い方針だと言えます。
強化学習アルゴリズムの目標は最適な方針を見つけることです。では、最適な方針をどのように見つけるかというと、方針の良さを評価する価値関数value functionを通じて見つけることができます。
報酬
報酬rewardとは、与えられた状態でエージェントが選択した行動に対して実数をマッピングする関数であり、rewardの頭文字を取ってと表記します。全ての報酬値(報酬関数の関数値)の集合をと表記し、その要素をと表記します。
報酬は一回のタイムステップごとに一回ずつ受け取り、一回のエピソードで受け取った総報酬、つまり蓄積された報酬が最も大きくなるような方針を見つけることが強化学習の究極的な目標です。
では、なぜ各タイムステップの報酬よりも蓄積された報酬が大きくなるようにするのか疑問に思うかもしれません。これは試験勉強に例えると簡単に理解できます。試験期間中に毎晩勉強する代わりにお酒を飲んだり遊んだりゲームをした場合、当面は勉強するよりも楽しいでしょう。しかし、蓄積された報酬、つまり試験の成績は散々なものになります。したがって、今は勉強することが疲れて大変だとしても、将来の大きな報酬のために勉強する方が良いと判断し、試験勉強をするわけです。
報酬は人が設定するハイパーパラメータです。したがって、エージェントが行うべき仕事に応じて適切に設定する必要があります。例えば、格子モデルの例で格子が迷路であり、エージェントが迷路を脱出するロボットである場合、一マス移動するごとにの報酬、ターミナルステートに到達した場合はの報酬を与えるなどの設定ができます。格子が公園であり、エージェントがペットの散歩をするロボットである場合、一マス移動するごとにの報酬、ターミナルステートに到達した場合はの報酬を与えるなどの設定ができます。
環境
環境environmentとはエージェントが与えられた状態で選択した行動に応じて次の状態と報酬を決定する関数、すなわちです。したがって、常に現実にぴったりと当てはまる比喩を見つけるのは難しいです。
タイムステップがのときの状態を、で選択した行動をとします。これにより、環境が決定した次の状態を、報酬をとすると次のように表されます。
格子モデルの例について具体的に説明すると、エージェントがでを選択し、環境が次の状態と報酬を決定した場合は、次のような数式で
表されます。
エージェントが行動を決定する戦略を方針と呼ぶならば、環境が次の状態と報酬を決定することをMDPmarkov decision process, マルコフ決定プロセスと言います。エージェントと環境の相互作用を図で表すと次のようになります。
エピソード
エージェントと環境が相互作用しながら決定された状態、行動、報酬の数列を経路trajectory, 軌跡または履歴historyと言います。経路が有限の場合をepisode taskと言います。上で例に挙げた試験期間、囲碁、格子モデルもこれに該当します。
経路が無限の場合をcontinuing taskと言います。ただし、非常に長い時間にわたって続くエピソードは無限の場合とみなされることもあります。
オ・イルソク, 機械学習(MACHINE LEARNING). 2017, p466-480 ↩︎