4

Tic-Tac-Toeを再生する人工ニューラルネットワークがありますが、まだ完成していません。


私がまだ持っているもの:

  • すべてのタイムステップまたは移動「t」の整数値を持つ報酬配列「R[t]」(1 =プレーヤーAが勝ち、0 =引き分け、-1 =プレーヤーBが勝ちます)
  • 入力値は、ネットワークを介して正しく伝播されます。
  • 重みを調整するための式:

ここに画像の説明を入力してください


何が欠けている:

  • TD学習:TD(λ)アルゴリズムを使用してネットワークのエラーを「逆伝播」する手順がまだ必要です。

しかし、私はこのアルゴリズムを本当に理解していません。


これまでの私のアプローチ...

遠位状態はそれほど多くの報酬を得てはならないため、トレース減衰パラメータλは「0.1」である必要があります。

学習率は、両方のレイヤー(入力と非表示)で「0.5」です。

報酬が遅れる場合です。ゲームが終了するまで、報酬は「0」のままです。すると、報酬は、最初のプレーヤーの勝利の場合は「1」、2番目のプレーヤーの勝利の場合は「-1」、引き分けの場合は「0」になります。


私の質問:

  • ネットのエラー(TDエラー)はいつどのように計算しますか?
  • エラーの「バックプロパゲーション」をどのように実装できますか?
  • TD(λ)を使用して重みをどのように調整しますか?

よろしくお願いします:)

4

3 に答える 3

2

この作業を真剣に行う場合は、TD-lambdaを理解することが非常に役立ちます。Sutton and Bartoの著書、「Reinforcement Learning」は、HTML形式で無料で入手でき、このアルゴリズムについて詳しく説明しています。基本的に、TD-lambdaが行うことは、ゲームの状態とゲーム終了時に期待される報酬との間のマッピングを作成することです。ゲームがプレイされると、勝利する州につながる可能性が高い州は、期待される報酬値が高くなる傾向があります。

三目並べのような単純なゲームの場合は、表形式のマッピングから始めることをお勧めします(考えられるすべてのゲーム状態に対して期待される報酬値を追跡するだけです)。次に、それが機能するようになったら、代わりにNNをマッピングに使用してみることができます。しかし、最初に別のより単純なNNプロジェクトを試すことをお勧めします...

于 2011-01-30T22:56:18.093 に答える
0

私が覚えている限り、既知の結果セットを使用してトレーニングを行っているため、既知の入力の出力を計算し、そこから既知の出力値を差し引くと、それがエラーになります。

次に、エラーを使用してネットを修正します-デルタルールで調整された単一レイヤーNNの場合、0.5のイプシロンが高すぎることを知っています-0.1のようなものがより良い-遅いがより良いです。バックプロパゲーションを使用すると、もう少し高度になりますが、NNの数式の記述は複雑で理解しにくいことを覚えている限り、それほど複雑ではありません。

http://www.codeproject.com/KB/recipes/BP.aspxを ご覧ください

または「バックプロパゲーションc」のグーグル-コードで理解する方がおそらく簡単です。

于 2011-02-08T21:14:34.160 に答える
0

私もこれについて混乱していますが、これがその仕組みだと思います。

エンドノードから始めて、R(受信した出力)とE(期待した出力)をチェックします。E = Rの場合は問題なく、変更を加える必要はありません。

E!= Rの場合、しきい値などに基づいて、それがどれだけ離れているかを確認し、重みまたはしきい値を少し上下にシフトします。次に、新しい重みに基づいて、戻って、それが高すぎるか低すぎるかを推測し、より弱い効果で繰り返します。

私はこのアルゴリズムを実際に試したことがありませんが、それは基本的に私が理解しているアイデアのバージョンです。

于 2011-01-31T01:24:19.303 に答える