強化学習を使ったブロック崩し

最近AIという言葉をよく耳にしますが、AIとは日本語にすると人工知能を意味しそのAIを実現する手法の一つとして機械学習があります。 機械学習には大きく「教師あり学習」、「教師なし学習」、「強化学習」の3つに分類されます。

教師あり学習は学習フェーズと推論フェーズから構成されます。学習フェーズでは事前に正解ラベルの付いたデータを用意し、 そのデータを正解ラベルに分類されるようにシステムのパラメータを調整します。 推論フェーズではラベルの付いていないデータを入力した際に学習した結果からそのデータのラベルであると思われるラベルを出力します。 教師あり学習は、画像や音声、テキストデータの分類などに使用されます。

教師なし学習とは、一言で表すとグループ分けです。 たくさんのデータに対してデータの中から似ているデータ同士でグループ分けします(グループ分けすることをクラスタリングと言います)。 例としては顧客の1回の購入の平均単価と過去1年間の購入回数といった顧客情報から顧客をグループ分けする、といったことができます。 そのあとグループごとに適した販売戦略を実行することができます。 教師なし学習ではクラスタリングの他にも次元圧縮や推薦システムにも利用されます。

強化学習とは主にロボットの歩行制御システムや囲碁や将棋などの対戦プログラムに使用されます。 イメージとしては子供が自転車を乗れるようになるまでの過程を考えてもらうとわかりやすいかもしれません。 子供が自転車に乗れるようになる際に力学法則や細かい乗り方を教えてもらうのではなく実際に自分で乗ってみて何度も失敗しながらうまく乗れる方法を見つけます。 強化学習はこの例のように正解がわからない中試行錯誤を繰り返して望ましい方法を学ぶ学習手法となります。 少し細かく説明するとシステムがある行動を採ったときに、それが望ましい行動の場合は報酬を与え望ましくなかった場合は罰を与えます。 システムは罰を避け報酬を多く受け取るような行動を採っていく、といった流れになります。イメージ図を以下に示します。

実際に強化学習で学習を行うとどのような感じになるかを、ブロック崩しゲームを用いて見ていただこうと思います。 まずなにも学習していない状態ではどのような動きをするのか見ていただきます。

このゲームは、下にあるバーをうまくボールに反射させて上にあるブロックを壊していくゲームです。 バーは左右に動かすことができボールを落とさないようにブロックを崩していきます。 上の方にあるブロックほど壊したときのスコアが大きくなるのですが、なにも学習していない状態では、 バーはAIにランダムに操作され(動画内では右に寄りっぱなし)、まともにボールを反射させることさえできていません。 これを強化学習を用いて高得点(今回は300点)をとれるように先程に示したように報酬を与え学習させたいと思います。 その結果が以下のようになります。

学習後では、ボールを上手く反射させるのはもちろんですが端の方を狙い上に上げ自分で操作しなくても勝手にブロックを崩していくような手法を学習しています。 このように機械がそのシチュエーションでの最適解を見つけるというのが強化学習の面白いところだと思います。 ブロック崩しのゲームはリンク から遊ぶことができます。開いてからF12ボタンを押してスペースキーを押したら始まります。矢印キーでバーが左右に動きます。

All Rights Reserved. Design by http://f-tpl.com