シグモイド関数を微分する
Sponsored Links
皆さんこんにちは
お元気ですか。私は普通です。
さて、今日は以下のシグモイド関数を微分してみます。
シグモイド関数とは何か?
以下のような形で示す関数です。ニューラルネットワークの活性化関数とかで使われます。
ニューラルネットワークの学習で最急降下法を使う時に微分が必要になります。
その他でも結構この関数の微分は扱われたりします。
※表示用のソースコードは一番下へ
微分したらこうなることが一般的に知られてますが、どうしてこうなるのでしょう?
微分の計算式
急にやりたくなったので、やってみた
久々に真面目に微分したので、色々間違ってたらすみません。
以前行った、最急降下法を
このまま微分だと面倒なので、はじめに式変形
合成微分の公式を使い
と置くと以下のように表現ができる。
次にそれぞれについて微分を行う。
微分した2つの式を代入すると以下の式に変換できる。
上記の式を分数の形にすると
更に式を変形する。
これから式を変換させます。
左辺に着目して、左辺の式を変形します。
変形した左辺の式をf'(x)に代入すると以下のようになります。
ここで元々のf(x)が以下であることを思い出し代入すると
代入結果は以下の通り、よく知られている微分の値になりましたね。
ソースコード
import numpy as np from pylab import * def sigmoid(x): return 1.0 / (1.0 + np.exp(-x)) def sigmoidPlot(): x = np.arange(-5.0, 5.0, 0.1) y = sigmoid(x) plot(x,y) show() if __name__ == '__main__': sigmoidPlot()