らんだむな記憶

blogというものを体験してみようか!的なー

ニューラルネットワーク

某Web講義で線型回帰(Linear regression)による推定(predict)とロジスティック回帰(Logistic regression)による分類(classification)、特に二値分類(binary classification)をさらっと流して、ニューラルネットワーク(Neural network)的な話題に突入。
ロジスティック回帰は天下り的にシグモイド関数と負の対数尤度関数を使ったモデルでの解説。あまり強い根拠を感じるわけでもなかったが、計算が簡単だし、勾配降下法(gradient descent)の計算も実装も楽だから、悪くはないだろう。「確率」と絡められるのはなんかもやもやとするものはあるが、確率は絶対的な宇宙の真理でもないので、ある程度は何をもって確率値これこれとすると定めても良いのだろう。(この辺の哲学的な話(?)はhttp://www.amazon.co.jp/dp/4000051571/が分かりやすいように思う)

機械学習とか二値分類とか - らんだむな記憶が二値分類における対数尤度関数を構築する手前のメモ。最小二乗法ベースの尤度関数だと local optima がぽろぽろ出て勾配降下法で最適なフィッティングができないかもしれないので、対数尤度関数を使ってぐっと解消しているようなのだが、本当にこれで local optima が抑制されているのか細かいところはよく分かっていない。経験的にかなりうまくいくというだけかもしれない。

ニューラルネットワークでは用語がちょっと方言が出てくるようで、線型回帰やロジスティック回帰ではただモデルのパラメータという程度の呼び名だったものが「重み(weight)」となるようだなぁ。ユニットからの出力は「活性化関数(activation function)」とな。活性化関数としてシグモイド関数を使うなら「シグモイド活性化関数」と。

―――――・・・

シグモイド関数はシグマ(の語末形)のような形状の関数という程度で
\begin{equation}
\varsigma(u) = \frac{1}{1 + \exp(-u)}
\end{equation}
f:id:derwind:20150830004818p:plain
だけでなく、
\begin{equation}
\varsigma(u) = \mathrm{tan h}(u) = \frac{\exp(u) - \exp(-u)}{\exp(u) + \exp(-u)} = \frac{1 - \exp(-2u)}{1 + \exp(-2u)}
\end{equation}
f:id:derwind:20150830004833p:plain
も使われるようだ。
更には、正規化線型関数
\begin{equation}
f(u) = \max(u,\ 0)
\end{equation}
f:id:derwind:20150830005420p:plain
というものも使われるらしい。

まぁ、色々あるんだな。

対数尤度関数を用いて、二値分類の尤度を考える場合、最初に挙げたシグモイド関数だと、
\begin{align}
- \frac{d}{du}\log(\varsigma(u)) &= \frac{d}{du}\left( \log(1 + \exp(-u)) \right) = - \frac{\exp(-u)}{1 + \exp(-u)} = - \frac{1}{1 + \exp(u)} \\
&= - \varsigma(-u) = \varsigma(u) - 1
\end{align}
という形で導関数が妙に簡単になるのも良いねってとこだ。結局もとのシグモイド関数をy軸方向に-1だけずらしたものが導関数だとな。
$\log$をかましているのに導関数が緩やかになるのを見るには、負の無限遠で関数がどう近似されるか考えたら良い。
$u \to -\infty$で$\varsigma(u) \approx \frac{1}{\exp(-u)} = \exp(u)$なので、$\log(\varsigma(u)) \approx \log(\exp(u)) = u$となって、$\log$の急上昇性は$\exp$で相殺されてまろやかになっているわけだ。
きっとこういう扱い易さもあってこの形のシグモイド関数が使われているんだろうけど、そういうこと補足すると脱線するだろうから、あまり書いてはないかもしれないな。