Unityゲーム開発スタジオ スタジオしまづ

初心者向けUnity講座・ 統計・機械学習関係についてつらつらと

ブロック崩しを攻略する人工知能の学習確認

はじめに

前回の記事での課題をひとまずおきます。今回は私が作ったニューラルネットワークが,実際に学習しているのかどうかを確認します。

学習を確認するための変更点

学習内容を

 "スコアを上昇させる or ボールを跳ね返す ならば報酬を与える"

から

 "ボールとバーの距離が短くなれば報酬を与える"

に変えました。そして学習率(学んだをとを実際の動きに反映させる率)を前回の4倍にしました。

※本来学習率は小さく設定するもので,そうしなければ学習が振動してしまう。

 

結果

まぁー見事に学習していますね。前の学習方法でもこうなってくれればなぁ。。。

youtu.be

 

念のため書きますが,今回の学習方法はブロック崩しというゲームに依存します。よってこの人工知能の応用範囲は狭いです。googleDQNがすごいのはゲーム画面とスコアのみで学習しているので,多くのゲームに対応しているところです。私が作りたいのはDQNのような汎用性の高い人工知能です。

感想やら課題やらまとめやら。。。

動画を見ればわかるように,この子は学ぼうとしています。ただ,すぐに報酬が得られないゲームなので,規則が見つけられず自分がどう動いていいのかわからないだけです。もっと報酬が得られたら何が良かったのかを考えれる仕組みにしなければ,うまくいかないようですね。やっぱりDQNはすごいな。

 

これとは別に遺伝的アルゴリズムも勉強しています。

先日アランチューリング異本「計算する機械と知性について」を読みました。直接的な表現では書かれていませんが,人工知能を開発するには遺伝的アルゴリズムと強化学習を使えばいいのではないかと理解しています。よって初期の学習を遺伝的アルゴリズムで行い,途中から強化学習に切り替える方法をやってみたいです。そのために,簡単な問題に対して遺伝的アルゴリズムの実装をやります。