2012-05-08 7 views
1

私はニューラルネットワークを訓練しており、ランダムウェイトから始めています。訓練の後、体重は変化したが、ニューラルネットワークの精度は開始体重と同じである。また、ネットワークのアーキテクチャをどのように変更するかは関係ありません。隠れ層のノード数、反復回数、フィーチャ数(次元削減のためにPCAを使用)これは開始時と同じ精度で実現します。これは、フィーチャの数に関するサンプルの数が少ないためですか? (私は675の例と9000の機能を持っています)。それとも何か他の理由がありますか?また、ロジスティック回帰で同じデータセットを試してみましたが、正確さは最大64%でしたが、ニューラルネットワークのトレーニング前後の50%よりはるかに優れていました。ニューラルネットワークの重みとコストは変わりますが、正確さは変わりません

答えて

3

一般的に、あなたのトレーニングの例は、あなたのフィーチャの数よりはるかに多いはずです。それは、あなたのPCAが物事をかなり落とさない限り、あなたを傷つけるでしょう。

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

それ以外の場合は、学習率の変更、適応学習率の使用、または運動量項の使用については言及していないので、それらを調べることをお勧めします。さらに、単純な古いバックプロップよりも多くの重み更新アルゴリズムがあります。 Levenberg-Marquardt Algorithmは試してみる価値があります。あなた自身で書いていないと仮定して、あなたの実装はすでにこれを持っているかもしれません。

早期停止のいくつかの形態も同様に有用かもしれません。

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

+0

たくさん(但し、2クラス間のパターンが問題空間にすぎている場合)、このような問題のためには小さすぎる、最も可能性が高いです。 PCAは、いくつかの例に対して機能の数を減らしているようです。それは分類です。私はMATLABでfmincgを使用していますが、これは適応学習率があると信じています。そして私はそれを正常化しました。 – cubearth

0

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

Octaveでニューラルネットワークを訓練しているとき、私は同様の問題を抱えていました。精度は約50%でした。私は2つのラベル0と1を持っていました。オクターブは0ではなく1からのインデックス作成を開始するので、精度は低くなりました。

0

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

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

:あなたは多層パーセプトロンを養成しようとしている場合

  • 9000の機能は、あまりにも多くのです。このような複雑な問題のためにSVMが必要になるかもしれません。
  • インスタンスの数が情報の
関連する問題