ニューラルネットワークの歴史を語るうえで欠かせない、最も古典的な活性化関数がシグモイド関数です。この記事では「どんな値でも0〜1に変換する」という固有の性質と、そこから生まれる強み・弱みを解説します。
📖 ひと言でいうと
シグモイド関数とは、どんな実数を入力しても0から1の範囲の値に変換して出力する、S字曲線の形をした活性化関数です。式はプレーンテキストで書くと y = 1 / (1 + exp(-x)) で、入力が大きいほど1に、小さいほど0に近づきます。
例えるなら「どんな意見も0〜100%の賛成度に言い換える通訳者」です。強い賛成(大きな正の値)は100%近く、強い反対(大きな負の値)は0%近くに丸めて伝えます。出力が必ず0〜1に収まるため、「確率」として読める点がシグモイド関数ならではの持ち味です。厳密には、出力を確率とみなせるのは2値分類の出力層などで使う場合であり、常に確率を意味するわけではありません。
🖼 1枚でわかるシグモイド関数
📘 公式テキストの説明
活性化関数の1つで、その形はS字曲線になっている。この関数は、任意の実数値を0から1の範囲にマッピングする性質がある。この関数は古典的なニューラルネットワークではよく用いられていたが、最近ではReLU(Rectified Linear Unit)やその変種がよく使われる。シグモイド関数は勾配消失問題(vanishing gradient problem)が起きやすく、学習が遅くなる場合があるという欠点も持っている。
かみくだくと、覚えるべき軸は「性質」と「歴史」の2つです。性質は「S字曲線で、任意の実数を0〜1に変換する」こと。歴史は「古典的なネットワークの定番だったが、勾配消失問題が起きやすいため、現在の隠れ層ではReLUやその変種に主役を譲った」ことです。「昔の主役・今は交代」という時間の流れごと覚えると、選択肢の判別がぐっと楽になります。
🔍 しっかり理解する
0〜1に変換できることの価値
シグモイド関数の出力は必ず0と1の間に収まります(両端の0と1そのものには達しません)。入力0のときの出力はちょうど0.5で、そこを境に滑らかに0側・1側へ変化します。この「0〜1」という範囲は確率と同じなので、出力を「陽性である確率0.87」のように解釈できます。
この性質が最も活きるのが2値分類の出力層です。「迷惑メールか否か」「病変があるか否か」のような二択の問題で、モデルの最終出力をシグモイド関数に通せば、そのまま確率として読める値が得られます。機械学習の古典であるロジスティック回帰も、この関数で出力を確率化するモデルです。また、出力が滑らかで微分可能なため、誤差逆伝播法による学習と相性が良いという点も、古典的なニューラルネットワークで広く採用された理由でした。
弱点: 微分の最大値が0.25しかない
シグモイド関数の微分値は、出力をyとすると y × (1 - y) と書けます。この値が最大になるのは入力0(出力0.5)のときで、0.5 × 0.5 = 0.25。つまり微分の最大値はわずか0.25です。さらに、入力が0から離れるとS字カーブの両端は平らになるため、微分値はほぼ0まで落ちます。
誤差逆伝播法では層を遡るたびに活性化関数の微分値が掛け合わされるので、最大でも0.25という小さい値を何度も掛けると勾配は急速に縮みます。層が深いほど入力層付近に届く勾配はほとんど0になり、重みが更新されず学習が遅くなる、あるいは進まなくなる。これが勾配消失問題であり、シグモイド関数が深いネットワークの隠れ層で使われなくなった最大の理由です。
現在の使いどころ: 主役ではないが現役
- 2値分類の出力層(確率として解釈)
- LSTMなどのゲート(0〜1で開き具合を表現)
- ロジスティック回帰
- 深いネットワークの隠れ層(勾配消失の原因に)
- 現在はReLUやその変種が標準
- tanh関数への置き換えも改善策の1つ
「0〜1の値がほしい場所」ではシグモイド関数は今も第一候補です。たとえばLSTMのゲートは「情報をどれだけ通すか」を0〜1の割合で表す部品なので、シグモイド関数がぴったりはまります。一方、勾配を何層も通す必要のある隠れ層では避けられる、という使い分けが現在の標準です。
💡 具体例で考える
医療画像から「病変あり/なし」を判定するモデルを考えます。ネットワークの最終層が出した数値(たとえば2.2)は、そのままでは大小の意味しか持ちません。これをシグモイド関数に通すと約0.9という0〜1の値になり、「病変ありの確率90%」と解釈できます。確率になっていれば「0.5以上なら陽性と判定する」「見逃しを減らすため閾値を0.3に下げる」といった運用上の調整も自然にできます。
もう1つの顔が「ゲート」としての利用です。LSTMでは、過去の記憶をどの程度残すかを決める忘却ゲートなどにシグモイド関数が使われ、出力1なら全部通す、0なら全部遮断、0.6なら6割通す、という調節弁の役割を果たします。「確率」と「割合」、いずれも0〜1という出力範囲だからこそ担える役割です。
⚠️ よくある誤解・紛らわしい用語
- 「シグモイド関数はもう使われない」は誤り — 深いネットワークの隠れ層では避けられますが、2値分類の出力層やゲート機構では現役です。
- tanh関数との混同 — どちらもS字型ですが、シグモイド関数は0〜1、tanh関数は-1〜1を出力します。微分の最大値もシグモイドは0.25、tanhは1と異なります。
- ソフトマックス関数との違い — シグモイド関数は1つの値を0〜1に変換します(2値分類向き)。ソフトマックス関数は複数の値をまとめて合計1の確率分布に変換します(多クラス分類向き)。
- 勾配消失の原因の理解 — 「S字だから」ではなく「微分の最大値が0.25と小さく、層を遡るたびに掛け合わされて勾配が縮むから」です。理由まで言えるようにしましょう。
📝 試験でのポイント
- 「S字曲線」「任意の実数を0から1にマッピング」という2つの表現は、シグモイド関数を特定する決め手として問われやすいポイントです。
- 「微分の最大値は0.25」という数値は、tanh関数(最大値1)との比較でそのまま出題され得ます。
- 勾配消失問題との結びつきは頻出の切り口です。「シグモイド関数は勾配消失問題が起きやすい→現在はReLUやその変種が主流」という流れで覚えましょう。
- 出力層での用途を問う問題では、「2値分類ならシグモイド、多クラス分類ならソフトマックス」という対応づけが判断基準になります。
📚 まとめ
シグモイド関数は、任意の実数を0から1に変換するS字曲線の活性化関数です。出力を確率として解釈できるため、2値分類の出力層やロジスティック回帰、ゲート機構で現在も使われています。一方、微分の最大値が0.25と小さいため勾配消失問題が起きやすく、深いネットワークの隠れ層ではReLUやその変種に主役を譲りました。「0〜1に変換する」という固有の性質が、強みと弱みの両方の源泉になっていることを押さえましょう。
