Swish関数とは

Swish関数は、ニューラルネットワークにおける活性化関数の一つであり、Sigmoid関数と線形関数(入力 $x$)の積によって定義され、ReLU関数が持つ望ましい特性を保持しつつ、全ての領域で滑らかに微分可能であるという特徴を持つ関数のことです。

Swish関数の概要とReLU関数との比較

Swish関数は、2017年にGoogleの研究者らによって提案され、深層学習モデル、特に深いニューラルネットワークにおいて、ReLU(Rectified Linear Unit)関数と同等かそれ以上の性能を示すことが実証されました。

従来の活性化関数には、それぞれ一長一短がありました。

関数主な利点主な課題
Sigmoid出力が (0,1) に収まる。滑らか。勾配消失問題、非ゼロ中心性。
ReLU勾配消失が起こりにくい(正の領域)。計算が高速。負の領域で勾配がゼロになる(Dying ReLU問題)。非ゼロ中心性。
Swish関数の概要とReLU関数との比較

Swish関数は、これらの課題、特にReLUが負の入力に対して勾配を完全にゼロにしてしまう問題を克服し、学習をより安定させることを目指しています。

主な目的は、深いネットワークの学習を促進し、ReLUで発生しうるニューロンの不活性化(Dying ReLU)を緩和することで、モデルの精度を向上させることです。

Swish関数の数学的定義と特徴

Swish関数は、自己ゲーティング(Self-Gated)という特徴を持ち、その出力は入力 $x$ とSigmoid関数 $\sigma(x)$ の積によって定義されます。

1. Swish関数の計算式

Swish関数 $f(x)$ は、以下の式で定義されます。

f(x) = x \cdot \sigma(\beta x) = x \cdot \frac{1}{1 + e^{-\beta x}}

ここで、

  • $x$: 入力値。
  • $\sigma(\beta x)$: Sigmoid関数。
  • $\beta$: 学習可能なパラメータ、または固定値(通常は 1 に設定)。$\beta$ が 1 の場合、この関数はしばしば $\text{SiLU}$(Sigmoid Linear Unit)とも呼ばれます。

2. 滑らかさと微分可能性

Swish関数は、ReLUとは異なり、全ての領域で滑らかに連続しています。この滑らかさは、勾配降下法による最適化をより円滑に進め、急激な勾配の変化を防ぐ助けとなります。

3. 負の値に対する挙動(Non-Monotonicity)

Swish関数は、非単調性(Non-Monotonicity)を持ちます。これは、入力が非常に小さな負の値を取る際、出力がわずかに増加する領域が存在することを意味します。

  • $x > 0$ の領域: 出力は線形関数 $y=x$ に似ており、ReLUと同様に勾配消失が起こりにくいです。
  • $x \to -\infty$ の領域: 出力は 0 に近づきますが、完全に 0 になるのではなく、非常に小さな負の値を取ります。これにより、ReLUのようにニューロンが完全に不活性化(Dying)することを防ぎ、学習中に小さな勾配が流れ込む余地を残します。

実用上のメリット

  • 深いモデルでの安定性: 特に層の深いニューラルネットワークや、Transformerなどの大規模モデルにおいて、ReLUよりも学習が安定しやすく、最終的な精度が向上する傾向が見られます。
  • Dying ReLU問題の緩和: 負の領域で勾配が厳密にゼロにならないため、学習が停滞するリスクが軽減されます。

Swish関数は、その優れた特性から、様々な深層学習タスクにおいてReLUに代わる有効な活性化関数として、広く採用されています。

関連用語

ReLU関数 | 今更聞けないIT用語集
ニューラルネットワーク | 今更聞けないIT用語集
AIソリューション

お問い合わせ

システム開発・アプリ開発に関するご相談がございましたら、APPSWINGBYまでお気軽にご連絡ください。

APPSWINGBYの

ソリューション

APPSWINGBYのセキュリティサービスについて、詳しくは以下のメニューからお進みください。

システム開発

既存事業のDXによる新規開発、既存業務システムの引継ぎ・機能追加、表計算ソフトによる管理からの卒業等々、様々なWebシステムの開発を行っています。

iOS/Androidアプリ開発

既存事業のDXによるアプリの新規開発から既存アプリの改修・機能追加まで様々なアプリ開発における様々な課題・問題を解決しています。


リファクタリング

他のベンダーが開発したウェブサービスやアプリの不具合改修やソースコードの最適化、また、クラウド移行によってランニングコストが大幅にあがってしまったシステムのリアーキテクチャなどの行っています。