教師あり学習/教師なし学習との違い
これまで見てきた学習方法には、
・正解を教えてもらう、教師あり学習
・正解なしで構造を探す、教師なし学習
がありました。
どちらも、与えられたデータの中で完結する学び方です。
でも、強化学習は、少し世界が違います。
教師あり学習では、「この入力には、この答え」というペアが最初から用意されていて、AIはそれをまねしながら覚えていく。
教師なし学習では、答えはなくて、似ているものを集めたり、構造を見つけたりします。
一方、強化学習では……正解は最初から存在しません。代わりにあるのは「報酬」です。
AIは実際に行動して、よかったらプラス、ダメだったらマイナスという評価を受け取りながら、「次はどう動けばいいか」を自分で探していきます。
強化学習の特徴は、
・行動がある
・環境がある
・報酬がある
・未来を考えながら決める
という点。
データを見るだけじゃなく、選択そのものが学習になります。
たとえばゲーム。
正解のプレイ動画を渡されるわけでもなく、盤面を眺めるだけでもなく、実際に動いて、負けて、勝って、少しずつコツをつかんでいくのです。
まさしく、強化学習の事例です。
強化学習の基本構造
強化学習の世界には、必ず登場する三人組がいます。
・エージェント
・環境
・報酬
まず、エージェント。これは「学ぶ側」のAI。
行動を選び、失敗し、成功し、少しずつ賢くなっていく存在です。
ゲームのプレイヤーだったり、ロボットだったり、広告を選ぶプログラムだったり。「決断する役」ですね。
次に、環境。エージェントの外側に広がる世界。
盤面、道路、ユーザーの反応、あらゆる「現実」がここに含まれます。
エージェントは環境の中で行動し、環境はその結果を返します。
そして、報酬。これが強化学習の心臓部。
行動の結果として、よかったらプラス、ダメだったらマイナスという形で渡される評価です。
正解は教えてくれないけど、「それ、よかったよ」「それはちょっと違う」だけは教えてくれます。
流れはいつも同じです。
エージェントが行動し、環境が変化し、報酬が返ってくる。
エージェントが学ぶ、また行動する……。
このループを、何千回、何万回と繰り返して、「こうすると、だいたい良い」という感覚を身につけていくのです。
強化学習では、正解の答えはもらえない。もらえるのは「評価」だけです。
だからエージェントは、未来の報酬を想像しながら、今の行動を選ぶようになります。
割引率
割引率は、将来の報酬をどれくらい大切にするかを表す値です。
強化学習では、エージェントはただ目の前の報酬だけでなく、「この行動の先に、もっと大きな報酬があるかもしれない」という未来も考えながら動きます。
でも未来の報酬は、必ずしも確実じゃありません。
だから、
・いまの報酬
・将来の報酬
このバランスを取るために使われるのが、割引率です。
割引率は普通、0〜1の間の値で表されます(γと書かれることが多いです)。
γが小さい → 目先重視
γが大きい → 未来重視
たとえば、目の前で100円もらえる場合と、1年後に100円もらえる場合。
多くの人は、今の100円のほうが少し価値が高いと感じます。
強化学習も同じです。
将来の報酬は、少しだけ割り引いて考えます。
それを数値にしたのが割引率。
割引率(γ)とは、将来の報酬をどれくらい重視するかの係数です。
・0に近いほど近視眼的
・1に近いほど長期視点
すなわち、
・割引率が低いと→すぐもらえる報酬ばかり追いかける
・割引率が高いと→遠い未来の大きな報酬のために、今を我慢できる
方策
方策(Policy)とは、ある状態で、どんな行動を取るかを決めるルールのことです。
強化学習では、エージェントは常に問い続けています。
「いま、この状況で、何をすればいい?」
その答えをまとめたものが、方策です。
たとえばゲームなら、
・敵が近いときは逃げる
・アイテムがあれば拾う
そんな行動の決め方全体が、方策です。
強化学習の目的は、この方策を少しずつ改良して、より多くの報酬が得られる行動のしかたに育てていくことです。
価値関数
強化学習でエージェントが考えているのは、「この先、どれくらいいい未来につながる?」です。
その「期待される未来の良さ」を数値にしたものが、価値関数です。
価値関数は、今ここからスタートしたら、将来どれくらい報酬がもらえそうか、を表します。
価値関数には、主に2種類あります。
◆状態価値関数(V)
状態価値関数は、「この状態にいること自体に、どれくらい価値があるか」を表します。
たとえばゲームで、
・ゴールのすぐ手前
・崖のふち
この2つの状態があるとします。
行動を考える前から、「ここは良さそう」「ここは危なそう」って感じますよね。
それを数値にしたのが、状態価値です。
◆行動価値関数(Q)
一方、行動価値関数は、「この状態で、この行動をしたら、どれくらい良い未来になるか」を表します。
つまり、状態+行動のセット。
これが、よく出てくる Q値です。Q学習のQは、ここから来ています。
重要なのは、状態価値関数と行動価値関数の違いです。
・状態価値関数 V(s)→状態だけを見る
・行動価値関数 Q(s, a)→状態と行動を見る
以下に簡単にまとめます。
価値関数→将来の累積報酬の期待値
状態価値関数 V(s)→その状態の良さ
行動価値関数 Q(s,a)→その状態でその行動をしたときの良さ
マルコフ決定過程
マルコフ決定過程(MDP)は、強化学習の世界をきちんと数学の形にするための「土台」です。
難しそうな名前ですが、やっていることはシンプルです。
強化学習の世界を、
・状態(State)
・行動(Action)
・報酬(Reward)
・状態遷移(Transition)
この4つで表そう、という約束事です。
マルコフ決定過程は、エージェントが旅する世界の地図とルールブック、とでも言いましょうか。
エージェントは、
・ある状態にいて
・行動を選び
・報酬をもらい
・次の状態へ移る
これをずっと繰り返します。
マルコフ決定過程は、この一連の流れを、「どんな行動をしたら、どの状態に、どれくらいの確率で移るか」という形で定義します。
マルコフ決定過程のいちばん大事な前提は、マルコフ性です。
これは、未来は「いまの状態」だけで決まる、という考え方。
過去の履歴を全部覚えていなくても、「現在の状態さえ分かれば十分」という前提です。
たとえば将棋なら、盤面が分かれば、そこに至るまでの手順は必要ありません。
今の盤面だけで、次の一手を考えられます。
マルコフ決定過程の枠組みの中で、強化学習はこう問い続けます。
「この世界で、どんな方策を選べば、長期的にいちばん報酬が大きくなる?」
つまり、マルコフ決定過程の上で、最適な方策を探す……これが強化学習の本質です。
現代の強化学習は、基本的に、このマルコフ決定過程を基盤にしているのです。
バンデッドアルゴリズム
バンディットアルゴリズムは、強化学習の中でも、とてもシンプルな設定から始まる問題です。
たとえば。
目の前に、何台かのスロットマシンが並んでいます。
でも、どれが当たりやすいか分かりません。
あなたが知りたいのは、ただ一つ。
「どうすれば、できるだけたくさん報酬をもらえる?」
これが、多腕バンディット問題です。
ここで必ずぶつかるのが、
・探索
まだ分からない選択肢を試すこと
・活用
今いちばん良さそうな選択肢を使うこと
という二つの間の揺れ。
探索ばかりだと、なかなか報酬が増えません。
活用ばかりだと、もっと良い選択肢を見逃します。
このバランスをどう取るか。それがバンディットアルゴリズムの核心です。
◆ε-greedy(たまに冒険する方法)
ε-greedyは、とても素直な戦略です。
ほとんどの時間は、いちばん良さそうな行動を選ぶ(greedy)。でも、ε(小さな確率)だけ、ランダムに試すのです。
たとえば。
・90%はベストそうな選択
・10%は気まぐれチャレンジ
実装が簡単で分かりやすいけれど、探索の仕方が少し雑、という弱点もあります。
◆UCB(まだ分からない可能性を尊重する方法)
UCB(Upper Confidence Bound)は、もう少し思慮深い。
UCBはこう考えます。
「平均的に良さそうな選択肢」だけでなく、「まだあまり試していない選択肢」にも、ちゃんとチャンスをあげよう。
評価は、
これまでの平均報酬+まだ分からない不確実さのボーナス
という形になります。
UCBでは、成績がいいものは自然と選ばれ、試行回数が少ないものも、時々選ばれる、という形で、探索と活用が自動的にバランスします。
バンディットアルゴリズム→探索と活用のバランスを扱う問題設定
ε-greedy→たまにランダム探索する単純な方法
UCB→不確実な選択肢にもボーナスを与える方法