線形活性化関数は、ニューラルネットワークの消失勾配問題をどのように解決しますか?


40

ニューラルネットワークの消失勾配問題の解決策として、いくつかの場所で称賛された整流線形ユニット(ReLU)が見つかりました。つまり、アクティベーション関数としてmax(0、x)を使用します。活性化が正の場合、その派生は大きなxの任意の小さな値ではなく常に1であるため、これがたとえばシグモイド活性化関数よりも優れていることは明らかです。一方、xが0より小さい場合、導出は正確に0です。最悪の場合、ユニットがアクティブ化されない場合、このユニットの重みも変更されず、ユニットは永久に使用できなくなります。消失するほど小さい勾配よりもはるかに悪い。ReLUを使用する場合、学習アルゴリズムはその問題にどのように対処しますか?


2
あなたが最悪のケースとして説明するものは、死にゆくReLU
マーティン・トーマ

ロジスティック関数の場合、勾配は任意に小さくできるため、いくつかの「無視できる」ロジスティックスを構成することで数値的に消失する勾配を得ることができると思います(より深いアーキテクチャでは問題が悪化します)。ランプ関数の場合、勾配は区分的に一定であるため、実際に0であるコンポーネントが存在する場合にのみ、消失する複合勾配が発生します
。– GeoMatt22

(ただし、これが「永久」かどうかはわかりませんか?さらにトレーニングを行った後、ゼロ以外にならないのですか?他のノードおよび/または現在のデータミニバッチの依存関係から?(確率的勾配降下の場合)
GeoMatt22

回答:


33

ここに問題を説明する論文があります。問題を明確にするために、その一部を引用しています。

整流器アクティベーション機能により、ネットワークはスパース表現を簡単に取得できます。たとえば、重みを均一に初期化した後、隠れユニットの連続出力値の約50%は実際のゼロであり、この割合はスパース性を引き起こす正則化により容易に増加します。

そのため、整流器のアクティベーション機能により、ネットワークにスパーシティ効果が生じます。以下に、同じ論文のスパース性のいくつかの利点を示します。

  • 情報を解きほぐします。ディープラーニングアルゴリズムの主張された目的の1つ(Bengio、2009)は、データの変動を説明する要因を解きほぐすことです。入力のほとんどすべての変更が表現ベクトルのほとんどのエントリを変更するため、密な表現は非常に絡み合います。代わりに、表現がスパースであり、小さな入力変更に対してロバストである場合、非ゼロフィーチャのセットはほとんどの場合、入力の小さな変更によって大まかに保存されます。

  • 効率的な可変サイズ表現。異なる入力には異なる量の情報が含まれる場合があり、情報のコンピューター表現で一般的な可変サイズのデータ​​構造を使用してより便利に表現されます。アクティブなニューロンの数を変えることで、モデルは与えられた入力と必要な精度の表現の有効な次元を制御できます。

  • 線形分離可能性。また、情報が高次元空間で表現されるため、スパース表現は線形分離可能性が高くなるか、非線形機械が少ないとより簡単に分離できる可能性が高くなります。また、これは元のデータ形式を反映できます。たとえば、テキスト関連のアプリケーションでは、元の生データはすでに非常にまばらです。

  • 分散しているがまばら。密な分散表現は最も豊かな表現であり、純粋にローカルな表現よりも指数関数的に効率的である可能性があります(Bengio、2009)。スパース表現の効率は依然として指数関数的に大きく、指数の力は非ゼロの特徴の数です。これらは、上記の基準に関して適切なトレードオフになる場合があります。

また、あなたが尋ねた質問に答えます:

softplus(x)=log(1+ex)(Dugas et al。、2001)、整流性の非線形性のスムーズなバージョン。正確なスパース性は失われますが、より簡単なトレーニングを希望します。ただし、実験結果はその仮説と矛盾する傾向があり、ハードゼロは実際に教師ありトレーニングに役立つ可能性があることを示唆しています。勾配がいくつかのパスに沿って伝播できる限り、ハードな非線形性が損なわれないと仮定します。つまり、各層の隠されたユニットのいくつかは非分散であり、これらのONユニットに割り当てられた信用と責任がありますより均等に、最適化が簡単であると仮定します。

詳細については、論文を読むことができます。


18

このため、PReLU、ELU、または0に消えるだけでなく、学習を続けるためにxが負になると0.1 * xのようなものに落ちる他の漏れやすいReLUのようなアクティベーションを使用するのがおそらく良い考えです。ReLUはシグモイドのような歴史であるように長い間思えましたが、何らかの理由で人々はまだこれらの論文を発行しています。どうして?知りません。

Dmytro Mishkinと他の人は実際にたくさんの異なるアクティベーションタイプでネットワークをテストしました。異なるアクティベーション機能と他のもののパフォーマンスに関する彼らの調査結果を調べる必要があります。ただし、XORなどの一部の機能は、単純なReLUを使用してよりよく学習できます。ニューラルネットは進行中の作業が非常に多いため、ドグマの観点からニューラルのことを考えないでください。世界のだれも、実際に神の真実を伝えるのに十分な知識と理解を持っている人はいません。誰も。物事を試して、あなた自身の発見をしてください。ReLUの使用自体はごく最近の開発であり、何十年もの間、この分野のさまざまな博士号取得者は、今や笑いしかねないほど複雑なアクティベーション機能を使用していることに注意してください。あまりにも多くのことを「知る」ことは、あなたに悪い結果をもたらします。ニューラルネットワークは厳密な科学ではないことを理解することが重要です。数学では、ニューラルネットワークが実際に機能するということはありません。ヒューリスティックです。そして、それは非常に順応性があります。

参考までに、絶対値アクティベーションでも、XORのような問題など、いくつかの問題で良い結果が得られます。さまざまなアクティベーション機能は、さまざまな目的により適しています。私はabs()でCifar-10を試してみましたが、パフォーマンスが悪いようです。しかし、「事前認識が最適であるかどうかなどわからないため、「視覚認識にとっては悪い起動機能」とは言えません。それが比較的学習していたという事実驚いた。

また、実際には、backpropに渡す「デリバティブ」は、必ずしも実際の数学的デリバティブと一致する必要はありません。

「デリバティブ」と呼ぶことを禁止し、他の何かと呼ぶことを始めるべきだとさえ言えます。 error activation functions彼らをいじくり回す可能性に心を閉ざさないために。たとえば、実際にはReLUアクティベーションを使用できますが、x <0の微分として0ではなく0.1などを提供します。ある意味では、単純なReLUがありますが、ニューロンは「適応性から死ぬ」ことができません。私はこれをNecroReluと呼んでいます。なぜなら、それは死ぬことのできないReLUだからです。また、場合によっては(ほとんどの場合は間違いなく)、プレーンなLeakyReLUよりもうまく機能します。実際には、x <0で0.1の微分係数を持ち、通常のReLUよりも優れています。しかし、このような関数を調査した他の人はあまり多くないと思いますが、これや類似したものは、実際には数学に集中しているという理由だけで誰も考えていない、一般的にクールなアクティベーション関数かもしれません。

一般的に使用されるものに関しては、tanH(x)アクティベーション関数では、物事をより速く計算するために、1-tanH(x)²の代わりに1-tanH(x)²を導関数として渡すのが普通です。

また、ReLUは、たとえばTanHよりも「明らかに優れている」わけではないことに注意してください。場合によっては、おそらくTanHの方が優れている可能性があります。ただ、視覚認識ではないようです。ただし、たとえばELUには少しシグモイドの柔らかさがあり、現時点での視覚認識のための最もよく知られているアクティベーション関数の1つです。試したことはありませんが、同じレイヤーレベルで異なるアクティベーション機能を持つ複数のグループを有利に設定できると思います。なぜなら、異なるロジックは異なるアクティベーション関数でより良く記述されるからです。また、時にはいくつかのタイプの評価が必要になることもあります。

アクティベーション関数のタイプに対応する初期化を持つことが重要であることに注意してください。Leaky ReLUには、たとえば、プレーンなReLUなどの他の初期化が必要です。

編集:実際には、標準のReLUは、現代のアーキテクチャで漏れやすいものと比べて、過剰適合しにくい傾向があります。少なくとも画像認識では。膨大な量のパラメータを使用して非常に高精度のネットを使用する場合は、単純なReLUとリーキーオプションを使用することをお勧めします。しかし、もちろん、これらすべてを自分でテストしてください。たぶん、より多くの正規化が与えられた場合、いくつかの漏れやすいものがよりうまく機能するでしょう。


私はあなたのNecroReLUに興味がありますが、あなたが書いたものからLeakyReLUとの違いを理解することはできません。明確にできますか?
トム・ヘイル

活性化はReLUであるが、誘導体LReLUあることで異なる
Íhor私

@ÍhorMé、あなたの投稿initialization that corresponds to a type of activation function one is usingでa について言及したように、同じ行でこれについてのNOTE提案お願いできますか?シグモイド/ tanH上のReLuアクティベーションの使用が勾配の消失/爆発の解決策であると完全に確信していません。
anu

16

ヒューリスティックな説明を次に示します。

  • backpropの各勾配更新は、多数の乗算係数で構成されます。
  • ネットワークの開始点に近づくにつれて、これらの要素がより多く乗算され、勾配の更新が行われます。
  • これらの要因の多くは、ニューロンの活性化関数の導関数です-残りは重み、バイアスなどです。
  • これらの要因のうち、直感的に重要なのは重み、バイアスなどです。活性化関数の導関数は、勾配降下が正しい種類の速度で正しい方向に進むように設計された一種の調整パラメータです。
  • 1未満の多数の用語を乗算すると、用語が増えるほどゼロになります。したがって、勾配が1未満のアクティベーション関数がある場合、出力レイヤーから遠くなるにつれて勾配が消えます。
  • 1より大きい項の束を乗算すると、値が大きくなると無限大になる傾向があるため、勾配が1より大きいアクティベーション関数がある場合、出力レイヤーから離れるにつれて勾配が爆発します。
  • どういうわけか、魔法のように、活性化関数の導関数によってこれらの項を1にすることができたらどうでしょうか。これは直観的に、勾配更新へのすべての寄与が問題とモデルへの入力、重み、入力、バイアス-選択したアクティベーション関数のアーチファクトではなく。
  • RELUには、出力> 0の場合は勾配1があり、それ以外の場合はゼロです。
  • したがって、backprop方程式でRELU導関数の束を乗算すると、1または0であるという素晴らしい特性があります。更新は何もないか、他の重みとバイアスから完全に寄与します。

x <0の場合、平坦化するよりも線形関数を使用する方が良いと考えるかもしれません。ここでの考え方は、RELUが比較的少数の有用なリンクを持つスパースネットワークを生成し、生物学的妥当性が高いため、たくさんの重みが実際に役立ちます。また、ニューラルネットを使用した興味深い関数のシミュレーションは、活性化関数にある程度の非線形性がある場合にのみ可能です。線形活性化関数は線形出力をもたらしますが、これはまったく興味深いものではありません。


素晴らしい説明、6番目の点について詳しく説明してもらえますか?これについて同じ行であなたの提案を提供してもらえますか?
ANU

1
賢明な重量の初期化も重要です。アクティベーション機能の選択も同様です。些細な例として、すべての重みがデフォルトでゼロに設定され、RELUを使用すると、ニューロンからのすべての出力はゼロになり、ゼロのままになります... ポイント6の詳細を再定義する意味がわからない
トムウォーカー

1

エラー信号の逆伝播を定義する主な繰り返し関係を考えてみましょう。

Wibiif

hii

si=Wi(hi1)+bi

hi=f(si)

δi

δi=Wi+1(δi+1f(si))

ff(si)=(1hi2)hi

f=Relu=max(0,x)ff=numpy.where(hi>0,1,0)

この方程式は、reluアクティベーションに特徴的な他の問題も示しています-デッドニューロン:与えられたニューロンが、入力に対して発火しないように初期化された場合(アクティベーションがゼロ)、勾配もゼロになります。したがって、アクティブ化されることはありません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.