回答:
MLP [多層パーセプトロン]のように入力変数が線形に結合されている場合、少なくとも理論的には、入力を標準化する必要はほとんどありません。その理由は、入力ベクトルの再スケーリングは、対応する重みとバイアスを変更することで効果的に元に戻すことができ、以前とまったく同じ出力が得られるためです。ただし、入力を標準化するとトレーニングが速くなり、ローカルオプティマで動けなくなる可能性が低くなるには、さまざまな実際的な理由があります。また、標準化された入力を使用すると、重みの減衰とベイズ推定をより簡単に行うことができます。
ニューラルネットワークでは、データを正規化するだけでなく、データをスケーリングすることをお勧めします。これは、エラーサーフェスでグローバルミニマムにすばやく近づくためのものです。次の図を参照してください。
NNへの一部の入力には、「自然に定義された」値の範囲がない場合があります。たとえば、平均値はゆっくりですが、時間の経過とともに継続的に増加します(たとえば、データベース内の多数のレコード)。
そのような場合、この生の値をネットワークに供給することはあまりうまく機能しません。実際の入力はこの範囲の高い部分から(そしておそらくネットワークが動作するように学習した範囲より上から)である一方で、範囲の低い部分の値についてネットワークを教えます。
この値を正規化する必要があります。たとえば、前回の入力から値がどれだけ変化したかをネットワークに伝えることができます。この増分は通常、特定の範囲で高い確率で定義できるため、ネットワークへの適切な入力になります。
ニューラルネットワークを外側から見ると、いくつかの引数を取り、結果を生成する関数にすぎません。すべての関数と同様に、ドメイン(つまり、一連の正当な引数)があります。ドメイン内にあることを確認するには、ニューラルネットに渡す値を正規化する必要があります。すべての関数と同様に、引数がドメインにない場合、結果が適切であるとは限りません。
ドメイン外の引数に対するニューラルネットの正確な動作は、ニューラルネットの実装によって異なります。しかし、全体として、引数がドメイン内にない場合、結果は役に立ちません。
ニューラルネットワークに入力する前に入力特徴を正規化する必要がある理由は2つあります。
理由1:のa Feature
がDataset
他と比較して大きい場合、この大きなスケールの機能が支配的になり、その結果、ニューラルネットワークの予測は正確ではなくなります。
例:従業員データの場合、年齢と給与を考慮すると、年齢は2桁の数字になりますが、給与は7桁または8桁(100万など)になります。その場合、給与がニューラルネットワークの予測を支配します。ただし、これらの機能を正規化すると、両方の機能の値は(0〜1)の範囲になります。
理由2:ニューラルネットワークのフロントプロパゲーションには、重みと入力フィーチャのドット積が含まれます。したがって、値が非常に高い場合(画像データと非画像データの場合)、出力の計算には多くの計算時間とメモリがかかります。逆伝播時も同様です。その結果、入力が正規化されていないと、モデルの収束が遅くなります。
例:画像分類を実行すると、各ピクセルの値の範囲が0〜255になるため、画像のサイズは非常に大きくなります。この場合の正規化は非常に重要です。
以下は、正規化が非常に重要な例です。
答えはシナリオ次第だと思います。
F(input)= outputとなるように、NN(ニューラルネットワーク)を演算子Fと見なします。この関係が線形であり、F(A * input)= A * outputである場合、入力/出力をそのままの形式で正規化しないか、両方を正規化してAを排除することを選択できます。明らかに、この線形性の仮定は分類タスク、または確率を出力するほぼすべてのタスクで違反した場合、F(A *入力)= 1 *出力
実際には、正規化により、適合できないネットワークを適合可能にすることができます。これは、実験者/プログラマーにとって重要です。それにもかかわらず、正規化の正確な影響は、ネットワークアーキテクチャ/アルゴリズムだけでなく、入力と出力の事前統計にも依存します。
さらに、NNはブラックボックス方式で非常に困難な問題を解決するためにしばしば実装されます。つまり、根本的な問題は非常に貧弱な統計的定式化を持ち、正規化の影響を評価することを難しくし、技術的な利点をもたらします(適合可能になります)。統計への影響を支配する。
統計的な意味では、正規化は、出力の予測において非因果的であると考えられる変動を削除して、NNがこの変動を予測子として学習しないようにします(NNはこの変動を認識しないため、使用できません)。
正規化されていない入力特徴を使用する場合、損失関数は非常に細長い谷を持つ可能性があります。勾配降下法で最適化する場合、一部のパラメーターに関して勾配が急になるため、これは問題になります。急な斜面の間をバウンドしているため、サーチスペースに大きな振動が発生します。これを補うには、小さな学習率で最適化を安定させる必要があります。
機能x1とx2を検討します。それぞれ0〜1と0〜100万の範囲です。対応するパラメーター(たとえば、w1とw2)の比率も大きくなることがわかります。
正規化は、損失関数をより対称的/球形にする傾向があります。勾配は全体的な最小値を指す傾向があり、より大きなステップを実行できるため、これらは最適化がより簡単です。
正規化が必要な理由は、関数のドメイン内の1つの場所で適応ステップがどのように進むかを見て、問題をある大きな値で変換された同じステップに相当するものに単に移動するだけだからです。ドメインでは、異なる結果が得られます。結局のところ、線形要素をデータポイントに適合させるという問題です。ピースが回転せずにどれだけ移動し、その1つのトレーニングポイントに応じてどれだけ回転する必要がありますか?ドメインの異なる部分で変更手順を変更しても意味がありません。したがって、トレーニング結果の差を減らすために正規化が必要です。私はこれを書いていませんが、単純な線形関数の数学と、2つの異なる場所の1つのトレーニングポイントによってどのようにトレーニングされるかを見ることができます。この問題はいくつかの場所で修正されているかもしれませんが、私はそれらに精通していません。ALNでは、問題は修正されており、wwarmstrong AT shaw.caに書面を送っていただければ、論文をお送りします。
非表示レイヤーは、データの複雑さに応じて使用されます。線形分離可能な入力データがある場合は、ORゲートなどの非表示レイヤーを使用する必要はありませんが、非線形分離可能なデータがある場合は、ExOR論理ゲートなどの非表示レイヤーを使用する必要があります。任意のレイヤーで取得されるノードの数は、出力の相互検証の度合いによって異なります。