logo

ディープラーニングにおけるソフトマックス関数 📂機械学習

ディープラーニングにおけるソフトマックス関数

定義

$\mathbf{x} = (x_{1} , \cdots , x_{n}) \in \mathbb{R}^{n}$であるとしよう。$\sigma_{j} ( \mathbf{x} ) = \dfrac{ e^{x_{j}} }{ {\sum_{i=1}^{n} e^{x_{i}} }}$に対して$\sigma ( \mathbf{x} ) := \left( \sigma_{1} (\mathbf{x}) , \cdots , \sigma_{n} (\mathbf{x} ) \right)$のように定義された$\sigma : \mathbb{R}^{n} \to (0,1)^{n}$をソフトマックスsoftmaxという。

説明

ソフトマックス関数は活性化関数の一種であり、定義域が$\mathbb{R}^{n}$であるという特徴がある。これはベクトルを入力として受け取り、その値を正規化するために用いるためである。どのような$\mathbf{x} \in \mathbb{R}$であっても$\sigma ( \mathbf{x} )$のすべての成分は$0$と$1$の間の値であり、すべて足すとちょうど$1$になる。このような特性は確率と似ており、実際に分類問題のための人工ニューラルネットワークを実装するとき出力層に用いられる。

下の図は、入力ベクトル$\mathbf{x} = (2, -0.5, 0.5, -1, 3)$がソフトマックスを経て総和が$1$である確率分布に正規化される様子を示している。