こんにちは。
今回のテーマは「微分」です。高校生に戻りましょう。微分の定義を覚えていますか?
![Rendered by QuickLaTeX.com x^2](https://research.miidas.jp/wp-content/ql-cache/quicklatex.com-76e092d71026e8d64e9e3fc6857554cc_l3.png)
の微分は
![Rendered by QuickLaTeX.com 2x](https://research.miidas.jp/wp-content/ql-cache/quicklatex.com-da4556c0a02b580047678d308649edf9_l3.png)
ですよね。これを定義により確認しましょう。微分したい関数を
![Rendered by QuickLaTeX.com f(x)](https://research.miidas.jp/wp-content/ql-cache/quicklatex.com-a7ee323bc5a3f73ad5e066b13bed5504_l3.png)
とするとその微分は次のような定義でした。
![Rendered by QuickLaTeX.com \[f'(x) = \lim_{\delta h \rightarrow 0} \frac{f(x+\delta h) - f(x)}{\delta h}\]](https://research.miidas.jp/wp-content/ql-cache/quicklatex.com-1596ac2c3028ff717924aa2f62dcdf5e_l3.png)
そうです。これを使って微分を計算するのが差分法です。僕はこれを先生に教えてもらったのですが調べてみると微分方程式を解くための方法なんですね。どちらが正しいかわかりませんがとりあえず微分の定義により微分を計算することを差分法というのでしょう。
では次の微分を考えてみましょう。
![Rendered by QuickLaTeX.com \begin{align*} \sigma(x) = \frac{1}{1+e^{-x}} \end{align*}](https://research.miidas.jp/wp-content/ql-cache/quicklatex.com-a7143829d7d0436ac2169335625f1e9a_l3.png)
では微分していきましょう。
![Rendered by QuickLaTeX.com \begin{align*} \frac{d}{dx} \sigma (x) &= - (1+e^{-x})^{-2} (-e^{-x}) \\ &= \left( \frac{1}{1+e^{-x}} \right) \left( \frac{e^{-x}}{1+e^{-x}} \right) \\ &= \frac{1}{1+e^{-x}} \left( 1 - \frac{1}{1+e^{-x}} \right) = \sigma(x)(1- \sigma(x)) \end{align*}](https://research.miidas.jp/wp-content/ql-cache/quicklatex.com-9764761063ad5ef75a1f6be08fed436d_l3.png)
合成関数の微分でした。なんだか奇妙な形ですね。ところで元の関数
![Rendered by QuickLaTeX.com \sigma(x)](https://research.miidas.jp/wp-content/ql-cache/quicklatex.com-d5e7a5941b041ef80c0562e4e935537e_l3.png)
はどんな形かプロットして見てみましょう。
![](https://research.miidas.jp/wp-content/uploads/2018/10/Screen-Shot-2018-10-15-at-20.20.08-300x224.png)
画像では
![Rendered by QuickLaTeX.com [-10,10]](https://research.miidas.jp/wp-content/ql-cache/quicklatex.com-0dd8fe654e2bf92a5d7efc5a8532c197_l3.png)
になっていますが、定義域は
![Rendered by QuickLaTeX.com \mathbb{R}](https://research.miidas.jp/wp-content/ql-cache/quicklatex.com-a6e421454947c585b8fb5ae10299f873_l3.png)
であり、値域は
![Rendered by QuickLaTeX.com (0,1)](https://research.miidas.jp/wp-content/ql-cache/quicklatex.com-dd01415f329053c1a450867378fc1582_l3.png)
です。実はこの関数有名なもので「シグモイド関数」と言います。
定義域と値域よりこの関数は確率を返す関数としてみることができます。実際、ニューラルネットワークやロジスティック回帰で使われています。
ところでこの導関数はどんな形でしょうか?気になりませんか?見てみましょう。
![](https://research.miidas.jp/wp-content/uploads/2018/10/Screen-Shot-2018-10-15-at-20.20.29-300x224.png)
おっとこれはなんとも正規分布みたいですね。ガウス分布を知らない人のために見比べてみましょう。
非常に似てますね。そしてここで重要なのがシグモイド関数の導関数の値域です。グラフから最大値が
![Rendered by QuickLaTeX.com 0.25](https://research.miidas.jp/wp-content/ql-cache/quicklatex.com-b366ffd6bb61fc2bc7ba2e54235f8866_l3.png)
であることがわかります。この事実が後々重要になるので頭の片隅に置いておいてください。少し詳しくいうと多層パーセプトロン(ニューラルネットワーク)で「勾配消失」という問題はここに起因してます。
話が逸れてしまいました。全然差分法使ってねーじゃん。っていわれるかもしれません、なのでそろそろ差分法を使いましょう、と言いたいところですが記事が長くなるので実装編で会いましょう。
指摘、アドバイス、お願いします