気付きのメモたち

日々感じた素敵な事をメモします

シグモイド関数を微分したら楽しかったよ、って話

シグモイド関数ってご存知でしょうか。

最近世間を騒がせている、人工知能(Deep learning)の基礎の基礎として出てくる関数なんですね。

この関数の使用目的の一つとして、微分可能であるという性質が挙げられます。

ニューロンの発火を1か0かで表す際に、ステップ関数というものが使われていたんですけれども、このステップ関数は不連続なんですね。つまり微分できない。*1

ところが、このシグモイド関数微分が出来るので、数理モデルに当てはめる際に非常に便利なんですよね。


ただ自分は

「……シグモイド関数微分出来るからすごいっていうけど、私の計算力じゃ微分できない気がするよ!」

っていうレベルでしたので、ものは試しと微分してみました。

高校2年レベルの微分だと思うんですけれど、久々に数学に触れたら結構楽しかったので、記事にしてみます。


この記事の目的ですが、

{ \displaystyle
σ(x) = \frac{1}{1+e^{-x}}
}

これが

{ \displaystyle
σ'(x) = (1 - σ(x))σ(x)
}

こうなれば良いわけです。微分しても元の関数が残っていて、難しい事は良く分からないけど便利そうですよね。


さて。

\displaystyle
1.  σ(x) = \frac{1}{1+e^{-x}}

まずはシグモイド関数の式変形をしてしまいます。(1→2)


2.  σ(x) = (1 + e^{-x})^{-1}

これだけで一気に私にも微分できそうな気がしてきました。 次はいよいよ微分してみます(2→3)


3.  σ'(x) = -(1 + e^{-x})^{-2}\cdot(-e^{-x})

微分でつまづくとしたらここかなぁと思います。 これ、合成関数の微分って言われるやつですよね。*2
どこから-2が出てきたのか、どこから  (-e^{-x}) が出て来たのかを意識すると良いと思います。

さて、ここから先は式変形になります。まずはマイナスを消しちゃいましょう(3→4)


4.  σ'(x) = (1 + e^{-x})^{-2}\cdot(e^{-x})

続いて、分数の形にしてしまいます(4→5)

\displaystyle
5.  σ'(x) = \frac{e^{-x}}{(1+e^{-x})^{2}}

あとは、元の関数を取り出していく形になります(5→6)

\displaystyle
6.  σ'(x) = \frac{1}{1+e^{-x}}\cdot\frac{e^{-x}}{1+e^{-x}}

ここで、 \displaystyle
1.  σ(x) = \frac{1}{1+e^{-x}}

なので、更に数式を変形してしまいます。(6→7)

\displaystyle
7.  σ'(x) = σ(x)\cdot\frac{e^{-x}}{1+e^{-x}}

右辺からもう一つσ(x)を取り出すために変形します(7→8)

\displaystyle
8.  σ'(x) = σ(x)\cdot\frac{(1+e^{-x})-1}{1+e^{-x}}

分かりやすく書き直します(8→9)

\displaystyle
9.  σ'(x) = σ(x)\cdot(1-\frac{1}{1+e^{-x}})

σ(x)と書き直します(9→10)

\displaystyle
10.  σ'(x) = σ(x)\cdot(1-σ(x))

完成です! 最初の式と一致しました!!

{ \displaystyle
σ'(x) = (1 - σ(x))σ(x)
}


さて、以上でシグモイド関数微分は終わりです。

何が楽しかったかっていうと、高校レベルの数学で、学問の先端に触れることが出来た、ってところです。
人工知能→Deep learning→人工ニューロンシグモイド関数→合成関数の微分
って感じで繋がってるんですね。*3

何かの目的のために、基礎的なレベルの事を調べたりトライしたりするって、楽しいですよね。
教育は体系的に行われるわけですが、体系って自分で消化して再構築しないと、その体系は腑に落ちないんじゃないかなーと思います。

…脱線しちゃいました。これでシグモイド関数微分できますね!!



以下、参考にしたサイト

differential equations - Derivative of sigmoid function $\sigma (x) = \frac{1}{1+e^{-x}}$ - Mathematics Stack Exchange

シグモイド関数を微分する - のんびりしているエンジニアの日記

*1:いたるところで微分可能ではない

*2:このサイトとか参考になりそうですhttp://naop.jp/text/3/bibun/bibun3.html

*3:すっごい雑な繋げ方ですが