2017-12-26 17 views
1

すでに低い、損失は次のように示しhttps://imgur.com/a/TwacmTensorflow損失は、私は強化学習とAIをやっていると私は奇妙な結果を得ている

そして、それは訓練だが、各ゲームの後に、それはですランダムプレイヤーとの戦い、加重マトリックスを持つプレイヤーのプレイ後、上下に移動:

基本的に私はオセロを学ぶことを学ぶ強化学習エージェントをやっています。 E-greedyを使用して、Tensorflow上のKerasを使用してリプレイと深いネットワークを体験してください。 Sigmoid、Relu、上に示した画像、tanhのような異なるアーキテクチャを試してみました。それらはすべて同様の損失を持っていますが、結果は少し異なります。 この例では、エージェントは100kプロのゲームから学習しています。ここ は0.005として、デフォルトの学習率とのアーキテクチャを、次のとおりです。

model.add(Dense(units=200,activation='tanh',input_shape=(64,))) 
model.add(Dense(units=150,activation='tanh')) 
model.add(Dense(units=100,activation='tanh')) 
model.add(Dense(units=64,activation='tanh')) 
optimizer = Adam(lr=lr, beta_1=0.9, beta_2=0.999, epsilon=1e-08, decay=0.0) 
model.compile(loss=LOSS,optimizer=optimizer) 

オリジナルコード:https://github.com/JordiMD92/thellia/tree/keras

だから、なぜ私はこれらの結果を得ますか? 私の入力は64ニューロン(8 * 8マトリックス)です。空白は0、黒い正方形は1、白い正方形は-1です。負の入力を使うのは悪いですか?

答えて

1

アクティベーション機能の問題である可能性があります。 tanhの代わりにreluを使用してみてください。深いq学習を使用している場合は、アクティベート関数が必要ない場合や、重みをリセットするオプティマイザに注意する必要があります。

+0

私はそれを試みます。あなたは層とニューロンの数がこの問題のために正しいと思われると思いますか? – user2335427

+0

@ user2335427あなたのデザインに合わせてあなたのモデルを考えています。 Cuzの場合、ニューロンは深いq学習のために各入力データの情報を保存するので、すべての可能な状態を考慮することができます。私は常にさまざまな種類の情報を異なる層に保存しています。たとえば、レイヤーにステートを格納したり、レイヤー内にステートを格納したりすることができます。 – hdD

+0

私はケラスを取り除きましたが、今は私はテンソルだけを使用しています。 Double DQNを実装し、さまざまな起動機能を試してみましたが、今はreluがうまくいきます。ありがとう。 最後の質問について:❑負の入力を使うのは悪いですか? – user2335427