技術共有

深層学習における活性化関数の進化と応用: レビュー

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

まとめ

この記事では、初期の Sigmoid 関数や Tanh 関数から、広く使用されている ReLU シリーズ、そして最近提案された Swish、Mish、GeLU などの新しい活性化関数に至るまで、深層学習における活性化関数の開発を包括的にレビューします。典型的なモデルにおけるさまざまな活性化関数の数式、特性、利点、制限、および応用についての詳細な分析が行われます。この記事では、体系的な比較分析を通じて、活性化関数の設計原則、パフォーマンス評価基準、将来の開発の可能性について議論し、深層学習モデルの最適化と設計のための理論的なガイダンスを提供します。

1 はじめに

活性化関数はニューラル ネットワークの重要なコンポーネントであり、ニューロンの出力に非線形特性を導入し、ニューラル ネットワークが複雑な非線形マッピングを学習して表現できるようにします。活性化関数がなければ、ニューラル ネットワークがどれほど深くても、基本的には線形変換しか表現できず、ネットワークの表現能力が大幅に制限されます。
深層学習の急速な発展に伴い、活性化関数の設計と選択がモデルのパフォーマンスに影響を与える重要な要素となっています。活性化関数が異なれば、勾配の流動性、計算の複雑さ、非線形性の程度など、異なる特性があります。これらの特性は、ニューラル ネットワークのトレーニング効率、収束速度、および最終的なパフォーマンスに直接影響します。
この記事の目的は、活性化関数の進化を包括的にレビューし、さまざまな活性化関数の特性を深く分析し、最新の深層学習モデルでのそれらのアプリケーションを探ることです。以下の点について説明します。

  1. 古典的な活性化関数: Sigmoid や Tanh など、初期に一般的に使用されていた活性化関数を含みます。
  2. ReLU とその亜種: ReLU、Leaky ReLU、PReLU、ELU など。
  3. 新しい活性化関数: Swish、Mish、GeLU などの最近提案された関数。
  4. 特殊目的のアクティベーション関数: Softmax、Maxout など。
  5. 活性化関数の比較と選択: さまざまなシナリオでの活性化関数の選択戦略について話し合います。
  6. 将来の展望: 活性化関数研究の可能な発展方向を探ります。

この系統的なレビューと分析を通じて、研究者や実践者が深層学習モデルの設計において活性化関数をより適切に選択して使用できるようにするための包括的な参考資料を提供したいと考えています。

2. クラシックアクティベーション機能

2.1 シグモイド関数

シグモイド関数は、最も初期に広く使用された活性化関数の 1 つであり、その数式は次のとおりです。
σ ( x ) = 1 1 + e − x シグマ(x) = frac{1}{1 + e^{-x}}σ(バツ)=1+eバツ1
画像.png

機能と利点:
  1. 出力範囲は制限されています: シグモイド関数の出力範囲は (0, 1) の間であるため、確率問題の処理に特に適しています。
  2. スムーズで微分可能: この関数は領域全体で滑らかで微分可能であるため、勾配降下法アルゴリズムの適用に役立ちます。
  3. 説明: 出力は確率として解釈でき、特にバイナリ分類問題の出力層に適しています。
欠点と制限:
  1. 勾配消失問題: 入力値が大きいか小さい場合、勾配はゼロに近くなり、深いネットワークでは勾配消失の問題が発生する可能性があります。
  2. 出力非ゼロ中心: シグモイドの出力はすべて正であるため、次の層のニューロンの入力が常に正となり、モデルの収束速度に影響を与える可能性があります。
  3. 計算の複雑さ: 指数演算が含まれ、計算の複雑さは比較的高くなります。
該当するシーン:
  1. 初期の浅いニューラル ネットワーク。
  2. 二項分類問題の出力層。
  3. 出力を範囲 (0, 1) に制限する必要があるシナリオ。
他の機能との比較:

後に登場した ReLU などの関数と比較すると、主に勾配消失問題により、深層ネットワークでのシグモイドの適用は大きく制限されてきました。ただし、一部の特定のタスク (バイナリ分類など) では、シグモイドが依然として効果的な選択肢です。

2.2 タン関数

Tanh (双曲線正接) 関数は、シグモイド関数の改良版とみなすことができ、その数式は次のとおりです。
tanh ⁡ ( x ) = ex − e − xex + e − x tanh(x) = frac{e^x - e^{-x}}{e^x + e^{-x}}タン(バツ)=eバツ+eバツeバツeバツ
画像.png

機能と利点:
  1. ゼロセンター出力: Tanh 関数の出力範囲は (-1, 1) の間であり、シグモイドの中心がゼロでない問題を解決します。
  2. より強い勾配: 入力がゼロに近い領域では、Tanh 関数の勾配がシグモイド関数よりも大きく、学習の高速化に役立ちます。
  3. スムーズで微分可能: シグモイドと同様に、Tanh も滑らかで微分可能です。
欠点と制限:
  1. 勾配消失問題: Tanh は Sigmoid よりは改善されましたが、入力値が大きいか小さい場合に勾配が消えるという問題がまだあります。
  2. 計算の複雑さ: シグモイドと同様に、Tanh にも指数演算が含まれ、計算の複雑さが高くなります。
該当するシーン:
  1. ゼロ中心の出力が必要なシナリオでは、シグモイドよりも優れています。
  2. リカレント ニューラル ネットワーク (RNN) や長短期記憶ネットワーク (LSTM) でよく使用されます。
  3. 正規化された出力が重要な一部のシナリオで使用されます。
改善と比較:

Tanh 関数は、シグモイド関数の改良版とみなすことができます。主な改良点は、出力のゼロセンタリングにあります。この機能により、Tanh は多くの状況、特にディープ ネットワークで Sigmoid よりも優れたパフォーマンスを発揮します。ただし、後に登場した ReLU などの関数と比較すると、Tanh には依然として勾配消失の問題があり、非常に深いネットワークではモデルのパフォーマンスに影響を与える可能性があります。
Sigmoid と Tanh という 2 つの古典的な活性化関数は、深層学習の初期に重要な役割を果たしました。また、その特性と制限により、その後の活性化関数の開発も促進されました。これらは多くのシナリオで更新されたアクティベーション関数に置き換えられていますが、特定のタスクやネットワーク構造では依然として独自のアプリケーション価値を持っています。

3. ReLU とその亜種

3.1 ReLU (正規化線形ユニット)

ReLU 関数の提案は、活性化関数の開発における重要なマイルストーンです。その数式は次のように簡単です。
ReLU ( x ) = max ⁡ ( 0 , x ) テキスト{ReLU}(x) = max(0, x)再LU(バツ)=最大(0,バツ)
画像.png

機能と利点:
  1. 計算は簡単です: ReLU の計算複雑さは Sigmoid や Tanh よりもはるかに低いため、ネットワーク トレーニングの高速化に役立ちます。
  2. 緩和勾配が消える: 正の入力の場合、ReLU の勾配は常に 1 であり、これにより、深層ネットワークにおける勾配消失の問題が効果的に軽減されます。
  3. まばらな活性化: ReLU は一部のニューロンの出力を 0 にすることができ、ネットワークの疎な表現につながり、特定のタスクでは有益です。
  4. 生物学的説明: ReLU の片側抑制特性は、生物学的ニューロンの挙動に似ています。
欠点と制限:
  1. 「デッドReLU」問題: 入力が負の場合、勾配はゼロになり、ニューロンが永久に非活性化する可能性があります。
  2. ゼロ以外の中心出力: ReLU の出力はすべて非負の値であり、次の層の学習プロセスに影響を与える可能性があります。
該当するシーン:
  1. ディープ畳み込みニューラル ネットワーク (ResNet、VGG など) で広く使用されています。
  2. ほとんどのフィードフォワード ニューラル ネットワークに適しています。
他の機能との比較:

Sigmoid や Tanh と比較して、ReLU は深いネットワークにおいて、主にトレーニング速度と勾配消失の軽減の点で大きな利点を示します。しかし、「dead ReLU」問題により、研究者はさまざまな改良版を提案するようになりました。

3.2 リーキーReLU

ReLU の「死」問題を解決するために、Leaky ReLU が提案されました。
リーキーReLU ( x ) = { x 、 x > 0の場合 α x 、 x ≤ 0の場合 text{リーキーReLU}(x) ={バツ,もしバツ>0αバツ,もしバツ0 リーキーReLU(バツ)={ バツ,αx,もしバツ>0もしバツ0
で、 α アルファα は小さな正の定数で、通常は 0.01 です。
画像.png

機能と利点:
  1. 「dead ReLU」問題の軽減: ニューロンの完全な非活性化を避けるために、入力が負の場合でも小さな勾配を維持します。
  2. ReLUの利点をそのままに: 正の半軸上の直線性を維持し、計算が簡単で、勾配の消失を軽減するのに役立ちます。
欠点と制限:
  1. ハイパーパラメータの紹介 α アルファα値の選択には調整が必要であり、モデルが複雑になります。
  2. ゼロ以外の中心出力: ReLU と同様に、出力は依然としてゼロ中心ではありません。
該当するシーン:
  1. ReLU のパフォーマンスが低いシナリオの代替手段として。
  2. 負の値の情報を保持する必要があるタスクで使用されます。

3.3 PReLU(パラメトリックReLU)

PReLU は Leaky ReLU の変形であり、負の半軸の傾きが学習可能なパラメータです。
PReLU ( x ) = { x 、 x > 0 の場合 α x 、 x ≤ 0 の場合 text{PReLU}(x) ={バツ,もしバツ>0αバツ,もしバツ0 プレル(バツ)={ バツ,αx,もしバツ>0もしバツ0
ここ α アルファα バックプロパゲーションを通じて学習されたパラメータです。
画像.png

機能と利点:
  1. 適応学習:データに基づいて最適な負の半軸傾きを自動学習できます。
  2. パフォーマンスの可能性: 一部のタスクでは、PReLU は ReLU や Leaky ReLU よりも優れたパフォーマンスを達成できます。
欠点と制限:
  1. モデルの複雑さの増加: 追加の学習可能なパラメーターを導入すると、モデルの複雑さが増加します。
  2. オーバーフィッティングの可能性: 場合によっては、特に小さなデータセットで過剰適合が発生する可能性があります。
該当するシーン:
  1. 大規模なデータセットに対する深層学習タスク。
  2. 適応型アクティベーション関数を必要とするシナリオ。

3.4 ELU(指数線形単位)

ELU は、ReLU の利点と負の入力の処理を組み合わせようとしています。その数式は次のとおりです。
ELU ( x ) = { x 、 x > 0の場合 α ( ex − 1 ) 、 x ≤ 0の場合 text{ELU}(x) ={バツ,もしバツ>0α(eバツ1),もしバツ0 エル(バツ)=