2016/05/22

ソフトマックス関数

分野: いろんな関数  レベル: 大学数学

$n$ 次元実数ベクトル $x=(x_1,\cdots,x_n)$ を受け取って $n$ 次元実数ベクトル $y=(y_1\cdots,y_n)$
(ただし,$y_i=\dfrac{e^{x_i}}{e^{x_1}+e^{x_2}+\cdots +e^{x_n}}$

を返す関数をソフトマックス関数と言う。

ニューラルネットワークなどに応用がある重要な関数「ソフトマックス関数」についてです。

ソフトマックス関数の性質

(i) $0 < y_i < 1$
(ii) $y_1+\cdots +y_n=1$
(iii) $x$ の各成分の中で $x_i$ がダントツで大きい → $y_i$ はほぼ $1$ で $y$ の他の成分はほぼ $0$

(i), (ii)はソフトマックス関数の定義から簡単に確認できます。出力の各成分は $0$ 以上 $1$ 以下で,成分の和が $1$ であるという性質です。確率分布の表現に使えそうですね!

(iii)については具体例を見るとわかりやすいです。例えば,$x=(10,2,1)$ とすると,$y=(0.9995\cdots,0.0003\cdots,0.0001\cdots)$ となります。マックス関数(一番大きい成分を $1$ にして,それ以外のものは $0$ にする関数をこう呼ぶことにする)をソフトにしたという感じです。

シグモイド関数との関係

$n=2$ の場合は,
$y_1=\dfrac{e^{x_1}}{e^{x_1}+e^{x_2}}$ となります($y_1+y_2=1$ という条件があるので,$y_2$ のことは忘れて $y_1$ だけ考えてみる)。

分母分子を $e^{x_1}$ で割ると $\dfrac{1}{1+e^{x_2-x_1}}$ となり,シグモイド関数が登場します。

ソフトマックス関数の微分

$\dfrac{\partial y_i}{\partial x_j}=
\begin{cases}y_i(1-y_i)&i=j\\-y_iy_j&i\neq j\end{cases}$

証明

表記簡略化のために,$e^{x_1}+\cdots +e^{x_n}=Z$ とおく。$y_i=\dfrac{e^{x_i}}{Z}$ である。

$i=j$ のとき,
$\dfrac{\partial y_i}{\partial x_i}=\dfrac{e^{x_i}Z-e^{x_i}e^{x_i}}{Z^2}=y_i(1-y_i)$

$i\neq j$ のとき,
$\dfrac{\partial y_i}{\partial x_j}=\dfrac{-e^{x_i}e^{x_j}}{Z^2}=-y_iy_j$

ソフトマックス関数という名前、何度でも呼びたくなりますね。
分野: いろんな関数  レベル: 大学数学