機械学習基礎理論独習

誤りがあればご指摘いただけると幸いです。数式が整うまで少し時間かかります。リンクフリーです。

勉強ログです。リンクフリーです
目次へ戻る

ソフトマックス関数

定義

ソフトマックス関数はロジスティック回帰やニューラルネットワークで使われます。

ソフトマックス関数は
ベクトル{\bf x}=(x_1,\ldots,x_K)^\topを受け取って、
ベクトル{\bf y}=(y_1,\ldots,y_K)^\topを返す関数です。
ただし、以下の関係式が成り立ちます。

\begin{eqnarray}
y_i=\frac{\exp(x_i)}{\sum_{k=1}^K\exp(x_k)}=\frac{e^{x_i}}{\sum_{k=1}^Ke^{x_k}}\tag{1}
\end{eqnarray}

特徴としては
0 < y_i < 0
\sum_{k=1}^Ky_k=1
などがあります。

シグモイド関数との関係

K=2の場合を考えます。

\begin{eqnarray}
y_1&=&\frac{\exp(x_1)}{\exp(x_1)+\exp(x_2)}\\
&=&\frac{\frac{\exp(x_1)}{\exp(x_1)}}{\frac{\exp(x_1)}{\exp(x_1)}+\frac{\exp(x_2)}{\exp(x_1)}}\\
&=&\frac{1}{1+\exp(x_2-x_1)}\\
&=&\frac{1}{1+\exp(-(x_1-x_2))}\tag{2}
\end{eqnarray}

シグモイド関数を多変数に拡張したのがソフトマックス関数であることが分かります。

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

\frac{\partial y_i}{\partial x_j}を求めます。

i\not=jのとき、

\begin{eqnarray}
\frac{\partial y_i}{\partial x_j}&=&\frac{\partial}{\partial x_j}\frac{\exp(x_i)}{\sum_{k=1}^K\exp(x_k)}\\
&=&\frac{0-\exp(x_i)\exp(x_j)}{(\sum_{k=1}^K\exp(x_k))^2}\\
&=&-\frac{\exp(x_i)}{\sum_{k=1}^K\exp(x_k)}\frac{\exp(x_j)}{\sum_{k=1}^K\exp(x_k)}\\
&=&-y_iy_j\\
&=&y_i(0-y_j)\tag{3}
\end{eqnarray}

となります。

i=jのとき、

\begin{eqnarray}
\frac{\partial y_i}{\partial x_j}&=&\frac{\partial}{\partial x_j}\frac{\exp(x_i)}{\sum_{k=1}^K\exp(x_k)}\\
&=&\frac{\exp(x_i)\sum_{k=1}^K\exp(x_k)-\exp(x_i)\exp(x_j)}{(\sum_{k=1}^K\exp(x_k))^2}\\
&=&\frac{\exp(x_i)}{\sum_{k=1}^K\exp(x_k)}\frac{\sum_{k=1}^K\exp(x_k)-\exp(x_j)}{\sum_{k=1}^K\exp(x_k)}\\
&=&y_i(1-y_j)\tag{4}
\end{eqnarray}

となります。

(3),(4)をまとめて書くと、以下のようになります。

\begin{eqnarray}
\frac{\partial y_i}{\partial x_j}=y_i(I_{ij}-y_j)\tag{5}
\end{eqnarray}

ここで、

\begin{eqnarray}
I_{ij}=
\left\{
    \begin{array}{l}
      1,\ i=j\\
     0,\ それ以外
    \end{array}\tag{6}
  \right.
\end{eqnarray}
です。

偉人の名言

f:id:olj611:20210418060313p:plain:w300
成功しない人がいたとしたら、
それは考えることと、努力すること、
この二つをやらないからではないだろうか。
トーマス・エジソン

参考文献

なし

動画

無し

目次へ戻る