2048+tensorflow+kerasでパズルをAI攻略!!

半年ぶりのブログになります(*´艸`*)

ブログはやめたり仕事が休暇明けだったり、

LinkedInにポストしてもいいんですが、

備忘録がてらブログにもまとめておきます(*´艸`*)

題名はtwで言い散らかしてた2048+tensorflow+kerasです(*´艸`*)

 

tensorflowは昔のブログでも参照してください・・・

まずは2048の仕様からwww

・タイルがランダムに最初は二個、次手から一個出現する

・同じ数なら結合出来タイルがまとまりスコアも上がる

・縦横四方向にフリック出来るけど三方向くらいに絞らないと混乱しやすい

この辺りが仕様と攻略法です(*´艸`*)

では何故tensorflowではなくkerasを使ったかと言うと、

・タイルもランダム、フリックも適宜でデータを準備しにくい

・盤面上の状態を予測して手を打つのが強化学習(観測・報酬・行動)だった

・tensorflow2.0ではkerasもあらかじめパッケージの一部として含まれる

と、この辺りです(*´艸`*)

tensorflowのサンプルプログラムは前にポストしたこちらを御覧くださいwww

https://hinaser.github.io/Machine-Learning/sample-rock-scissors-paper.html

kerasの公式ドキュメントはこちらです^^

https://keras.io/ja/

ざっくり見ただけでも学習モデルの構築が簡素化されてるのが分かると思います(*´艸`*)

(入出力階層やレイヤーは下記実際のGitコードをご参照に)

kerasの軽い参考サンプルはこちら↓

https://qiita.com/yukiB/items/0a3faa759ca5561e12f8

keras(DQN)の概念を分かりやすく解説

https://qiita.com/Ugo-Nama/items/08c6a5f6a571335972d5

そして最初は混乱しましたが、データはどちらも数値計算numpyとして扱います(;´∀`)

まぁ画像・テキストその他生データで扱ったら複雑になりすぎるからね・・・

制御系やる人ならビット演算的にイメージすると分かりやすいかもしれませんwww

そんな初歩がこちら↓

https://qiita.com/hiroeorz@github/items/33b85529be0829f34973

通常配列⇔numpy配列変換は適宜ググってくださいwww

 

それらから開発中の動画がこちらwww

AI動作がバグってるので途中で止まります(起動自体は出来た)

→入出力階層の単子と配列の型が合わなかったり、初期化失敗したりした

今は普通に動きますが、そもそも攻略ではなく高得点を目指し、

更にタイルの出現がランダムなので点数のばらつきも多いですwww

60秒動画なので途中までですが、ゲームオーバーになるまで動きますwww

実際のコードはGitに上げたのでそちらを御覧ください(*´艸`*)

https://github.com/infinitybaseshin001/2048_DQN

動作仕様とかはREADME.txtを、

実際のコード作業は作業.txtをご参照願います(*´艸`*)

実際に動かして見てみましょう!www

 

そしてまだちょいちょいイジってるって、実際に動かすと分かりますが、

動きに未成熟な部分があると言えばあります(;´∀`)

というか改善の余地の部分なのかもしれませんが、

・select_actionとかのgain計算の精度を上げる

・AIが一手先しか予測出来ない(例えば左の後下とか)

このgain計算はサンプルからそのままなのでイジってないし、

AIの予測もtensorflowの線形学習が含まれたらマシになるかもしれませんwww

 

 

こんなところですかね!(*´艸`*)

pythonを始めて半年でここまで!www

同じGitにpythonサンプルのSCMも作りましたwww

最近WEBもpythonで作ることがありますね・・・

フレームワークだけダウンロードして放置ですが!www

そして実アプリの設計準備を年内に始めて、

更に実際のAIはそろそろtensorflow2.0を試してみようと思います(*´艸`*)

tensorflow+kerasがあらかじめパッケージングされてると、

上記改善も少し楽かもしれませんwww

そろそろステイブル版も出そうだしwww

 

ということで久しぶりのお仕事ブログでしたwww

半年遊んでた訳じゃないっすよ(*´艸`*)

もう年末締めもこのブログだがな!www

それでは良いお年を、と言うには早すぎますが、

またごそごそtw/LinkeInで言い散らかすと思います(*´艸`*)

ってか大きい進捗があればこのブログに追記するかもwww

なんだかんだで趣味ブログも月イチで更新してるし、

アウトプットにインプットが追い付かない的な、

AIも魔法の杖ではないしきっちりロジック組まなければいけない、

そもそもAIとは何で何に使うかって、深淵編で書いた気がしますwww

チート技術ではなく進歩する技術の一環として、

例えばブロックチェーンと同じく技術記事の一つとして書いてもいいかもね、

ってお話でした(*´艸`*)

 

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください