一般的なニューラルネットワークの活性化関数の違い


15

ニューラルネットワークの活性化関数の種類を研究しました。関数自体は非常に単純ですが、アプリケーションの違いは完全には明らかではありません。

目的のバイナリ/連続出力に応じて、論理型関数と線形型関数を区別することは合理的ですが、シグモイド関数の単純な線形関数に対する利点は何ですか?

たとえば、ReLUを理解するのは特に困難です。たとえば、正の入力の場合は線形のように動作し、負の場合は「フラット」な関数を使用するポイントは何ですか?この背後にある直感は何ですか?それとも、単なる単純な試行錯誤のものなのでしょうか?

回答:


15

同様の質問がCVで尋ねられました:pros / consを使用したニューラルネットワークの活性化関数の包括的なリスト

私は答えの1つの下にコピーします:

そのようなリストの1つですが、それほど網羅的ではありません:http : //cs231n.github.io/neural-networks-1/

一般的に使用されるアクティベーション関数

すべてのアクティベーション関数(または非線形性)は単一の数値を受け取り、それに対して特定の固定された数学演算を実行します。実際には、いくつかのアクティベーション機能があります。

ここに画像の説明を入力してくださいここに画像の説明を入力してください

左:シグモイドの非線形性は実数を[0,1]の範囲に縮小します右: tanhの非線形性は実数を[-1,1]の範囲に縮小します。

シグモイド。シグモイドの非線形性は、数学形式持ち、上の画像の左側に示されています。前のセクションで言及したように、実数値を取り、それを0から1の範囲に「スカッシュ」します。特に、大きな負の数は0になり、大きな正の数は1になります。それは、ニューロンの発火率として素晴らしい解釈があるためです:まったく発火しない(0)から、想定される最大頻度で完全に飽和した発火(1)まで。実際には、シグモイドの非線形性は最近好意的に落ちており、めったに使用されません。これには2つの大きな欠点があります。σバツ=1/1+eバツ

  • シグモイドは飽和し、勾配を殺します。シグモイドニューロンの非常に望ましくない特性は、ニューロンの活性化が0または1のテールで飽和すると、これらの領域の勾配がほとんどゼロになることです。バックプロパゲーション中、この(ローカル)勾配は、対物レンズ全体のこのゲートの出力の勾配に乗算されることを思い出してください。したがって、ローカルグラジエントが非常に小さい場合、グラジエントを効果的に「殺す」ことになり、ニューロンを介して重みや再帰的にデータに信号が流れることはほとんどありません。さらに、飽和を防ぐためにシグモイドニューロンの重みを初期化するときは、特別な注意を払う必要があります。たとえば、初期の重みが大きすぎると、ほとんどのニューロンが飽和状態になり、ネットワークはほとんど学習しません。
  • シグモイド出力はゼロ中心ではありません。これは、ニューラルネットワークの処理の後の層のニューロン(これについては後ほど説明します)がゼロ中心でないデータを受信するため、望ましくありません。これは、勾配降下中のダイナミクスに影響を与えます。ニューロンに入力されるデータが常に正の場合(たとえば 、要素単位で)、逆伝播中の重み勾配は すべてが正、またはすべてが負(式全体の勾配依存) f = w T x + b w fバツ>0f=wTバツ+bwf)。これにより、重みの勾配更新に望ましくないジグザグダイナミクスが導入される可能性があります。ただし、これらの勾配がデータのバッチ全体で加算されると、重みの最終更新に可変符号が付き、この問題が多少緩和されることに注意してください。したがって、これは不便ですが、上記の飽和した活性化の問題と比較して、それほど深刻な結果はありません。

タン。タンの非線形性は、上の画像の右側に示されています。実数値を範囲[-1、1]に押しつぶします。シグモイドニューロンと同様に、その活性化は飽和しますが、シグモイドニューロンとは異なり、その出力はゼロ中心になります。したがって、実際には、シグモイドの非線形性よりtanhの非線形性が常に優先されます。また、TANHニューロンは、単にスケーリングシグモイドニューロンであることに注意し、特に以下が成り立つ:。タンバツ=2σ2バツ1

ここに画像の説明を入力してくださいここに画像の説明を入力してください

左:整流線形ユニット(ReLU)アクティベーション関数。x<0の場合はゼロで、x> 0の場合は勾配1で線形です。右: Krizhevsky et al。のプロット (pdf)tanhユニットと比較して、ReLUユニットとの収束が6倍向上したことを示す論文。

ReLU。整流線形ユニットは、ここ数年で非常に人気があります。関数計算します。言い換えると、アクティベーションは単純にゼロでしきい値設定されます(左の上の画像を参照)。ReLUの使用には、いくつかの長所と短所があります。fバツ=最大0バツ

  • (+)シグモイド/タン関数と比較して確率的勾配降下の収束を大幅に加速することが判明しました(例:Krizhevsky et al。の 6倍)。これは、線形で飽和していない形式によるものであると主張されています。
  • (+)高価な操作(指数関数など)を伴うタン/シグモイドニューロンと比較して、ReLUは、活性化行列をゼロで単純にしきい値処理することで実装できます。
  • (-)残念ながら、ReLUユニットはトレーニング中に壊れやすく、「死ぬ」可能性があります。たとえば、ReLUニューロンを流れる大きな勾配により、ニューロンがデータポイントで再びアクティブにならないように重みが更新される可能性があります。これが発生した場合、ユニットを流れる勾配はその時点から永遠にゼロになります。つまり、ReLUユニットはデータマニホールドからノックオフされる可能性があるため、トレーニング中に不可逆的に停止する可能性があります。たとえば、学習率を高く設定しすぎると、ネットワークの40%が「デッド」になる可能性があります(つまり、トレーニングデータセット全体でアクティブにならないニューロン)。学習率を適切に設定することで、これはそれほど頻繁には問題になりません。

リーキーReLU。Leaky ReLUは、「死にゆくReLU」の問題を修正する試みの1つです。x <0のときに関数がゼロである代わりに、漏れやすいReLUは、小さな負の勾配(0.01程度)を持ちます。すなわち、関数を計算である小さい定数です。一部の人々は、この形式のアクティベーション機能で成功を報告していますが、結果は常に一貫しているとは限りません。Kaiming He et al。、2015 によるDelving Deep into Rectifiersで紹介されたPReLUニューロンに見られるように、負の領域の勾配は各ニューロンのパラメーターにすることもできます。しかし、タスク間の利点の一貫性は現在不明。fバツ=1バツ<0αバツ+1バツ> =0バツα

ここに画像の説明を入力してください

Maxout。関数型を持たない他のタイプのユニットが提案されています。この場合、重みとデータ間のドット積に非線形性が適用されます。比較的一般的な選択肢の1つは、ReLUとその漏れやすいバージョンを一般化するMaxoutニューロン(最近Goodfellow et al。によって導入され )です。Maxoutニューロンは、関数計算します。ReLUとLeaky ReLUの両方がこの形式の特別なケースであることに注意してください(たとえば、ReLUの場合、fwTバツ+b最大w1Tバツ+b1w2Tバツ+b2w1b1=0)。したがって、MaxoutニューロンはReLUユニットのすべての利点を享受し(動作の線形領域、飽和なし)、その欠点はありません(ReLUが消滅する)。ただし、ReLUニューロンとは異なり、1つのニューロンごとにパラメーターの数が2倍になり、パラメーターの総数が多くなります。

これで、最も一般的なタイプのニューロンとその活性化機能についての説明を終了します。最後のコメントとして、同じネットワーク内で異なるタイプのニューロンを組み合わせて一致させることは非常にまれですが、そうすることで根本的な問題はありません。

TLDR:「どのニューロンタイプを使用する必要がありますか?」ReLU非線形性を使用し、学習率に注意し、ネットワーク内の「死んだ」ユニットの割合を監視します。これが懸念される場合は、Leaky ReLUまたはMaxoutを試してください。シグモイドを使用しないでください。tanhを試してみてください。ただし、ReLU / Maxoutよりも動作が悪くなることが予想されます。


ライセンス:


MITライセンス(MIT)

著作権(c)2015 Andrej Karpathy

これにより、このソフトウェアおよび関連するドキュメントファイル(「ソフトウェア」)のコピーを取得するすべての人に、使用、コピー、変更、マージの権利を含むがこれらに限定されないソフトウェアを扱う許可が無料で付与されますソフトウェアのコピーを発行、配布、サブライセンス、および/または販売し、以下の条件に従って、ソフトウェアの提供先にソフトウェアの提供を許可します。

上記の著作権表示およびこの許可通知は、ソフトウェアのすべてのコピーまたは大部分に含まれるものとします。

本ソフトウェアは、商品性、特定の目的への適合性、および非侵害の保証を含むが、これに限らず、明示または黙示を問わず、いかなる保証もなしに「現状のまま」提供されます。いかなる場合においても、作者または著作権者は、契約、不法行為、またはその他の行為、ソフトウェアまたは使用またはその他の取引に起因する、またはそれらに関連するいかなる請求、損害またはその他の責任についても責任を負わないものとしますソフトウェア。*


おかげで、この要約はいくつかの洞察を与えてくれますが、率直に言って、私はまだいくつかの詳細を直観的に推測することはできません(たとえば、ReLUが「SGDの収束を大幅に加速する」など)、そして何よりも選択するものはどれですか?結論に基づいて、Maxoutが最高であり、それで終わりです。しかし、Maxoutが最も人気のあるパッケージ(たとえばKeras)に実装されていないという事実とは別に、少なくとも最後のレイヤーには他のタイプを配置するのが妥当であると思われます(たとえば、二重分類のシグモイド)。
ヘンドリック
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.