G検定(ジェネラリスト検定)
そふとまっくすかんすう
ソフトマックス関数
Softmax Function
ソフトマックス関数は、3つ以上の選択肢から1つを選ぶ多クラス分類で出力層に使う関数です。各クラスの確率を他のクラスと比べて相対的に決めるので、全クラスの確率を合計すると必ず1.0になります。
詳しい説明
多クラス分類の2つのやり方
2つの選択肢から1つを選ぶ二値分類に対して、多くの選択肢から1つを選ぶ問題を多クラス分類と呼びます。多クラス分類には主に2つのやり方があります。one-vs.-allとone-vs.-oneです。one-vs.-oneは、通常ソフトマックスと呼ばれます。
one-vs.-allでは、N個のクラスがあればN個の二値分類器を用意します。たとえば果物の画像なら、果物の種類ごとに、その果物かどうかを判定する分類器を1つずつ作ります。出力層の各ノードには、シグモイド関数を1つずつ独立に適用します。
ソフトマックス関数を使う方法も、ネットワークの構造は同じです。変わるのは出力層の変換だけです。各ノードに別々にシグモイド関数をかけるのをやめ、ソフトマックス関数で全クラスの確率をまとめて決めます。こうすると、確率の合計がちょうど1.0になります。出典は、この制約があると学習が速く収束すると説明しています。
果物の例で比べる確率の合計
one-vs.-allで果物の画像を分類した例では、ある果物である確率が84%、別の果物である確率が7%と出ました。各クラスの確率を他のクラスと無関係に決めているため、全クラスを足すと1.43になり、1.0を超えてしまいます。
同じ例をソフトマックス関数で作り直すと、その果物である確率は63%になります。この63%は、その果物であって、ほかの果物ではない確率を表します。全クラスの確率を足すと1.0になります。
ソフトマックス関数の式
クラスjの確率は次の式で求めます。
p(y=j|x) = e^(wj^T x + bj) / Σ_k e^(wk^T x + bk)
分子はクラスjの値の指数、分母は全クラスの指数の和です。分子を分母で割るので、全クラスの確率を足すと1.0になります。出典は、この式をロジスティック回帰の式を複数クラスへ拡張したものと説明しています。また、出力層の直前にある隠れ層(ソフトマックス層)は、出力層と同じ数のノードを持つ必要があります。
Full softmaxとcandidate sampling
Full softmaxは、すべてのクラスについて確率を計算します。クラスが少なければ計算は安く済みますが、クラスが増えると計算量が大きくなりすぎます。candidate samplingは、正解のラベルについては確率をすべて計算し、不正解のラベルについてはランダムに選んだ一部だけで計算します。クラスが非常に多い問題では、この方法で効率を上げられます。
使えない場面
ソフトマックス関数は、各データがちょうど1つのクラスにだけ属すると仮定しています。1つのデータが同時に複数のクラスに属しうる問題には使えません。その場合は、ソフトマックス関数の代わりに複数のロジスティック回帰を使う必要があります。
試験で問われること
G検定
- ソフトマックス関数は、多クラス分類の出力層で各クラスの確率を相対的に決め、全クラスの確率の合計を必ず1.0にする。
- one-vs.-allは各出力ノードに独立にシグモイド関数をかけるため、確率の合計が1.0にならない。例では1.43になった。
- ソフトマックス関数の式p(y=j|x) = e^(wj^T x + bj) / Σ_k e^(wk^T x + bk)は、ロジスティック回帰を複数クラスへ拡張したものとされる。
- Full softmaxは全クラスの確率を計算する。candidate samplingは正解のラベル全部と、不正解のラベルの一部だけで計算し、クラスが多い問題で効率を上げる。
- ソフトマックス関数は1データが1クラスだけに属することを前提とする。複数クラスに同時に属しうる場合は、複数のロジスティック回帰を使う。
最終更新日: 2026/09/23