3

私はトレーニング中のこの 5-5-2 バックプロパゲーション ニューラル ネットワークを持っており、LeCun によるこの素晴らしい記事を読んだ後、彼が提案するいくつかのアイデアを実践し始めました。

現在、私は自分で作成した 10 倍の交差検証アルゴリズムで評価しています。これは基本的に次のようになります。

for each epoch      
  for each possible split (training, validation)
    train and validate
  end
  compute mean MSE between all k splits
end

私の入力と出力は標準化されており (平均 0、分散 1)、tanh 活性化関数を使用しています。すべてのネットワーク アルゴリズムは適切に動作しているようです。sin 関数を近似するために同じ実装を使用しましたが、かなりうまく機能します。

さて、問題はタイトルが示すとおりです。各トレーニング/検証セットを個別に標準化する必要がありますか、それともデータセット全体を一度標準化する必要がありますか?

後者を行った場合、ネットワークは意味のある予測を生成しないことに注意してください。ただし、出力を見るだけでなく、より「理論的な」答えを得ることが好きです。

ちなみに、私は C で実装しましたが、C++ にも慣れています。

4

2 に答える 2

7

ほとんどの場合、各トレーニング セットを個別に標準化する方がよいでしょう。交差検証の目的は、アルゴリズムがどの程度一般化されているかを把握することです。ネットワークを新しい入力に適用すると、入力は標準化パラメーターの計算に使用されたものではなくなります。データセット全体を一度に標準化すると、新しい入力が標準化した値の範囲外になる可能性が無視されます。

したがって、新しい入力を処理するたびに再標準化する予定がない限り (これはありそうもないことだと思います)、評価されるパーティションのトレーニング セットの標準化パラメーターのみを計算する必要があります。さらに、検証セットではなく、パーティションのトレーニング セットでのみこれらのパラメーターを計算する必要があります (つまり、10 分割の各パーティションはデータの 90% を使用して標準化パラメーターを計算します)。

于 2014-02-11T19:28:24.383 に答える
3

入力が正規分布であり、平均を差し引いて標準偏差で割って、N(0,1) 分散入力を取得すると仮定しますか?

はい、各トレーニングセットを個別に標準化するという@bogatronに同意しますが、検証セットデータも使用しないことは「必須」であるとより強く言います。問題は、トレーニング セットの範囲外の値ではありません。これで問題ありません。標準法線への変換は、任意の値に対して定義されています。この統計を介したとしても、トレーニング セットの検証データを使用できないため、データ全体の平均/標準偏差を計算することはできません。

検証セットの平均ではなく、検証セットでトレーニング セットの平均を使用することをさらに強調する必要があります。トレーニング中に使用された機能の変換と同じでなければなりません。検証セットを別の方法で変換することは有効ではありません。

于 2014-02-12T01:19:57.670 に答える