0

エコー状態ネットワークに精通している人はいますか?C#でエコー状態ネットワークを作成しました。目的は、入力をGOODとNOTGOODに分類することだけでした。入力はdouble数の配列です。この分類では、エコー状態ネットワークが最善の選択ではないことはわかっていますが、この方法で行う必要があります。

私の問題は、ネットワークをトレーニングした後、一般化できないことです。(教育入力ではなく)外部データを使用してネットワークを実行すると、約50〜60%の良好な結果しか得られません。

詳細:私のエコー状態ネットワークは、関数近似器のように機能する必要があります。関数の入力は17個のdouble値の配列であり、出力は0または1です(入力を不良または良好の入力に分類する必要があります)。

だから私はネットワークを作成しました。これには、17個のニューロンを含む入力層、ネロン数を調整できるリザーバー層、および0または1が必要な出力用に1個のニューロンを含む出力層が含まれます。より簡単な例では、出力フィードバックは使用されません(出力フィードバックを使用しようとしました)同様に、しかし何も変わっていません)。

リザーバー層の内部マトリックスも調整可能です。調整可能なスパースネス比を使用して、2つのdouble値(最小、最大)の間の重みを生成します。値が大きすぎる場合は、マトリックスが1よりも小さいスペクトル半径を持つように標準化されます。リザーバー層は、シグモイド関数とタン活性化関数を持つことができます。

入力レイヤーは、ランダムな値でリザーバーレイヤーに完全に接続されています。したがって、トレーニング状態で、トレーニングデータを使用して内部X(n)リザーバーのアクティブ化を計算し、それらをマトリックス行表示に収集します。目的の出力データマトリックス(現在は1 ot 0の値を持つベクトル)を使用して、出力の重さ(リザーバーから出力まで)を計算します。リザーバーは出力に完全に接続されています。誰かがエコー状態ネットワークを使用した場合、今私が話していることです。これは疑似逆行列です。

問題は、ネットワークを調整して一般化を改善するにはどうすればよいかということです。外部データセット(トレーニングデータセットではない)を使用して、目的の出力の50〜60%以上をヒットすること。トレーニングデータセットを使用してネットワークを再度実行すると、80〜90%の非常に良い結果が得られますが、より一般化することが必要です。

誰かがエコー状態ネットワークでもこの問題を抱えていることを願っています。

4

3 に答える 3

2

私が正しく理解していれば、あなたはあなたが訓練する一連の既知の分類されたデータを持っています、そしてあなたはあなたが後で分類するいくつかの未知のデータを持っています。トレーニング後、既知のデータを適切に再分類することはできますが、未知のデータを適切に再分類することはできません。これは、過剰適合と呼ばれると思います。ネットワークの厳しさを緩和したり、ノード数を減らしたり、非表示のデータセットに基づいてトレーニングしたりすることを検討することをお勧めします。

人々のやり方は、トレーニングセットA、検証セットB、テストセットCです。AとBの正しい分類は知っていますが、Cはわかりません(既知のデータをAとBに分割しているため、およびCは、ネットワークで検出する値です)。トレーニングでは、ネットワークAのみを表示しますが、各反復で、成功を計算するためにAとBの両方を使用します。したがって、トレーニング中、ネットワークはAのみを見て、AとBの両方に存在する関係を理解し​​ようとします。 Bの実際の入力値と出力値を確認することはできませんが、現在の状態がBを正確に記述しているかどうかしかわからないため、過剰適合を減らすのに役立ちます。

通常、人々はデータの4/5をAに、1/5をBに分割しているように見えますが、もちろん、さまざまな比率を試すことができます。

最後に、トレーニングを終了し、未知のセットCについてネットワークが何を言うかを確認します。

非常に一般的で基本的な答えで申し訳ありませんが、おそらくそれは問題をよりよく説明するのに役立ちます。

于 2012-05-05T12:14:33.127 に答える
1

ネットワークが一般化されていない場合、それは過適合であることを意味します。

ニューラル ネットワークのオーバーフィッティングを減らすには、次の 2 つの方法があります。

  • より多くのトレーニング データを取得する
  • ニューロンの数を減らす

また、ネットワークに供給している機能について考えるかもしれません。たとえば、毎週繰り返される時系列の場合、1 つの特徴は「曜日」、「時間」、「分」などです。

ニューラル ネットワークには大量のデータが必要です。たくさんの例。数千。何千ものニューロンがない場合は、ほんの一握りのニューロンを含むネットワークを選択するか、回帰など、パラメーターが少なく、過適合になりにくい他のものを使用する必要があります。

于 2012-10-30T11:28:54.653 に答える
1

ここでの他の回答が示唆しているように、これは過剰適合の典型的なケースです。モデルはトレーニング データではうまく機能しますが、新しいテスト データにはうまく一般化されません。

Hugh の回答には、モデル内のパラメーターの数を減らす (つまり、リザーバーのサイズを縮小することによって) という良い提案がありますが、それが ESN に有効かどうかはわかりません。 ESN が解決できる値は、貯水池のサイズの対数に比例して大きくなります。モデルのサイズを縮小すると、実際にはモデルが機能しなくなる可能性がありますが、このタイプのモデルのオーバーフィッティングを避けるために必要な場合があります。

Superbest の解決策は、検証セットのパフォーマンスが向上しなくなったらすぐにトレーニングを停止する検証セットを使用することです。これは、早期停止と呼ばれる手法です。ただし、ご指摘のとおり、オフライン回帰を使用して ESN の出力重みを計算するため、検証セットを使用してモデル パラメーターの更新をいつ停止するかを決定することはできません。早期停止はオンライン トレーニング アルゴリズムでのみ機能します。

ただし、検証セットを別の方法で使用することもできます: 回帰の係数を正則化するために! 仕組みは次のとおりです。

  • トレーニング データを「トレーニング」部分 (通常、利用可能なデータの 80 ~ 90%) と「検証」部分 (残りの 10 ~ 20%) に分割します。
  • 回帰を計算するときは、通常の線形回帰を使用する代わりに、リッジ回帰ラッソ回帰エラスティック ネット回帰などの正則化手法を使用します。回帰の計算には、データセットの「トレーニング」部分のみを使用してください。
  • これらの正則化された回帰手法にはすべて、モデルの適合性とその複雑さのバランスをとる 1 つ以上の「ハイパーパラメーター」があります。「検証」データセットは、これらのパラメーター値を設定するために使用されます。これは、グリッド検索、進化的方法、またはその他のハイパーパラメーター最適化手法を使用して行うことができます。一般的に言えば、これらの方法は、ハイパーパラメータの値を選択し、「トレーニング」データセットを使用してモデルを適合させ、「検証」データセットで適合モデルのパフォーマンスを測定することによって機能します。N 回繰り返して、「検証」セットで最高のパフォーマンスを発揮するモデルを選択します。

正則化と回帰について詳しくは、http://en.wikipedia.org/wiki/Least_squares#Regularized_versionsを参照するか、機械学習や統計の教科書で調べてください。

また、 http://en.wikipedia.org/wiki/Cross-validation_(statistics)で相互検証手法の詳細を参照してください。

于 2015-01-27T20:42:36.397 に答える