2016-11-04 7 views
5

私は2048ゲームをプレイする神経ネットワークを訓練したい。私はNNが2048のような州のゲームのための良い選択ではないことを知っていますが、NNが経験豊富な人間のようにゲームをプレイする、つまり3方向にのみタイルを動かすことを実現したいと思います。2048ゲームをするためにニューラルネットワークを訓練するにはどうすればよいですか?

しかし、私たちは有効な出力がわからないので、NNを自己学習する方法を理解できません。通常、回帰では、正しい出力を知っていて、損失(例えば、二乗平均誤差)を計算して重みを更新することができます。しかし、2048年に有効な出力は基本的には不明です(もちろん、あなたが移動できる各方向のスコアを計算することができます。たとえば、差が最も大きい方向をscore_after_move - previous_scoreとすると有効な出力になりますが、それは自己学習する方法ではないと思います。 NN)。それで、2048ゲームの損失関数を定義することは可能ですか?最高のものは分化可能なものです。

次の質問は、ウェイトを更新するときです:各移動後または完全なゲームの後(ゲームオーバー)ですか?それが重要な場合

は:私のNNトポロジーは現在、単純なために次のようになります。

2D matrix of gaming board -> 2D matrix of input neurons -> 2D fully-connected hidden layer -> 1D 4-neuron layer

ので、各タイルは、第一の層に対応するニューロンへの入力となります(2Dのための特別な名前が完全に接続されています層?)。最後の層からの期待される出力は、長さ4のベクトルである。 [1、0、0、0]は「上」の移動方向になります。

今のところ私は2048ゲーム用のヘッドレスクラス(Python/NumPy)を実装しています。これは、ビジュアル入力を使用するのが遅く、さらに多くの作業が必要なためです。

P.S.たぶん私はこのゲーム(または一般的にゲーム)のNN学習について間違って考えています。私にもっと良い方法を教えてもらえたら、私はそれを感謝します。ありがとう:)

EDIT:強化学習は方法と思われる。だから、https://github.com/matthiasplappert/keras-rlが最善の方法であるように思わ

Demystifying Deep Reinforcement Learning

Action-Value Methods and n-armed bandit problems

Q-learning for Keras

Deep Reinforcement Learning for Keras

+0

をあなたは、これは面白いかもしれません:ここに完全にそれを忘れて、ソースへの約束のリンクですhttps://www.youtube.com/watch Δv= qv6UVOQ0F44 – Tim

+0

それはいいです:)私はまた、いくつかの遺伝的アルゴリズムを実装したい。残念なことに、著者は説明を書いていないので、ソースコードを読むだけです。 – jirinovo

+0

あなたはリクエストしたとおり、この質問をSOに移行することは可能ですが、トピックにあるようには見えないため、移行が拒否される可能性があります。 – whuber

答えて

3

:ここではいくつかの有用なリンクです。 OpenAI Gym環境APIで定義されたメソッドはほとんど実装する必要がありません。 keras-rl開発者からの回答がある詳細情報についてはhttps://github.com/matthiasplappert/keras-rl/blob/master/rl/core.py#L330

:これらは、step()reset()方法です私の2048年のゲームAIプロジェクトが完了しますhttps://github.com/matthiasplappert/keras-rl/issues/38

は私が勝った場合、私は」(ここではソースへのリンクを送信しますトン):)そうすることを忘れ

EDIT:/ https://github.com/gorgitko/MI-MVI_2016

+0

あなたはそれを終わらせましたか?p? –

+1

@tt_Gantz yeah :) [リンク](https://github.com/gorgitko/MI-MVI_2016)が追加されました – jirinovo

関連する問題