0

Java で単純なバックプロパゲーション + フィードフォワード ニューラル ネットワーク クラスを作成した後、シャドウ キャスター NN を使用して、四角形 (または三角形) が頂点に影を落とすかどうかを確認しようとしています。

入力 (正規化、8+2*targetNumber 合計):

  • ポイントライト座標 xL と yL
  • 三角形または四角形オブジェクトの座標 xt1,xt2,xt3 , yt1,yt2,yt3
  • 対象頂点座標 xT(i), yT(i)

出力 (正規化、targetNumber 合計):

  • (ポイント i):影あり (1.0f) または影なし (0.0f)

質問:考えるにはいくつのニューロンが必要ですか? 隠れ層ごとのニューロン数、隠れ層の数、トレーニングの最小反復回数などのすべての組み合わせを試す必要がありますか? それを予測する方法はありますか?

質問:数百万の頂点に対する通常のレイトレーサーと比較したこのアプローチのパフォーマンスについてはどうですか (NN はレイトレーサーよりも恥ずかしいほど並列しているようです)?

ここに画像の説明を入力 ここに画像の説明を入力 ここに画像の説明を入力 ここに画像の説明を入力

4

1 に答える 1

3

質問: 数百万の頂点に対する通常のレイトレーサーと比較したこのアプローチのパフォーマンスについてはどうですか (NN はレイトレーサーよりも恥ずかしいほど並列しているようです)?

あなたが解決しようとしている問題は、機械学習モデルの問題ではないようです。このような方法は、複雑な統計データの問題に適用する必要があります。この問題については、適切なアルゴリズムによる解決策を見つけることが人間には難しすぎます。このような簡単な問題 (非常に効率的なアルゴリズムを見つけることができるという意味で) は、深く分析することができます (2/3 次元のデータであるため) には、ニューラル ネットワークではなく (他の機械学習モデルでもなく) 古典的な方法を使用してアプローチする必要があります。 )。

これを実行しようとしても、問題の表現の準備がかなり不十分であり、ネットワークはそのようなデータを示すことによって「影のアイデア」を学習しません。データと一致するニューラル ネットワークで表現できる 2 つの多くのモデルがあります。 . 訓練されたネットワークの効率でさえ、「アルゴリズム」の代替とは比較できないようです。

要約すると、実際には、そのような方法を使用する理由はありません。

  • 問題の表現が悪いため、うまく機能しません(そして、「頭のてっぺんから」良い表現が見られません)
  • 効いても効かない

質問: 考えるにはいくつのニューロンが必要ですか? 隠れ層ごとのニューロン数、隠れ層の数、トレーニングの最小反復回数などのすべての組み合わせを試す必要がありますか? それを予測する方法はありますか?

前に言ったように、どのようなパラメータを使用しても、この種のデータはうまく学習できません。しかし、「将来の参照」のために - 「単純な」ニューラルネットワークの場合、実際には常に1つの隠れ層が必要です。ほとんどの場合、非表示層を増やしても実際には効果がありません。これは、消失勾配現象 (ディープ ラーニングで問題を解決できます) のためです。隠れ層のサイズにはいくつかの経験則がありますが、真に数学的な答えはありません。適切なオプションの 1 つは、多数の隠れユニットを使用し、強力な正則化を追加することです。これにより、隠れ層が大きすぎる結果である可能性があるネットワークの過学習を防ぐことができます。反復回数を考慮してください-決してすべきではありませんパラメータとして使用します。明確に定義された停止基準を満たさない限り、ネットワークをトレーニングする必要があります。反復回数はその基準の 1 つではありません。最も古典的でうまく機能するものは、一般化エラー (独立した検証セットのエラー) を測定し、それが上昇し始めたら学習プロセスを停止することです。

于 2013-08-31T17:22:57.993 に答える