ニューラルネットワークと逆伝播について学んでいます。入力、出力、隠れ層、重み、バイアスなどに関して、ネットワークがどのように機能するかを理解していると思います。ただし、問題に適合するようにネットワークを設計する方法をまだ完全には理解していません。つまり、ドラフトのプレイ方法をニューラル ネットワークに学習させたいとします。この問題をニューラル ネットワークの設計にどのように変換すればよいでしょうか? 乾杯 :)
4 に答える
ニューラル ネットワークの設計には多くの決定が必要であり、正解は 1 つではありません。ただし、考えるのに役立つことが多い一般的な質問がいくつかあります。
出力として何を生成しようとしていますか? Drafts は、ニューラル ネットワークでプレイするのが難しいゲームのように思えます。多くの潜在的な動きがあり、ターンごとに利用可能な動きが変化するためです。しかし、おそらく出力を次の動きにしたいでしょう。
あなたのインプットは何ですか?これには、ニューラル ネットワークに実行させたい決定を下すのに役立つと思われるものをすべて含める必要があります。下書きの例では、ボード上のすべてのピースの位置をニューラル ネットワークに与える必要があるでしょう。
リカレントまたはフィードフォワード? 一般に、過去に行われたことに関する情報を提供する特別な理由がない限り、逆伝播でネットをトレーニングできるため、フィード フォワードを使用することをお勧めします。たとえば、下書きの場合は、おそらくフィードフォワード ネットワークを使用することをお勧めします。
隠しレイヤーが必要ですか?これは答えを知るのが難しい質問であり、入力が占有する高次元空間についてよく知っていない限り、いくつかの実験が必要になる場合があります。Drafts は非常に複雑なため、隠しレイヤーが必要なように思えますが、それを確認するのは困難です。
明らかに、ニューラル ネットワークのセットアップに関して決定できる/しなければならない決定は他にもたくさんありますが、うまくいけば、これらがあなたを前進させるでしょう。
さて、あなたの問題は他の NN 設計者の問題だと思います... 常に心に留めておかなければならないことの 1 つは、NN はヒューリスティック モデルであるということです。したがって、彼らは私たちと同じように経験から学びます.純粋な知識をNNに「挿入」することはできません(他の機械学習アルゴリズムでは可能です)。あなたの問題、または私が直面する一般的な問題に対する私のアプローチは、質問: 「これを誰かにどのように教えたらよいでしょうか?」
ゲームのルールと、どの変数を使用してプレイできるか、何を達成したいかを知っている/定義する必要があります。次に、子供のように、ゲームに勝つことを目標にネットワークをトレーニング (データを取得) する必要があります。十分なデータと重みの変更の後、NN はゲームに勝つための合理的なプレイに答えることができるはずです...より多くのデータを取得するほど、より正確な答えが得られる可能性があり、したがって、より良いプレーヤーになります!
これは単純に思えるかもしれませんが、モデルのタイプ、適切な損失関数、適切なアーキテクチャの微調整、トレーニングなど、ニューラル ネットワークやその他の機械学習アルゴリズムのトレーニングには考慮しなければならない多くの側面があります。 /テストデータのサンプリングなど無限に...
それは決定的でも直線的でもありませんが、私の見解です;)頑張ってください!
ニューラル ネットワーク (またはその他の種類のモデル) を使用して問題をモデル化することは、困難な問題です。これには特効薬はありません。他の人が開発した手法について読んで、それらを自分の問題に適用できるかどうかを確認することをお勧めします。次のような参照から始めることができます。
https://en.wikipedia.org/wiki/Types_of_artificial_neural_networks
他の例については、Google Scholar で検索してください。