2

Q深層学習アルゴリズムを実装しようとしましたが、問題はありません。100000回のゲームプレイと1000回の繰り返しで各ステップを練習しました(ただし、 )それはまだ学んでいない。ネットワークとゲームはここで、リンクされた画像にhttp://imgur.com/a/hATfBある各トレーニング段階で何が起こるかです:バックプロパゲーションのためのQ深い学習アルゴリズムがうまく動作しない

double maxQval; 
double[] inputvec; 
int MaxQ = GetRandDir(state, out maxQval, out inputvec);//input vec is board 
double[] QtarVec = new double[] { 0, 0, 0, 0 }; 
double r = GetR((int)state[0], (int)state[1]); // GetR is reward 
QtarVec[MaxQ] = Qtar(r, maxQval); // backprop vector of 0's except Qtar replaces a value 

associator.Train(50, new double[][] { inputvec }, new double[][] { QtarVec });​ 

トレーニングデータの組が(私は画像にリンクされた入力、QTarget = R +ガンマ* MAXQ)で、MAXQです最大ネットワーク出力層の活性化またはランダムなもの(イプシロングリーディ)。 rは各移動から得られた報酬であり、-10は障害物であり、10は目標である。 (私はちょうど10の目標のためにと0他のすべてのために試してみましたalthogh。ここでトレーニングコードである。

public void Train(int nTrails) 
{ 
    double[] state = new double[] { 1, 1 }; // inital position 
    int its = 0; 
    for (int i = 0; i < nTrails; i++) 
    { 
     while (((state[0] < 4) && (state[1] < 4))&&((state[0] * 100 >0) && (state[1] * 100 >0)) && (state[0] != 3 && state[1] != 3))//while on board and not at goal  postion 
     { 
      double temp = r.NextDouble(); 
      int next = -1; 
      lines.Add(new Vector2((float)(state[0] * 100), (float)(state[1] * 100))); 
      if (temp < epsilon) 
      { 
       next = TrainRandIt(state); // move random direction, backprop 
      } 
      else 
      { 
       next = TrainMaxIt(state); // move in max activation direction, backprop 
      } 
      if (next == 0) .//updating postion 
      { 
       state[0]++; 
      } 
      else if (next == 1) 
      { 
       state[0]--; 
      } 
      else if (next == 2) 
      { 
       state[1]++; 
      } 
      else if (next == 3) 
      { 
       state[1]--; 
      } 
     } 
    } 
    state[0] = 1; 
    state[1] = 1; // resetting game 

} 

すべてのヘルプは高く評価した。

+0

インデントは、コードを読みやすくします。 –

+0

ありがとう –

答えて

1

あなたが提供リンクされた画像から判断すると、それだけで迷路ゲームのようなものですプレイヤーの位置と出力をプレーヤーが移動する方向(上下左右)に入力します。 Ryskamp Learning Machine(RLM)RLMには、一般的な機械学習エンジンとは異なるアプローチがあります。これまでのところ、私が提供したリンクを見て、それについてもっと学び、それをどう変えてくれるのかをお勧めします。

これはC#で書かれており、試してみたような迷路ゲームの例があります。Github pageを参照したり、サンプルアプリケーションと共にソースコードを複製/ダウンロードして試してみることもできます提供されます。

付属のDocumentations filesまたはgithub wikiを参照してください。

RLMはNugetでも利用できます。

関連する問題