1

私はニューラル ネットワークをトレーニングしており、ランダムな重みから始めています。トレーニング後、重みは変更されましたが、ニューラル ネットワークの精度は開始時の重みと同じです。また、ネットワークのアーキテクチャをどのように変更してもかまいません。隠れ層のノード数、反復回数、特徴量の数(次元削減に PCA を使用) 開始時と同じ精度で出てきます。これは、機能の数に対して例の数が少ないためでしょうか? (675 の例と 9000 の機能があります)。それとも、これは別の理由によるものですか?また、ロジスティック回帰で同じデータセットを試してみたところ、最大 64% の精度が得られましたが、ニューラル ネットワークを使用したトレーニングの前後で取得している 50% よりもはるかに優れています。

4

3 に答える 3

3

一般に、トレーニング例は機能の桁数を上回っている必要があり、その逆ではありません。あなたの PCA が物事をかなり下げない限り、それはあなたを傷つけるでしょう.

機能を正規化することを覚えていましたよね? これは通常 PCA で処理されますが、使用しているソフトウェアによっては、最初に正規化する必要がある場合があります。

それ以外では、学習率の変更、適応学習率の使用、モメンタム項の使用について言及されていないので、それらを検討することをお勧めします。さらに、単純な古い backprop よりも多くの重み更新アルゴリズムがあります。Levenberg-Marquardt アルゴリズムは試してみる価値があるかもしれません。自分で書いていないと仮定すると、実装にはすでにこれがあるかもしれません。

何らかの形の早期停止も同様に役立つ場合があります。

分類をしようとしているのか、回帰をしようとしているのかについては言及していません。分類を行っている場合は、出力ノードのアクティベーション関数が、使用しているクラス ラベルのタイプと一致していることを確認してください。Logsig の範囲は 0 から 1 ですが、Tansig は -1 から 1 です。回帰を実行している場合は、出力に線形活性化があることを確認するか、少なくとも可能な出力の範囲がトレーニング例と一致するようにしてください。

于 2012-05-08T18:41:53.540 に答える
0

分類を行っている場合、問題はラベルにある可能性があります。

Octave でニューラル ネットワークをトレーニングしているときに、同様の問題が発生しました。精度は約 50% でした。0 と 1 の 2 つのラベルがありました。オクターブは 0 ではなく 1 からインデックス付けを開始するため、精度は低かったです。ラベルを調べることをお勧めします。

于 2014-03-26T09:41:36.057 に答える
0

まず、分類精度はデータセットに依存します。すべての人工知能手法は、ベクトル空間でデータを分離しようとします。ただし、そもそもデータを分離できない可能性があり、場合によっては 64% が可能な限り最良の結果に非常に近い可能性があります。使用しているデータセットの種類 (よく知られたベンチマークの 1 つですか、それとも解決しようとしている特定の問題ですか?)

第 2 に、重みが変化するという事実は、ネットワークがトレーニングされていることを必ずしも意味しません。トレーニング後、重みが変化するかどうかを確認する必要はありませんが、総二乗誤差が減少するかどうかを確認してください。大幅に減少していない場合、ネットワークはまったくトレーニングされていない可能性があります。あなたの場合、トレーニング後に精度が 50% のままである場合 (2 クラスの問題について話していると思います)、ほとんどの場合、その方法はまったく機能しません。最初に、はるかに単純なデータセットで試して、機能することを確認する必要があります。

さらに:

  • 多層パーセプトロンをトレーニングしようとしている場合、9000 個の機能は多すぎます。このような複雑な問題にはおそらく SVM が必要です。
  • おそらく、このような問題にはインスタンスの数が少なすぎます (ただし、2 つのクラス間のパターンが問題空間から離れすぎている場合)。
于 2014-03-26T14:22:41.387 に答える