7

過去のデータに基づいてソフトウェアプロジェクトの時間とコストを予測するためのツールを作成しています。このツールはニューラルネットワークを使用してこれを実行します。これまでのところ、結果は有望ですが、ネットワークのプロパティを変更するだけで、さらに多くの最適化を実行できると思います。これらの設定に関しては、ルールやベストプラクティスさえないようですので、経験のある人が私を助けてくれるなら、私はそれを大いに感謝します。

入力データは一連の整数で構成されており、ユーザーが望む高さまで上がる可能性がありますが、ほとんどの場合、私が思っていたように100,000未満になります。プロジェクトの人数やプロジェクトのコストなどの詳細、およびデータベースエンティティとユースケースに関する詳細です。

合計で10個の入力と2個の出力(時間とコスト)があります。私はResilientPropagationを使用してネットワークをトレーニングしています。現在、10個の入力ノード、5個のノードと2個の出力ノードを持つ1個の隠れ層があります。私は5%のエラー率を下回るようにトレーニングしています。

アルゴリズムはWebサーバー上で実行する必要があるため、どこにも行かないように見えるときにトレーニングを停止する手段を講じました。これは、10,000回のトレーニング反復に設定されています。

現在、少し変化するデータを使用してトレーニングしようとすると、ユーザーが期待する範囲内でトレーニングに時間がかかり、10,000回の反復制限に何度も達します。

ニューラルネットワークを使うのはこれが初めてで、何を期待できるのかよくわかりません。ネットワークにどのような設定を使用する必要があるか、および反復制限についていくつかのヒントを教えていただければ幸いです。

ありがとうございました!

4

1 に答える 1

10

まず第一に、あなたのネットワークについてたくさんの情報を提供してくれてありがとう!ここに、より明確な画像を提供するためのいくつかの指針があります。

  • 入力を正規化する必要があります。1つのノードの平均値が100,000で、別のノードの平均値が0.5の場合、2つの入力による同等の影響は見られません。そのため、それらを正規化する必要があります。
  • 10個の入力ノードに対して5個の隠れニューロンだけですか?少なくとも2倍の入力数が必要だということをどこかで読んだことを覚えています。20以上の隠れニューロンを試してください。これにより、ニューラルネットワークモデルがより複雑なモデルを開発できるようになります。ただし、ニューロンとネットワークが多すぎると、トレーニングデータセットが記憶されるだけです。
  • 弾力性のあるバックプロパゲーションは問題ありません。Levenberg-Marquardtのような他のトレーニングアルゴリズムがあることを覚えておいてください。
  • トレーニングセットはいくつありますか?ニューラルネットワークは通常、有用な予測を行うために大きなデータセットを必要とします。
  • まだ行っていない場合は、ウェイトトレーニングアルゴリズムに運動量係数を追加して、速度を上げることを検討してください。
  • オンライントレーニングは、バッチトレーニングよりも一般的な予測を行うのに適している傾向があります。前者はネットワークを介してすべてのトレーニングセットを実行した後に重みを更新し、後者はすべてのデータセットを通過した後にネットワークを更新します。あなたに電話ですよ。
  • データは離散的ですか、それとも連続的ですか?ニューラルネットワークは、連続関数よりも0sとsでより良い仕事をする傾向があります。1前者の場合は、シグモイド活性化関数の使用をお勧めします。非表示層と出力層の組み合わせtanhlinear活性化関数は、連続的に変化するデータでうまく機能する傾向があります。
  • 別の隠しレイヤーが必要ですか?ネットワークが複雑な入出力サーフェスマッピングを処理している場合に役立つことがあります。
于 2010-05-23T20:34:30.363 に答える