3

Tic-Tac-Toe ボードの状態 (最終または中間) を「X 勝」、「O 勝」、または「引き分け」に分類するニューラル ネットワークの設定に苦労しています。

現在の解決策と結果について説明します。アドバイスをいただければ幸いです。

* データ セット * データセット = 958 の可能なエンド ゲーム + 958 のランダム ゲーム = 1916 のボード状態 (ランダム ゲームは不完全かもしれませんが、すべて合法です。つまり、両方のプレイヤーが同時に勝つことはありません)。

トレーニング セット = データセットの 1600 のランダム サンプル テスト セット = 残りの 316 ケース

私の現在の疑似ランダム開発シナリオでは、データセットには次の特徴があります。トレーニング セット: - "X" で 527 勝 - "O" で 264 勝 - 809 引き分け テスト セット: - "X" で 104 勝 - "O" で 56 勝 - 156 引き分け

* モジュレーション * 入力層: 18 個の入力ニューロンがあり、それぞれがボードの位置とプレーヤーに対応しています。したがって、ボード (B=空白): xxo ox B B o X は次のようにエンコードされます: 1 0 1 0 0 1 0 1 1 0 0 0 0 0 1 1 0

出力層: 各結果 (X 勝、O 勝、引き分け) に対応する 3 つの出力ニューロン。

* 建築 *

基づく: http://www.cs.toronto.edu/~hinton/csc321/matlab/assignment2.tar.gz

1 つの隠れ層 隠れ層の活性化関数: ロジスティック出力層の活性化関数: Softmax エラー関数: Cross-Entropy

* 結果 *

100% の正しい分類率を達成するパラメーターの組み合わせはないようです。いくつかの例:

NHidden     LRate   InitW   MaxEpoch Epochs FMom    Errors  TestErrors
8           0,0025  0,01    10000   4500    0,8     0       7
16          0,0025  0,01    10000   2800    0,8     0       5
16          0,0025  0,1     5000    1000    0,8     0       4
16          0,0025  0,5     5000    5000    0,8     3       5
16          0,0025  0,25    5000    1000    0,8     0       5
16          0,005   0,25    5000    1000    0,9     10      5
16          0,005   0,25    5000    5000    0,8     15      5
16          0,0025  0,25    5000    1000    0,8     0       5
32          0,0025  0,25    5000    1500    0,8     0       5
32          0,0025  0,5     5000    600     0,9     0       5
8           0,0025  0,25    5000    3500    0,8     0       5

重要 - 次のいずれかを改善できると思われる場合: - データセットの特性 (トレーニングとテスト ケースのソースと量) が最適ではありません。- 別の問題の変調がより適しています (入力/出力ニューロンのエンコード) - より優れたネットワーク アーキテクチャ (隠れ層の数、活性化/エラー関数など)。

この点に関する私の現在のオプションは、最適ではないにしても、システムが 100% の正しい分類率を持つことを妨げるべきではないと仮定して、他の考えられる問題に焦点を当てたいと思います。

言い換えれば、ゲームの単純さを考えると、このデータセット/変調/アーキテクチャでそれを行う必要があるため、パラメータに関して何が間違っているのでしょうか?

私は ANN の経験があまりなく、私の主な質問は次のとおりです。16 個の隠れニューロンを使用して、ANN は各隠れユニットを「特定の方法で勝利した特定のプレイヤー」に関連付けることを学習できます (3 つの異なる行 + 3 つの異なる列 +対角2本)※2人プレイ

この設定では、重みの「最適な」セットは非常に簡単です。各非表示ユニットには、3 つの入力ユニット (プレーヤーの行、列、または対角線に対応する) からの「より大きな」接続重みと、「より大きな」接続重みがあります。出力ユニットの 1 つに (そのプレイヤーの「勝利」に対応します)。

上の表が示すように、何をしてもテストエラーの数を減らすことはできません。

アドバイスをいただければ幸いです。

4

1 に答える 1

2

あなたはすべてを正しく行っていますが、ここでは難しい問題に取り組もうとしているだけです。つまり、三目並べ構成のいくつかの例を他のすべての構成に一般化しようとしています。

残念ながら、使用する単純なニューラル ネットワークは、入力 (近傍) の空間構造を認識せず、対称性を利用することもできません。したがって、完全なテストエラーを取得するには、次のいずれかを実行できます。

  • ほとんどの (またはすべての) 可能な構成を含むようにデータセットのサイズを増やします。これにより、ほとんどのセットアップでゼロ トレーニング エラーが示されるように、ネットワークは単純に記憶できるようになります。

  • 一般化するより多くの構造がある別の問題を選択します。

  • 対称性 (重みの共有など) や入力の空間的関係 (さまざまな特徴など) を捉えることができるネットワーク アーキテクチャを使用します。畳み込みネットワークはその一例にすぎません。

于 2012-08-07T13:27:03.940 に答える