【Pythonで強化学習】AIの迷路自動探索を作ってみた
どうもです。あいぺけです。
今回は、AIを実装して迷路を解かせるプログラムを実装したので紹介していきます。
実装には、強化学習のQ-Learningと言われるアルゴリズムを使用しました。
流れとしては、迷路を自動生成して、その迷路をAIが学習を重ねて解いていく感じになります。
AIを実装したのが、今回が初めてですね。
初歩の内容になるかと思いますが、見ていってもらえればと思います。
1. 制作物の紹介
AIが学習していく様子を動画でまとめてみました。↓
今回は、音声にしてみましたが間延び感がすごいですね…
動画編集には、MacのiMovieを使ってるので、文字の入れ方とかに限りがあるんですよね…。
無料で簡単に使えるのがいいのですが…。
動画の最後の迷路でも出てきましたが、ゴールした時に報酬がもらえるようにしているため、ゴール付近から学習が進み、スムーズに進むようになっています。
最後の迷路は、あんなにトライすることになるとは思ってなかったですね。
そこだけで、50分近くかかりました。
YouTubeを観ながら進めてました。(笑)
AI(強化学習)を使った実装は初めてですが、個人的には まずまずといった感じですね。
2. コード紹介
実装したコードを下のGitHubにのせておきます。
今回の迷路の自動生成には、『棒倒し法』を使用しました。
迷路を作成するアルゴリズムの中で比較的に容易に作れることと、ゴールへ行けるルートが複数できるので、AIがどのルートを通ってゴールできるのか確認できる(最短ルートかどうか)と思ったためです。
迷路の大きさやトライ回数などの変数を変えるだけで、自動で反映されるように実装も行いました。
今回の動画では出していませんが、同様に学習率を変えることで、学習の速さを調整することもできます。
実際に動かしてみながらパラメーターを設定することで強化学習のイメージにもつながるかなと思います。
3. 作ってみた感想
強化学習の中でもQ-Learningは、基礎の部分になるそうですが、難しいですね。
特に、『価値』という言葉がよく出てきますが、個人的にイメージしにくい考え方だなと思いました。
分かるようで分からないような…
『期待値』で説明されることが多い(?)ようで、それである程度の理解ができて実装を行いました。
強化学習について理解するために、もう少し勉強が必要だな〜と思いますね。
オブジェクト指向とかと同じで使っていくと分かるようになっていくのかなと思っています。
4. 最後に
難しい内容の説明とかは、まだ理解しきれていない部分も多いので、しませんでした。(いつもしてない)
また、余裕が出てきたら説明したりしていきたいと思います。
今回、作成した『AIで迷路を解かせてみた』ですが、迷路を解くアルゴリズムは、いくつかあるみたいで、それと同じような感じになるのか確認したりしていきたいと思います。
毎回、最短ルートを通っているのかも確認してみたいですね。
あと、他の迷路の生成方法を使ってみて同様に試してみるのもいいかなと思っています。
最終的には、作ってきたゲームにも強化学習を実装して試せるようにしていきたいと思います。
本日も最後まで読んでいただき、ありがとうございました。
この記事が気に入ったらサポートをしてみませんか?