読むとGPAが上がるブログ(仮)

GPA芸人が気の赴くままに何かを書くブログ

強化学習の基礎(その2)

前回の記事の続きです。

シリーズ2回目ということで、より具体的な例を用いて強化学習の概念を説明していきます。 例として、テトリスのマラソンモード(ひたすらテトリミノを消し続けるモード)をプレイする「AI」を強化学習で作成する、みたいな状況を考えます。

前回、「強化学習には報酬の概念がある」ということを書いたと思います。 しかし、その報酬はどこから来るのかについては特に言及していませんでした(似た存在であるところの、教師あり学習における「正解」は、データとして与えられているのでそれを使えばよい)。 これの説明には強化学習のことをもう少し詳しく知る必要があるので、これを説明していきます。 途中で報酬の話も出てきます。

強化学習モデリング

環境とエージェント

強化学習では、「環境」と「エージェント」という2つの概念を用い、これらの相互作用を使って考えることがよくあります。 「環境」とは、いわば「世界」そのもの、もしくは神であり、基本的に考えているプログラムに関する全ての情報を保持します。 一方で、「エージェント」とは、その環境(「世界」)に生きるものと考えられます。

と言っても意味不明なので、テトリスの例で説明します。 環境はゲームのプログラムであると考えられます。 今まで消したライン数や、これからプレイヤーが引いてくるテトリミノの順番など、ゲームに関する全情報を把握しているはずです。 一方で、エージェントはプレイヤーです。 現在のフィールドの情報などは分かりますが、例えば10回後の未来に引いてくるテトリミノの種類などは当然分かりません。

そして、作りたいのはテトリスをプレイする「AI」なので、強化学習の文脈で言えば、エージェントを作る、ということになります。

相互作用

さて、強化学習は、よく環境とエージェントの相互作用でモデル化されるという話でした。 この部分を詳しく見ていきます。

  1. 環境の中のエージェントは、自分から「見える」環境の情報を「見」ます。 これを「観測」と言います。 テトリスの例では、現在のフィールドの状態や、数回後までの引いてくるテトリミノの種類などが観測できます。

  2. 観測で得た情報をもとに、どんな「行動」をするか決め、行動します。 どの列にミノを置くか、ということですね。

  3. 行動をすると、環境から報酬を受け取ります(受け取らない場合はゼロの報酬を受け取ると考える)。 テトリスの例では、例えば消した列数を報酬として受け取るみたいな感じですね。 この場合、消さなかったら報酬ゼロとなります。 ちなみに報酬は負の値でもよいので、例えば上まで積み上がってゲームオーバーになったら負の報酬を貰う、のようにしてもよいです。 ここら辺の報酬の設定は、人間が行います。 教師あり学習で、データに正解をつけるのが人間なのと同じような話です。

  4. 行動をすると、報酬を受け取るだけではなく、同時に環境が変化します。 テトリスの例では、ミノを置けば(行動)、フィールドの状態(環境の一部)が変わるのは当然ですね。 なので、再び観測して情報を得ます。

これを繰り返すのが、強化学習の基本的な流れになります。

学習

前回の記事で述べた通り、機械学習の目的は「入力を受け取り、望ましい出力をできるようにする」ことです。 これは、強化学習においては、

  • 入力 : 観測で得られた情報
  • 出力 : 行動
  • 望ましい : 貰える報酬が多い

と解釈します。

また、前節で述べた通り、基本的にエージェントは繰り返し行動します。 従って、より正確には「望ましい」は「貰える報酬の和が多い」と解釈します。 1回だけ報酬4を貰ってその後貰えないよりは、3回報酬2を貰える方が良いということです。

まとめると、強化学習とは、

「 観測によって得た情報をもとに、貰える報酬の和が大きくなるような行動を取る」ように、エージェントを自動調整すること

となります。

ここまでが強化学習の詳しめの説明となります。 私の日本語力がアレなので分かりにくい説明になってしまいました。 すみません。 次回はいよいよ実装の基本の紹介に入りたいと思います。