- ニューラルネットワークでバイアスノードが使用される理由
- いくつ使うべきですか?
- どのレイヤーで使用する必要があります:すべての非表示レイヤーと出力レイヤー?
回答:
ニューラルネットワークのバイアスノードは、常に「オン」になっているノードです。つまり、指定されたパターンのデータに関係なく、その値は設定されます。これは、回帰モデルのインターセプトに類似しており、同じ機能を果たします。ニューラルネットワークが特定のレイヤーにバイアスノードを持たない場合、とは異なる次のレイヤーで出力を生成することはできません(線形スケール、または通過時にの変換に対応する値)アクティベーション関数)フィーチャ値が。0 0 0
簡単な例を考えてみましょう。2つの入力ノードx 1とx 2、および1つの出力ノードyを持つフィードフォワードパーセプトロンがあります。 x 1およびx 2はバイナリフィーチャであり、参照レベルx 1 = x 2 = 0に設定されます。これらの2 0に任意の重みw 1およびw 2を乗算し、積を合計して、任意のアクティベーション関数に渡します。バイアスノードなしで、1つのみ出力値が可能です。これにより、非常に低い適合が得られる場合があります。たとえば、ロジスティックアクティベーション関数を使用する場合、は.5である必要があり、これはまれなイベントを分類するにはひどいものになります。
バイアスノードは、ニューラルネットワークモデルにかなりの柔軟性を提供します。上記の例では、バイアスノードなしで可能な唯一の予測割合であったが、バイアスノードと、任意に割合(0 、1 )パターンに適合することができ、X 1 = X 2 = 0。各層について、Jバイアスノードが追加されて、バイアスノードが追加され、N個のJ + 1ここで、(推定される追加のパラメータ/重みをN個のJ + 1は、階層内のノードの数であり、J)。適合させるパラメータが多いほど、ニューラルネットワークのトレーニングに比例して時間がかかります。また、学習する重みよりもかなり多くのデータがない場合、過剰適合の可能性が高くなります。
この理解を念頭に置いて、明示的な質問に答えることができます。
シンプルで短い答え:
私の修士論文のいくつかの実験(59ページなど)で、バイアスは最初のレイヤーにとって重要である可能性がありますが、特に最後の完全に接続されたレイヤーでは、大きな役割を果たさないようです。したがって、最後のレイヤーではなく、最初のいくつかのレイヤーでそれらを使用できます。単純にネットワークをトレーニングし、バイアスノードの重みの分布をプロットし、重みがゼロに近すぎると思われる場合はそれらを取り除きます。
これは、ネットワークアーキテクチャ/データセットに大きく依存している可能性があります。
1
は、前のレイヤーに一定の値を持ち、次のレイヤーのニューロンごとに1つの重み(1つのバイアス値)を持たせることです。
ニューラルネットワークのコンテキストでは、現在、バッチ正規化はスマートな「バイアスノード」を作成するためのゴールドスタンダードです。ニューロンのバイアス値をクランプする代わりに、ニューロンの入力の共分散を調整します。したがって、CNNでは、畳み込み層と次の完全に接続された層(たとえば、ReLus)の間にバッチ正規化を適用します。理論的には、完全に接続されたすべてのレイヤーはバッチ正規化の恩恵を受ける可能性がありますが、各バッチ正規化には独自のパラメーターが含まれるため、実際には実装に非常に費用がかかります。
なぜかというと、回答のほとんどは、特に、入力が活性化を極端にすると、ニューロンが飽和勾配の影響を受けやすくなることをすでに説明しています。ReLuの場合、これは左にプッシュされ、勾配が0になります。一般に、モデルをトレーニングするとき、最初にニューラルネットワークへの入力を正規化します。バッチ正規化は、レイヤー間のニューラルネットワーク内の入力を正規化する方法です。