マインスイーパーを機械学習で解くプロジェクトを作った
マインスイーパーごにょごにょ。
6x6程度の小さい盤面しか学習できないようなパフォーマンス・設計という致命的な問題を抱えているが、その条件ならしっかり賢くなってくれる。正答率が上がっていくのを眺めるのは楽しね。
アルゴリズムとかは上記リポジトリのREADMEに任せて、プロジェクトの背景とか、私自身の学習過程とかをダラダラ書いていく。
背景、動機
2点。
どこから勉強し始めたか及びその経過経緯
そもそも機械学習とはなんぞや?
機械学習をやりたいけれど、どこから手をつけていいか分からない人のために - Qiita
機械学習を用いればマインスイーパーを解かせられるじゃろ!程度のぼんやりとした知識しかなかった。 ので、機械学習そのものについて調べているときにたどり着いた記事。この記事を読み、強化学習を使えば良さそうだな、と目星をつけた。
強化学習ってどんなことがデキるんじゃ?
強化学習という手法について、基礎から最近目覚ましい精度を出しているDeep Q-learning(いわゆるドキュン、DQNです)まで、その発展の流れと仕組みについて解説をしていきたいと思います。
いざプログラム作成後に見てみると、クラス名とか記事参考にすればよかったなぁーって部分が幾つか。そのうち直そう(直さない)。とりあえず「現在のステートに対して、うまく出来たら報酬を与えて、うまく出来なかったら減点する」ということを学んだ。数式は全然見てないし、発展的な内容は全然取り入れてない。そのうちな!
いつの日かOpenAI Gymを少しだけ歩いてみたい。
シンプルな感じのサンプルコードを漁っていく
- Q学習による最短経路学習 - poor_codeの日記
- 強化学習について学んでみた。(その20) - いものやま。
- 強化学習について学んでみた。(その21) - いものやま。
- 強化学習について学んでみた。(その22) - いものやま。
とりあえず今回参考にしたのはこの2つ。Q学習関係のサンプルコードを漁っていた。
Q学習を試してみたかったのだが、最終的にはモンテカルロチックな実装になった。そもそもQ学習を使いたかった理由は「なんかカッコイイから」程度のものだったのだが、マインスイーパーで伝搬が発生するような学習方法は難しい気がしたため変更。囲碁や将棋と比べて、盤面の変化がどのように起こるかが非常に分かりにくい。「あの状態に遷移するとクリアしやすいぞ!あの状態を目指せ!」と分かったところで、とてもじゃないが再現できないと判断したため。
そんな感じの知識を手に入れて、あとはゴリゴリ実装して終了。
改善できると分かってる箇所は多いんで、そのうち対応する。 そ の う ち 。
これ買った。いろんな記事で「読んどけ」って宣伝されてたため。機械学習系の書籍は多いけど、強化学習に絞った書籍ってのは少ないらしい。その中で、こいつがオススメ~みたいな雰囲気のが多かった。
あ と で 読 む
ブログ事始め
事始め
はてなブログ始めました。
何書いてくの?
特にとりとめもなく、思ったことをば。
興味のあること、記事になりそうなこと郡
- プログラミング
- 特にC#,VisualStudio
- ゲーム制作
- Unity
- エロゲ
- 特にFavorite作品
- 同人イベント
- オールジャンル、オリジナル、技術、批評、酒などなど
- 酒
- 特に日本酒
- その他適当な雑記
備忘録的なものから読書感想文まで何でも置いてく予定。
もともとmixiで日記書いてたり、自鯖にWordpress置いてブログ書いてたり、GitHub Pagesでブログ書いてたりしたんだけど、結局管理が面倒だったり、Markdownが使えなかったりなんだりで、はてなブログに流れ着いたマン。
のんびりやっていく。