Softmaxを他の目で見る

Softmaxの対応物を考える

さきに、ディープ・ラーニングでよく使われる「クロス・エントロピー」が、もともとのシャノンのエントロピーをベイジアン風に拡大した(という「解釈」が存在するという意味なのだが)「相対エントロピー」の一種だという話をした。

「相対エントロピー」は、「まだ残されている、学習すべき情報」と解釈できるので、ディープ・ラーニングで「クロス・エントロピー」を最小にしようという目標は、この解釈だとわかりやすいと思うという話だった。

今日は、同じくディープ・ラーニングで多用される「Softmax」の話をしようと思う。

クロス・エントロピーと同様に、AIのエンジニアは、天下りでこの関数を使うことが多い。というか、ディープ・ラーニングのフレームワークに、そのまま準備されているので、「使い方」さえ覚えれば、クラスの分類は自動的に実行されるわけで、その「意味」や「成り立ち」を考える必要はないのだが。

ただ、それは、もったいないとも思う。(余計なお世話かな?)

物理から見てSoftmax(に対応する式)が、どういうものかを見てみよう。

ある系の持つ可能な状態の数を考える

それには少し準備がいる。

まず、同じ大きさのN個のBoxからなる系を考えよう。それぞれのBoxはk個の状態を持つとしよう。
あるBoxがある状態iを取るとき、次のように線で結ぶ。

この例は、Box1が状態1を取り、Box4が状態2を取り、Box Nが状態4を取ることを表している。Box2, Box3は、この図では線で状態と結ばれていないが、それは、表記上省略しているだけである。

次の図では、Box1が状態2を取り、Box3が状態1を取り、Box4が状態4を取り、Box Nが状態kを取ることを表している。Box2の状態は、この図では省略されている。

全てのBoxは、必ず、何らかの状態を持つのだが(例では省略されていても)、全ての状態が、あるBoxの状態になるとは限らない。次の例では、Box2, Box3, Box4 は、同じ状態2を持っている。

状態iが、何個のBoxで共有されているかを $n_i$で表すことにしよう。先の例では、$n_2=3$ということになる。$ n_1+n_2+n_3+ \cdots + n_k = N$ である。

この時、N個のBox、k個の状態からなるシステムが取り得る可能な組み合わせの総数Cは、次のようにして計算できる。
$$C=\frac{N!}{n_1! n_2! n_! \cdots n_k!}$$

この数を計算してみよう

階乗は、少し扱いにくいので、次のスターリングの近似式を用いる。
$$\log n! \simeq n \log n -n $$
$$\displaystyle \log C = \log \left( \frac{N!}{n_1! n_2! n_! \cdots n_k!} \right)=\log N! - \sum \log n_i != (N\log N -N) - \sum ( n_i \log n_i - n_i)$$
先に見たように、$\sum n_i = N$なので、左の $-N$と右の$\sum n_i$は、打ち消しあって消える。$$\displaystyle \log C = N \log N -\sum n_i \log n_i $$となる。

ここで、$\displaystyle p_i = \frac {n_i}{N}$と置く。$n_i = p_i N$である。また、$\sum n_i = N$から、$\sum p_i = 1$が成り立つ。
$$ \frac{1}{N}\log C=\log N - \frac{1}{N} \left( \sum n_i \log n_i \right) =\log N -\sum p_i \log (p_i N)=\log N - \left( \sum p_i \log p_i +\sum \log p_i N \right)$$
$\displaystyle \sum p_i= 1$であるから、$\sum \log p_i N$は、$\log N$となって、打ち消しあう。

結局、
$$\frac{1}{N}\log C= -\sum p_i \log p_i$$
であることがわかる。

エントロピーが求まったが、もう少し進もう

この右辺は、エントロピーである。ここでの計算は、系が取り得る状態の数からエントロピーが導けることを示したものなのだが、今回は、もう少し先に進もうと思う。というのも、これだけじゃ、Softmax に届かないから。

これから、少し、物理っぽい話をする。といっても大したことではない。

先のBoxの図で、それぞれのBoxが状態iを持つときに、エネルギー$E_i$を持つとする。系全体のエネルギーは、次のようになる。ここで、$\langle E \rangle$は、一つのBoxの平均エネルギーである。
$$Energy_{Total}=\sum n_i E_i = N\langle E \rangle$$
両辺をNで割って、$\displaystyle p_i = \frac {n_i}{N}$を使えば、次の式が成り立つことがわかる。
$$\sum p_i E_i =\langle E \rangle$$
この条件と、$\sum p_i =1$が成り立つ時、次のような問題を考える。

「エントロピー $-\sum p_i \log p_i $は、どのような時に最大になるのか?」

分配関数

拘束条件が与えられた時の式の最大値(最小値でもいいのだが)の(必要)条件は、ラグランジェの未定乗数法で求められる。(ごめんなさい。疲れてきたので、説明は省く。)

次の式$ \mathcal{L}$ を考える。
$$ \mathcal{L} = \left( - \sum_{i} p_i \log p_i \right) + \alpha \left(\sum_{i} p_i - 1 \right) + \beta \left(\sum_{i} p_i  E_i  -  \langle E \rangle\right)$$
この式$ \mathcal{L}$を$p_i$で偏微分した式がゼロになる時、元の式が極値を取る条件が求められる。
$$ 0=\frac{\partial \mathcal{L}}{\partial p_i} =  -\log (p_i)  -1+\alpha + \beta E_i $$
これから、$\log p_i = -1 +\alpha + \beta E_i$がわかるから、$p_i = \exp \left( -1+ \alpha + \beta E_i \right)$。この時、$ \displaystyle 1 =  \sum_{i} p_i = \exp (  -1 + \alpha )  Z $と置ける。ただし、$ \displaystyle Z \equiv \sum_{j} \exp (\beta E_j)$である。だから、$ \displaystyle p_i = \frac{1}{Z} \exp ( \beta E_i )$

すなわち、
$$ p_i = \frac {e^{\beta E_i}}{\sum_{j} e^{\beta E_j}}$$
これは、Softmaxの式と同じ形である!

物理では、$ \displaystyle Z = \sum_{j} \exp (\beta E_j)$の形の式を「(エネルギー)分配関数(partition function)」と呼び、多くの応用がある。

温度をT、ボルツマン定数を $k_B$とした時、$\displaystyle \beta  \equiv \frac{1}{(k_B T)}$ であるので、熱力学では、次の形の分配関数がよく用いられる。$ \displaystyle Z = \sum_{j} \exp (\frac {E_j}{k_B T})$


コメント

このブログの人気の投稿

TPU論文の翻訳(1)

TensorFlow Foldについて

可微分ニューラルコンピュータとは何か(1) 概論