シグモイド関数はソフトマックス関数の一種?:二値分類と多クラス分類の数学的関係
こんにちは。ゆうせいです。
ディープラーニングの学習を進めていると、「シグモイド関数とソフトマックス関数は本質的に同じものだ」「シグモイド関数は2クラス版のソフトマックス関数だ」という説明に出会います。一見すると全く異なる二つの関数が、なぜそのような関係にあるのか、という疑問は自然なものです。本記事では、この関係を数式から丁寧に導きながら、両者がなぜ「本質的に同じ」と言えるのかを解説します。
ソフトマックス関数とシグモイド関数をおさらい
まず、両者の式を確認しましょう。
ソフトマックス関数は、K個の入力から、合計が1になる確率分布を出力します。
latexyk=∑j=1Kexjexk (k = 1, 2, ..., K)
シグモイド関数は、単一の入力から、0から1の間の値を出力します。
latexσ(x)=1+e−x1
形式が全く異なって見えます。ソフトマックスは複数の入力を処理し、シグモイドは単一の入力を処理します。しかし、数学的には深い関係があるのです。
2クラス分類の場合を考える
ソフトマックス関数の K を2に設定して、何が起きるかを見てみましょう。
二つのクラス(クラス1とクラス2)に対して、モデルが二つのスコア x_1, x_2 を出力する場合、ソフトマックス関数は、
latexy1=ex1+ex2ex1
latexy2=ex1+ex2ex2
という確率を与えます。当然、y_1 + y_2 = 1 です。
ここで、x_1 と x_2 の関係を考えます。通常、二値分類では、モデルが最終的に出力するのは、一つのスコア x(例えば x_1)だけです。そして、x_2 = 0 という基準値を想定することが多いのです。
このように x_2 = 0 と固定すると、
latexy1=ex1+e0ex1=ex1+1ex1
を得ます。
シグモイド関数への変形
ここで、y_1 の式をさらに変形します。
latexy1=ex1+1ex1
分子と分母を e^{x_1} で割ります。
latexy1=1+e−x11
これは、シグモイド関数の式そのものです。
つまり、ソフトマックス関数で K = 2 として、片方の入力を0に固定し、式を整理すると、シグモイド関数が現れるのです。
y_2 はどうなるのか
念のため、y_2 も計算してみます。
latexy2=ex1+1e0=ex1+11=1−y1
つまり、y_2 = 1 - σ(x_1) です。これは当然です。二値分類では、クラス1に属する確率と、クラス2に属する確率の合計が1だからです。
シグモイド関数が0から1の値を出力するのは、その本質的には「クラス1に属する確率」を表しているわけです。そして「クラス2に属する確率」は自動的に決まってしまいます。
なぜ二値分類ではシグモイドを使うのか
この数学的関係から、実装上の選択が見えてきます。
多クラス分類(K ≥ 3)では、各クラスの確率を独立に学習する必要があるため、ソフトマックス関数を使います。K個のスコア x_1, x_2, ..., x_K を出力層から得て、それらをソフトマックス関数に通すのです。
二値分類(K = 2)では、一つのスコア x を出力すれば十分です。なぜなら、もう一つのクラスの確率は 1 - σ(x) で自動的に決まるからです。計算量も少なく、実装も単純になります。
つまり、シグモイド関数は「ソフトマックス関数の計算効率を重視した二値分類版」という見方ができるのです。
損失関数の観点から見ても
この関係は、損失関数の観点からも確認できます。
多クラス分類では、交差エントロピー誤差を使います。
latexE=−∑k=1Ktklogyk
t_k は One-Hotベクトルで、k番目のクラスが正解なら t_k = 1、その他は0です。
二値分類(K = 2)で、t_1, t_2 を One-Hotベクトルとして、正解がクラス1なら t = [1, 0] とします。この場合の交差エントロピー誤差は、
E = -1 × log y_1 - 0 × log y_2 = -log y_1
つまり、正解クラスの予測確率の対数だけが計算に寄与します。
シグモイド関数 σ(x) を使った場合、y_1 = σ(x) なので、
E = -log σ(x)
となります。これは、二値分類における標準的な損失関数の形です。
つまり、シグモイド関数を使うことは、「2クラスのソフトマックス関数を計算効率よく実装したもの」という解釈が可能なのです。
実装上の違いの意味
実装では、この理論的な関係が現れます。
多クラス分類の場合、出力層に K 個のニューロンがあり、それぞれが各クラスへの決定根拠となるスコアを出力します。その後、ソフトマックス関数でそれらを確率に変換します。
二値分類の場合、出力層に1個のニューロンがあり、一つのスコア x を出力します。その後、シグモイド関数でそれを0から1の確率に変換します。
ただし、実装上の工夫として、二値分類でも「ソフトマックス的に考える」ことはできます。具体的には、出力層に2個のニューロンを持たせ、二つのスコア x_1, x_2 を出力してからソフトマックス関数を適用することもできます。数学的には、x_2 = 0 と固定した場合と同じ結果が得られます。
実際には、計算効率や直感的な理解の観点から、二値分類ではシグモイドを、多クラス分類ではソフトマックスを使い分けるのが標準的な実装になっています。
直感的な理解
簡潔にまとめると、以下のようになります。
ソフトマックス関数は、複数の選択肢の中から「どれが最も起こりやすいか」を確率で表現する道具です。
シグモイド関数は、「ある事象が起きるか起きないか」の二者択一を確率で表現する道具です。
二者択一の問題は、複数選択肢の問題の特殊ケース(選択肢が2個の場合)ですから、数学的には同じ枠組みで説明できるのです。
参考:勾配の視点からも
微分(勾配)の観点からも、両者の関係は見えます。
ソフトマックス関数のk番目の出力を x_j で微分すると、
latex∂xj∂yk=yk(δkj−yj)
(δ_{kj} はクロネッカーのデルタ)
という形になります。
一方、シグモイド関数を x で微分すると、
latexdxdσ=σ(x)(1−σ(x))
この二つの式も数学的に一貫した関係にあります。K = 2 の場合に、ソフトマックスの勾配式を適用すれば、シグモイドの勾配式が現れるのです。
まとめ
シグモイド関数がソフトマックス関数の「一種」と言われる理由は、K = 2(二値分類)の場合にソフトマックス関数を簡約化すると、シグモイド関数が現れるからです。
数学的には、シグモイド関数 σ(x) = 1 / (1 + e^{-x}) は、ソフトマックス関数で x_2 = 0 と固定したときの y_1 と等価です。
実装上は、二値分類でも多クラス分類の枠組みで処理できますが、計算効率の観点からシグモイドを使い分けるのが標準的です。
この関係を理解することで、「なぜ二値分類と多クラス分類で異なる関数を使うのか」という疑問が解消されます。さらに、新しい分類タスクに遭遇した際に、どちらの関数を選ぶべきかを判断する根拠も得られるでしょう。
次のステップとして、具体的な数値例で K = 2 のソフトマックスを計算し、それがシグモイドの結果と一致することを確認することをお勧めします。その計算を通じて、理論と実装の関係がより深く理解できるようになるでしょう。
投稿者プロフィール

- 代表取締役
-
セイ・コンサルティング・グループ株式会社代表取締役。
岐阜県出身。
海外放浪の末、2000年創業、2004年会社設立。
IT企業向け人材育成研修歴業界歴20年以上。
すべての無駄を省いた費用対効果の高い「筋肉質」な研修を提供します!
この記事に間違い等ありましたらぜひお知らせください。
学生時代は趣味と実益を兼ねてリゾートバイトにいそしむ。長野県白馬村に始まり、志賀高原でのスキーインストラクター、沖縄石垣島、北海道トマム。高じてオーストラリアのゴールドコーストでツアーガイドなど。現在は野菜作りにはまっている。
最新の投稿
新入社員2026年8月6日GoogleがGDPRの制裁金を受けた件を解説:規制と技術的実装のギャップ
新入社員2026年8月6日C2PAとは何か:デジタルコンテンツの出所と真正性を証明する技術
新入社員2026年8月6日代理変数とは何か:見えないバイアスの真犯人を理解する
新入社員2026年8月6日再犯予測システムCOMPASを解説:AIの差別性が明らかになった歴史的事例
