北野坂備忘録

主にインストールやプログラミングのメモを載せています。

プログラマから見たソフトマックス関数

 機械学習において、ソフトマックス関数はロジスティック回帰の一般化としてとして現れます。ロジスティック関数のあとで説明されるのが通例です。
 式はこちら。
ソフトマックス関数 - 機械学習の「朱鷺の杜Wiki」

 多クラス分類問題に用いられます。

 以前から、「なぜこの関数を一般化ロジスティック関数と呼ばずにソフトマックス関数と呼ぶのか?」と思っていました。
 
 理由は「高校数学の美しい物語」で分かりました。
mathtrain.jp

 こちらの「ソフトマックス関数の性質」の項で、

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

と解説されています。
 これで腑に落ちました。

 プログラミングをしている人ならMAX関数と言えばすぐに理解できると思います。このMAX関数をソフトにしたものがソフトマックス関数であり、

・MAX関数と違ってベクトルで返す。
・大きな成分が過大に(1に近く)評価され、小さな成分が過少に(0に近く)評価される。

関数だということが分かります。

 プログラマからすると、ソフトマックス関数はロジスティック関数から説明されるよりMAX関数から説明してもらったほうが分かりやすいですし、下手をするとソフトマックス関数の説明をしてもらってからその特別な場合としてロジスティック関数の説明をしてもらったほうが理解しやすいかもしれません。