さやノート

Kaggler grandmasterを目指して

強化学習入門してみる 1

はい。お久しぶりです。さやのです。

今回は強化学習を入門。というよりはもう一回勉強し直してみます。 というのは、ちょっと最近面白そうなデータコンペが紹介されていまして。

minerl.io

MineRL(マイン・アールエル)という、まあMinecraftをプレイするエージェントを強化学習で作りましょうと言うコンペですね。

で、一度強化学習について勉強はしたものの、業務でつかわずもうすっかり忘れてしまったため、復習の意味を込めてもう一度、勉強してみようと思ったわけです。

ちなみに参考書はこちらですね。

www.amazon.co.jp

ちなみに和訳版はこちら。

www.amazon.co.jp

強化学習とは???

強化学習(Reinforcement Learning)というのは、機械学習のジャンルの一つで、 「ある状況の中でどのように行動すれば良い結果が得られるか」を学習する手法です。 事例で言うと「AlphaGo」 (アルファ碁)が有名かもしれません。AlphaGoは、碁のAIで、盤面や棋譜からどのように石を置けば勝てるかを学習しています。

モデル化

シンプルな強化学習のモデルは、次の要素から構成されます。

  1. エージェント(Agent)
  2. 環境(Environment)
  3. 観測(Observation)
  4. 行動(Action)
  5. 報酬(Reward)

エージェントは、環境の中で観測を受け取り、可能な行動を選択します。その結果報酬(プラスかマイナス)を得ます。 そして、エージェントはこの報酬の合計が最大になるように行動の選択の仕方を学習していくことになります。

わかりやすく、シューティングゲームに例えてみます。 シューティングゲームでは、エージェントは戦闘機に、観測は、コックピットからみた映像になります。 その映像を見て、エージェントは上昇する、下降する、旋回する、弾を打つなど行動を選択をすることになります。 そして、敵の戦闘機を倒すと得点がもらえたり、逆にダメージを受けると得点が減ったりしますね。これが報酬です。報酬はマイナス値になることもあります。 また、行動を起こしたことによって、次の観測も変わります。その観測から次の行動を選択し、報酬を得る。この繰り返しになりますね。

さて、上記で述べたことをモデル化すると次のようになります。

f:id:sayanotsu:20190725001038p:plain

次回は、簡単な例(CartPole)を通してもう少し詳しくみてみたいと思います。