こんにちは、AI-Tech-Lab愛知支部で学生エンジニアをしている松田です。
今回の記事は、僕たちが自社開発を通して勉強した「強化学習」について、概要をまとめていこうと思います。
AI-Tech-Labの2つの自社開発紹介【学生エンジニアによるAI開発】名前は聞いたことがあるがどんなものか良く知らない方や、今から勉強を始めようと思っている方に向けて、「強化学習」のイメージをお伝えしていきます。
もくじ
機械学習と強化学習の関係
「強化学習」とは、機械学習の中の1分野に当たります。
機械学習なので、何かしらの入力データに対して、適切な答えを求める学習モデルを作るということですね。
適切な答えを求めるための理論・モデルは、人ではなく、機械が自分で学習していきます。
機械学習には他に「教師あり学習」と「教師なし学習」があります。
これら3つの特徴について、ざっくりとした内容は以下の様になります。
・データとデータに紐づいているラベルや数値の対応を学習する。
・連続値となる答えを求める→回帰
・離散値となる答えを求める→分類
・データそのものの特色を学習する。
・データの散らばり方からいくつかのグループを発見する。
・報酬や状態価値・行動価値のフィードバックより学習する。
・より多く報酬が貰えるような方策(行動方針)を学習する。
このようにして見てみると、強化学習だけ雰囲気が違うことが伝わるでしょうか。
「教師あり学習」や「教師なし学習」が行っていることは、データの相関関係の分析の延長にあると言えます。
しかし、「強化学習」が何を行っているのかを理解する為には、方策がどのように決定されていくのかのプロセスを知らなければなりません。
「エージェント」と「環境」について
いきなり方策についてを考える前に、一旦その他の事項についていくつか知っておく必要があります。
方策とは、より多くの報酬を得るための行動指針のようなものです。
つまり、方策に従って行動する“何者か”が存在します。これを「エージェント」と言います。
また、エージェントの行動する世界のことを「環境」と呼びます。
いきなり抽象的な概念が2つも登場してしまいましたが、ここで具体例を示しましょう。
5×5のマス目の盤上に、駒が置かれているとします。
この時、駒が「エージェント」で、盤が「環境」です。
「報酬」と「方策」について
次に、先ほどの例を元に「報酬」を設定してみましょう。エージェントが何かしらの行動を起こした際に、環境から与えられる評価が「報酬」です。
右下の黄色いマスをゴールとして、エージェントである駒は左右上下の4方向に移動するものとします。
ここで、報酬を以下のように設定しましょう。
- マス目の外に出る行動に対して:-1
- ゴールを目前にして、ゴールに向かって移動する行動に対して:10
- その他の行動に対して:0
盤面上でのイメージは下図のようになります。
ポイントは、エージェントの行動に対して報酬の値が設定されている点です。
マス目ごとに報酬が設定されているわけではありません。
また、ここでややこしいのは報酬がエージェントに支払われるタイミングが駒の行動時ではないということです。
実は、報酬はエージェントが行動する前に既に支払われる様になっています。謂わば前払いということですね。
では、上下左右どちらに進むのか分からないエージェントの報酬はいかにして決められるのでしょうか。
ここでやっと、「方策」について考える時が来ました。
「方策」は、エージェントの行動方針であると言いましたが、この時複数ある行動パターンの中でどの行動を取るかが確立で定義されます。これによって、次の行動で取り得る報酬の期待値を計算することが出来るわけです。
試しに、下図の赤いマスに駒がいる時に、次の行動で得られる報酬の期待値を計算してみましょう。
0×0.25 + (-1)×0.25 + 0×0.25 + 10×0.25 = 2.25
0×0.10 + (-1)×0.10 + 0×0.10 + 10×0.70 = 6.90
「方策」によって「報酬」の期待値が変化することが分かりますね。
方策2では、下向き(ゴール方向)の行動をする確率が高くなるように方策を設定したため、報酬の期待値が大きくなっています。
あまり厳密ではありませんが、強化学習とは、このようにして報酬が最大になるような方策が何であるのかを求めるものと捉えて下さい。
「価値関数」について
先程、“あまり厳密ではありませんが”と書きましたが、その理由は「価値関数」についての言及がされていなかったことにあります。方策によって得られる報酬が変化することに変わりはないのですが、目先の報酬だけを最大化するだけでは、ゴールまでに得られる総合的な報酬を最大化することは出来ないということです。
「価値関数」には、次の二つがあります。
- 状態価値関数:ある状態にいることの価値
- 行動価値関数(Q値):ある状態にいて、ある行動を取る価値
まず「状態価値関数」とは、将来的に得られる報酬の期待値を全て合算して、それを「価値」として再定義したものになります。
例えば、下図の青いマスのルートで駒が進む場合、各マス目でエージェントが受け取る報酬の期待値を全て合計した値は、駒がスタート地点にいることの価値を示す手がかりになります。
もちろん、ルートは今示した以外にも無数にあるので、それらも全て計算に組み込む必要がありますし、細かい話をすると未来に得られる報酬の期待値についてはペナルティを科して報酬値を下げるみたいな処理もしたりします。ですが、一旦は割愛します。
今回の記事の締めとして、最も注目しておきたいのは「行動価値関数」または「Q値」と呼ばれる関数です。
何を隠そう、この関数が「方策」の学習に直接的に関わっているからです。
「行動価値関数」は、「状態価値関数」により求められる関数です。
行動価値関数によって求められる数値を参照すれば、ある状態において最も”価値のある行動”を知ることが出来ます。つまり、これによって「方策」を改善していけば、プログラマーが考えた方策ではない、機械が反復試行の中で見つけた最適な「方策」を得ることが出来るわけです。まさに、機械学習ですね。
まとめ
今回は強化学習のイメージをまとめました。
エージェントが沢山報酬を貰うためには、最適な「方策」を学習することが重要です。この記事を通して、強化学習の学習プロセスのイメージが掴めたという方がいらっしゃったら、とても嬉しいです。
▼機械学習の詳しい内容とその実用例についてはこちらをご覧ください。
何ができるの?機械学習の学習モデル10種類の特徴と活用事例これからも、開発を通して得た知識や気付きを投稿していきたいと思っていますので、よろしくお願いします。
ここまでご覧いただきありがとうございました。