Sigmoid関数とは

Sigmoid関数は、ニューラルネットワークにおいて、入力値を 0から1の間の滑らかな実数値に変換するために用いられる活性化関数の一つであり、特に二値分類問題の確率を出力する際や、隠れ層に非線形性を導入する際に利用される関数のことです。

Sigmoid関数の概要と数学的定義

Sigmoid関数は、その名の通り、ギリシャ文字の $\Sigma$(シグマ)に似たS字型の曲線を描く関数です。ロジスティック関数(Logistic Function)としても知られています。

1. 数学的定義

入力 $x$ に対するSigmoid関数の出力 $f(x)$ は、以下の式で定義されます。

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

ここで $e$ は自然対数の底(約 2.718)です。

2. 特徴的な性質

  • 出力範囲: 入力 $x$ がどんな実数値であっても、出力 $f(x)$ は常に $(0, 1)$ の範囲に収まります。
  • 非線形性: 関数自体がS字型の非線形であるため、これをニューラルネットワークの各層に適用することで、ネットワークは線形では表現できない複雑なパターンを学習する能力を獲得します。
  • 微分可能: 全ての点で微分可能であり、その導関数(勾配)も滑らかです。これは、ニューラルネットワークの学習に不可欠な誤差逆伝播法(Backpropagation)の適用を可能にします。

主な目的は、ニューロンの出力に非線形性を与えるとともに、特に最終出力層で確率的な解釈(例:このクラスに属する確率)を提供することです。

ニューラルネットワークにおける応用

1. 最終出力層(二値分類)

Sigmoid関数は、二値分類問題(Yes/No、0/1など)の出力層として広く使用されます。出力値が 0.5 を超える場合は「1」のクラス、下回る場合は「0」のクラスに属する確率として解釈されます。

2. 隠れ層(過去の利用)

Sigmoid関数は、かつては隠れ層の活性化関数として主流でしたが、現在では主に以下の課題から、ReLU関数やその派生関数に置き換えられています。

Sigmoid関数の課題:勾配消失問題

Sigmoid関数には、ディープラーニングの訓練において深刻な問題を引き起こす可能性のある、以下の本質的な課題があります。

1. 勾配の飽和(Saturation)

Sigmoid関数の導関数(勾配)は、入力 $x$ が極端に大きな正の値または負の値になると、ゼロに非常に近い値を取ります。

f'(x) = f(x)(1 - f(x))

グラフの中央($x \approx 0$)付近で勾配が最大値(最大 $0.25$)を取りますが、 $|x|$ が大きくなるにつれて勾配は急速に 0 に近づき、飽和します。

2. 勾配消失問題(Vanishing Gradient Problem)

この勾配の飽和が、ディープニューラルネットワークにおいて勾配消失問題を引き起こします。

誤差逆伝播法により、勾配が多くの層を遡って伝播する際、Sigmoidの出力が飽和領域にある場合、各層で 0 に近い勾配が連鎖的に掛け合わされます。その結果、ネットワークの初期の層(入力に近い層)の重みに対する勾配が極端に小さくなり、重みがほとんど更新されなくなってしまいます。これにより、深いネットワークの学習が実質的に停止してしまいます。

3. 出力の非ゼロ中心性(Non-Zero Centered Output)

Sigmoid関数の出力は $(0, 1)$ の範囲であり、平均が 0 ではありません(非ゼロ中心)。これにより、次の層に入力されるデータが常に正の値となり、勾配降下法による学習効率を低下させる可能性があります。

これらの課題に対処するため、隠れ層ではReLU(Rectified Linear Unit)やtanh(双曲線正接)関数が、最終出力層ではSoftmax関数などが、Sigmoid関数の代替として広く使用されています。

関連用語

A誤差逆伝播法 | 今更聞けないIT用語集
ニューラルネットワーク | 今更聞けないIT用語集
AIソリューション

お問い合わせ

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

APPSWINGBYの

ソリューション

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

システム開発

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

iOS/Androidアプリ開発

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


リファクタリング

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