「シグモイド関数の微分はどうやって計算するのか?」「バックプロパゲーションでシグモイドの勾配はどう使われるのか?」——機械学習を数学的に理解しようとする方がよく抱く疑問です。
シグモイド関数の微分(導関数)は、その特徴的な形式から非常に覚えやすく使いやすい公式を持っています。
本記事では、シグモイド関数の微分の導出過程・公式・数学的性質・バックプロパゲーションでの活用・連鎖律との関係まで、数学的に丁寧かつわかりやすく解説していきます。
微分計算の手順を一つひとつ追いながら理解を深めたい方にとって、実用的な内容となっているでしょう。
シグモイド関数の微分公式——美しい自己参照的な形
それではまず、シグモイド関数の微分公式とその意味について解説していきます。
シグモイド関数の微分には、非常に優れた性質があります。
シグモイド関数の微分公式
シグモイド関数の微分公式
シグモイド関数:σ(x) = 1 ÷ (1 + e^(−x))
導関数(微分):σ'(x) = σ(x) × (1 − σ(x))
別の表記:dσ/dx = σ(x) × (1 − σ(x))
重要な性質:
・微分値はシグモイド関数の出力値σ(x)だけで計算できる(再計算不要)
・x=0のとき:σ'(0) = 0.5 × 0.5 = 0.25(微分の最大値)
・飽和領域(|x|が大きい)では微分値は0に近づく
シグモイド関数の微分がσ(x)×(1−σ(x))という自己参照的な形になることは、バックプロパゲーションの実装においてフォワードパス(順伝播)で計算済みの出力値を再利用できるという実用上の大きなメリットをもたらします。
シグモイド関数の微分の導出——ステップごとに確認する
シグモイド関数の微分公式がσ'(x) = σ(x)×(1−σ(x))になることを、数学的に導出してみましょう。
シグモイド関数の微分の導出過程
σ(x) = 1 ÷ (1 + e^(−x)) = (1 + e^(−x))^(−1) と表せる
【合成関数の微分(連鎖律)を使う】
u = 1 + e^(−x) とおくと σ(x) = u^(−1)
du/dx = −e^(−x)
dσ/du = −u^(−2) = −1÷u²
dσ/dx = dσ/du × du/dx = (−1÷u²) × (−e^(−x)) = e^(−x) ÷ u²
u = 1 + e^(−x) を代入:
dσ/dx = e^(−x) ÷ (1 + e^(−x))²
これをσ(x)を使って書き直す:
e^(−x) ÷ (1 + e^(−x))² =
× [e^(−x) ÷ (1 + e^(−x))]
= σ(x) × [(1 + e^(−x) − 1) ÷ (1 + e^(−x))]
= σ(x) × 
= σ(x) × (1 − σ(x)) 【導出完了】
微分値の数値的な確認
導出した微分公式を具体的な数値で確認してみましょう。
| x の値 | σ(x)の値 | σ'(x) = σ(x)×(1−σ(x))の値 |
|---|---|---|
| −3 | 約0.047 | 約0.047×0.953 ≒ 0.045 |
| −1 | 約0.269 | 約0.269×0.731 ≒ 0.197 |
| 0 | 0.5 | 0.5×0.5 = 0.25(最大値) |
| 1 | 約0.731 | 約0.731×0.269 ≒ 0.197 |
| 3 | 約0.953 | 約0.953×0.047 ≒ 0.045 |
微分値はx=0で最大値0.25を取り、|x|が大きくなるほど0に近づく対称的な形状です。
シグモイド関数の微分の数学的性質
続いては、シグモイド関数の微分の重要な数学的性質について確認していきます。
微分値の最大値と対称性
シグモイド関数の微分σ'(x) = σ(x)×(1−σ(x))は、σ(x) = 0.5すなわちx = 0のとき最大値0.25を取ります。
また、シグモイド関数の微分はx = 0を中心として左右対称な形状(偶関数的な形状)を持っています。
このことは「シグモイド関数が最もダイナミックに変化するのはx=0付近であり、入力が0から離れるほど変化が鈍化する」ということを意味します。
飽和領域での勾配消失——深層学習への影響
シグモイド関数の飽和領域(|x|が大きい領域)では、微分値が0に非常に近くなります。
x = ±5 付近では σ'(x) ≒ 0.006、x = ±10 付近では σ'(x) ≒ 0.000045と、急激に小さくなります。
深層ニューラルネットワークでシグモイド関数を使うと、多くのニューロンが飽和領域に入りやすく、バックプロパゲーションで層を遡るたびに0.25以下の微分値が掛け算されて勾配が急速に消失してしまうという深刻な問題が生じます。
シグモイド関数の2階微分と変曲点
シグモイド関数の2階微分を求めると、x = 0が変曲点(曲線の曲がり方が変わる点)であることが確認できます。
シグモイド曲線はx = 0を挟んで、x < 0 側では下に凸(曲率が正)からx > 0 側では上に凸(曲率が負)に変化し、x = 0が変曲点となります。
この変曲点での対称性がシグモイド関数の「釣り合いのとれたS字型」の形状を生み出しています。
連鎖律とシグモイド関数の微分——バックプロパゲーションでの活用
続いては、連鎖律(Chain Rule)とシグモイド関数の微分がバックプロパゲーションでどう活用されるかについて確認していきます。
連鎖律の基本——合成関数の微分法
連鎖律(Chain Rule)とは、合成関数の微分を内側と外側の関数の微分の積として計算する法則です。
f(g(x)) の微分は「f'(g(x)) × g'(x)」となります。
ニューラルネットワークでは各層の計算が合成関数として連鎖しているため、バックプロパゲーションは連鎖律を繰り返し適用することで各パラメータの勾配を計算するアルゴリズムです。
バックプロパゲーションでのシグモイド勾配の伝播
シグモイド関数を活性化関数として持つニューロンでのバックプロパゲーションを考えてみます。
シグモイドニューロンのバックプロパゲーション
フォワードパス(順伝播):
z = wᵀx + b(重みとバイアスによる線形変換)
a = σ(z)(シグモイド活性化関数の適用)
L = 損失関数の値(次の層からの損失)
バックワードパス(逆伝播):
∂L/∂z = ∂L/∂a × ∂a/∂z = ∂L/∂a × σ(z) × (1 − σ(z))
(連鎖律:損失の勾配 × シグモイドの微分値)
∂L/∂w = ∂L/∂z × x(重みへの勾配)
∂L/∂b = ∂L/∂z(バイアスへの勾配)
このように、シグモイドの微分値σ(z)×(1−σ(z))は連鎖律によってフォワードパスの出力a=σ(z)から直接計算できるため、バックプロパゲーションの実装効率に優れているという特性があります。
勾配消失問題を連鎖律の観点から理解する
連鎖律によって層ごとの微分値が掛け算されることを理解すると、勾配消失問題がより明確に見えてきます。
N層の深いネットワークでシグモイドを使うと、バックプロパゲーションの勾配はN個のシグモイドの微分値(最大でも0.25)の積になります。
たとえば10層のネットワークで各層でシグモイドが飽和(微分値≒0.1とする)していると、最下層への勾配は0.1^10 = 10^(−10)というほぼゼロの値になります。
深層ネットワークでの勾配消失はシグモイドの微分値が1より小さいことが連鎖律によって増幅された結果であり、この問題の数学的本質の理解がReLUの優位性の理解につながるでしょう。
シグモイド関数の微分の実装——機械学習フレームワークでの自動微分
続いては、シグモイド関数の微分の実際の実装について確認していきます。
自動微分(Autograd)とシグモイドの微分
TensorFlowやPyTorchなどの現代的な深層学習フレームワークは「自動微分(Automatic Differentiation・Autograd)」機能を持ち、手動で微分を実装しなくても自動的に勾配を計算してくれます。
シグモイド関数もフレームワークに組み込まれており、フォワードパスでシグモイドを適用すると、バックワードパスで自動的にσ(x)×(1−σ(x))の勾配が計算されます。
自動微分の仕組みを理解するためにも、シグモイドの微分公式を手計算で導出できることは非常に重要な学習ステップです。
数値微分との比較——解析的微分の精度の高さ
微分を実装する方法として「数値微分」と「解析的微分(シンボリック微分)」があります。
数値微分はf'(x) ≈ [f(x+h) − f(x)] ÷ h という近似式を使う方法ですが、計算コストが高く数値誤差が生じます。
σ'(x) = σ(x)×(1−σ(x)) という解析的な公式を使うことで、数値誤差なく高速に正確な微分値が得られます。
深層学習フレームワークの自動微分はシグモイドなどの標準関数については解析的な微分公式を使って実装されており、数値微分よりも高速かつ正確な勾配計算が実現されているでしょう。
シグモイド関数の微分の各種応用
シグモイド関数の微分は、機械学習の様々な文脈で使われます。
| 応用場面 | 役割 | 具体的な計算 |
|---|---|---|
| バックプロパゲーション | 中間層でのシグモイドの勾配計算 | σ(z)×(1−σ(z))をゲートとして乗算 |
| ロジスティック回帰の学習 | 損失関数の重みへの偏微分計算 | (予測確率−正解)×入力特徴量 |
| LSTMのゲート微分 | ゲートのバックプロパゲーション | 各ゲートのシグモイド微分を計算 |
| Attention機構(一部) | Attentionスコアの正規化 | Sigmoid Attentionでの微分計算 |
シグモイド関数の微分の重要ポイントまとめ
・公式:σ'(x) = σ(x) × (1 − σ(x))
・最大値はx=0のとき0.25(シグモイド出力が0.5のとき)
・フォワードパスの出力値から直接計算できる(実装効率が良い)
・飽和領域(|x|が大きい)では微分値≒0となり勾配消失の原因になる
・連鎖律によってバックプロパゲーションでの勾配計算に使われる
・現代フレームワークでは自動微分により解析的に正確・高速に計算される
まとめ
本記事では、シグモイド関数の微分公式の導出過程から、数学的性質・数値的確認・バックプロパゲーションでの活用・連鎖律との関係・勾配消失問題への影響・自動微分との関係まで体系的に解説してきました。
シグモイド関数の微分公式σ'(x) = σ(x)×(1−σ(x))は、シンプルな自己参照的な形を持つ美しい公式であり、バックプロパゲーションの実装効率化に貢献する一方、飽和領域での小さな微分値が深層学習における勾配消失問題の主要な原因となっているという二面性を持ちます。
シグモイドの微分を正確に理解することで、なぜReLUが現代の深層学習で標準になったのかという本質的な理由も明確に把握できます。
本記事を参考に、シグモイド関数の微分への理解を深め、機械学習・深層学習の数学的基盤の習得に役立てていただければ幸いです。