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で共有されているかを niで表すことにしよう。先の例では、n2=3ということになる。n1+n2+n3+⋯+nk=N である。
この時、N個のBox、k個の状態からなるシステムが取り得る可能な組み合わせの総数Wは、次のようにして計算できる。
W=N!n1!n2!n!⋯nk!
この数を計算してみよう
階乗は、少し扱いにくいので、次のスターリングの近似式を用いる。logn!≃nlogn−n
logW=log(N!n1!n2!n!⋯nk!)=logN!−∑logni!=(NlogN−N)−∑(nilogni−ni)
先に見たように、∑ni=Nなので、左の −Nと右の∑niは、打ち消しあって消える。logW=NlogN−∑nilogniとなる。
ここで、pi=niNと置く。ni=piNである。また、∑ni=Nから、∑pi=1が成り立つ。
1NlogW=logN−1N(∑nilogni)=logN−∑pilog(piN)=logN−(∑pilogpi+∑pilogN)
∑pi=1であるから、∑pilogNは、logNとなって、打ち消しあう。
結局、
1NlogW=−∑pilogpi
であることがわかる。
エントロピーが求まったが、もう少し進もう
この右辺は、エントロピーである。ここでの計算は、系が取り得る状態の数からエントロピーが導けることを示したものなのだが、今回は、もう少し先に進もうと思う。というのも、これだけじゃ、Softmax に届かないから。これから、少し、物理っぽい話をする。といっても大したことではない。
先のBoxの図で、それぞれのBoxが状態iを持つときに、エネルギーEiを持つとする。系全体のエネルギーは、次のようになる。ここで、⟨E⟩は、一つのBoxの平均エネルギーである。
EnergyTotal=∑niEi=N⟨E⟩
両辺をNで割って、pi=niNを使えば、次の式が成り立つことがわかる。
∑piEi=⟨E⟩
この条件と、∑pi=1が成り立つ時、次のような問題を考える。
「エントロピー −∑pilogpiは、どのような時に最大になるのか?」
分配関数
拘束条件が与えられた時の式の最大値(最小値でもいいのだが)の(必要)条件は、ラグランジェの未定乗数法で求められる。(ごめんなさい。疲れてきたので、説明は省く。)次の式L を考える。
L=(−∑ipilogpi)+α(∑ipi−1)+β(∑ipiEi−⟨E⟩)
この式Lをpiで偏微分した式がゼロになる時、元の式が極値を取る条件が求められる。
0=∂L∂pi=−log(pi)−1+α+βEi
これから、logpi=−1+α+βEiがわかるから、pi=exp(−1+α+βEi)。この時、1=∑ipi=exp(−1+α)Zと置ける。ただし、Z≡∑jexp(βEj)である。だから、pi=1Zexp(βEi)
すなわち、
pi=eβEi∑jeβEj
これは、Softmaxの式と同じ形である!
物理では、Z=∑jexp(βEj)の形の式を「(エネルギー)分配関数(partition function)」と呼び、多くの応用がある。
温度をT、ボルツマン定数を kBとした時、β≡1(kBT) であるので、熱力学では、次の形の分配関数がよく用いられる。Z=∑jexp(EjkBT)
コメント
コメントを投稿