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

ソフトマックス関数

更新日時 2021/03/07
ソフトマックス関数

ソフトマックス関数とは,nn 個の実数 (x1,,xn)(x_1,\cdots,x_n) を入力とし,

yi=exiex1+ex2++exn(i=1,,n)y_i=\dfrac{e^{x_i}}{e^{x_1}+e^{x_2}+\cdots +e^{x_n}}\:(i=1,\dots,n)

により定まる nn 個の実数 (y1,yn)(y_1\cdots,y_n) を出力する関数のこと。

ソフトマックス関数の性質を整理します。ソフトマックス関数はニューラルネットワークなどに応用がある重要な関数です。

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

  • 「ソフトマックス」と呼ぶ理由

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

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

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

ソフトマックス関数の基本的な性質
  • 0<yi<10 < y_i < 1
  • y1++yn=1y_1+\cdots +y_n=1

これらの性質はソフトマックス関数の定義

yi=exiex1+ex2++exn(i=1,,n)y_i=\dfrac{e^{x_i}}{e^{x_1}+e^{x_2}+\cdots +e^{x_n}}\:(i=1,\dots,n)

から簡単に確認できます。

出力の各成分は 00 から 11 の間で,成分の和が 11 であるという性質です。確率分布の表現に使えそうですね!

「ソフトマックス」と呼ぶ理由

ソフトマックス関数は,「マックス関数」を「ソフトにしたもの」とみなすことができます。

  • マックス関数とは?
    一番大きい成分を 11 にして,それ以外のものを 00 にする関数を「最大を取り出す」のでマックス関数と呼ぶことにします。

  • ソフトにするとは?
    具体例を見るとわかりやすいです。例えば,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) となります。マックス関数の出力 (1,0,0)(1,0,0) をソフトにしたという感じです。実際,以下の性質が成り立ちます。

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

入力成分の中で xix_i がダントツで大きいなら,

yiy_i はほぼ 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. ソフトマックス関数