前回、線形モデルは入力と出力の関係を直線でしか表せないという話を書きました。ただ、現実の問題には「合格か不合格か」「スパムか否か」のように、はい/いいえで答える分類タスクが多くあります。線形モデルの出力は実数なので、このままでは分類には使いにくい。
今回は、線形モデルの出力を確率に変換する仕組みと、それに伴って損失関数も変わるという話です。
シグモイド関数で出力を確率にする
線形モデルの出力 \( f(x) = w^T x + b \) は、どんな大きな値も小さな負の値も取り得ます。これを0から1の範囲に収めて「確率」として扱えるようにするのがシグモイド関数です。
\[ \sigma(z) = \frac{1}{1 + e^{-z}} \]線形モデルの出力をこの関数に通すと、
\[ \hat{y} = \sigma(w^T x + b) \]出力が常に0から1の間に収まります。これがロジスティック回帰です。名前に「回帰」と付いているのが紛らわしいのですが、実態は分類モデルです。
出力が0.8なら「80%の確率でクラス1」と解釈できるので、閾値(たとえば0.5)を決めてそれより上なら1、下なら0と判定します。
活性化関数とは何か
シグモイド関数のような、入力を非線形に変換する関数を総称して活性化関数(Activation Function)と呼びます。名前の由来は脳のニューロンで、一定以上の刺激で発火する仕組みに着想を得ています。
なぜ非線形な変換が必要かというと、線形な計算をどれだけ重ねても結果は線形のままだからです。\( f(g(x)) \) で \( f \) も \( g \) も線形なら、合成しても線形。層を何百重ねても直線一本と変わりません。
層の間に非線形な変換を挟むことで、モデルは曲線や曲面を表現できるようになります。ディープラーニングが複雑なパターンを捉えられるのは、この非線形性のおかげです。ここは理屈としてはわかるのですが、「なぜシグモイドなのか」「他の関数ではだめなのか」が気になるところで、実際ReLUなど別の活性化関数もよく使われます。この辺りは後の記事で触れる予定です。
損失関数も変わる:交差エントロピー
モデルの出力が確率になると、損失関数も二乗誤差から交差エントロピー誤差に変わります。
\[ L(\hat{y}, y) = - [y \log \hat{y} + (1 - y) \log (1 - \hat{y})] \]正解が1なのに予測が0に近いと、 \( \log \) の性質で損失が急激に大きくなります。正解を高い確率で当てていれば損失はほぼ0。間違いの度合いに応じてペナルティが非線形に増えるので、確信を持って外したときに特に厳しく効きます。
二乗誤差でも分類はできなくはないのですが、交差エントロピーのほうが勾配の振る舞いが良く学習が安定しやすいので、確率を出力するモデルではほぼこちらが使われています。
まとめ
線形モデルの出力をシグモイド関数に通して確率にし、交差エントロピーで損失を測る。これでモデルは分類ができるようになります。
「線形計算→活性化関数」の組み合わせは、そのままニューラルネットワークの1層分の構造です。次回は、この層を積み重ねたときに何が起きるのか、多層パーセプトロンについて書きます。