1. 高校数学の美しい物語
  2. ソフトマックス関数

ソフトマックス関数

更新日時 2021/03/07

nn 次元実数ベクトル x=(x1,,xn)x=(x_1,\cdots,x_n) を受け取って nn 次元実数ベクトル y=(y1,yn)y=(y_1\cdots,y_n)

(ただし, yi=exiex1+ex2++exny_i=\dfrac{e^{x_i}}{e^{x_1}+e^{x_2}+\cdots +e^{x_n}}

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

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

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

  • シグモイド関数との関係

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

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

(i) 0<yi<10 < y_i < 1

(ii) y1++yn=1y_1+\cdots +y_n=1

(iii) xx の各成分の中で xix_i がダントツで大きい → yiy_i はほぼ 11yy の他の成分はほぼ 00

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

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

シグモイド関数との関係

n=2n=2 の場合は,

y1=ex1ex1+ex2y_1=\dfrac{e^{x_1}}{e^{x_1}+e^{x_2}} となります(y1+y2=1y_1+y_2=1 という条件があるので,y2y_2 のことは忘れて y1y_1 だけ考えてみる)。

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

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

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

証明

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

i=ji=j のとき,

yixi=exiZexiexiZ2=yi(1yi)\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)

iji\neq j のとき,

yixj=exiexjZ2=yiyj\dfrac{\partial y_i}{\partial x_j}=\dfrac{-e^{x_i}e^{x_j}}{Z^2}=-y_iy_j

ソフトマックス関数という名前,何度でも呼びたくなりますね。

人気記事
  1. 高校数学の美しい物語
  2. ソフトマックス関数