ここにたどり着くまでに、微分と対数を勉強する必要があった。。。とっても疲れた。
シグモイド関数とは?
或る細胞の内部状態を出力値に変換する関数として、シグモイド関数がよく使われる。入力値の絶対値がいくら大きくても出力値は0~1の範囲に収まり、細胞に近い反応をする関数と言える。入力値が負ならば0.5以下、正ならば0.5以上の出力値となる。
シグモイド関数の微分が、ニューラルネットワークで利用される。
シグモイド関数の式
広義
1 f(x) = ----------- 1 + e^(-ax)
aをゲインと呼ぶ。ゲインによる傾きに変換を与える事が可能
狭義
1 f(x) = ----------- 1 + e^(-x)
ゲインは1。
シグモイド関数の微分
微分の中に関数自体が含まれるのが特徴
微分の公式の証明
手作業で微分してみる。
①スタート
1 f(x) = ----------- 1 + e^(-x)
②指数法則を使い展開
f(x) = (1 + e^(-x))^-1
③微分しやすくするため、関数を合成関数の形態に展開。
1) 以下の定義をする。
u = 1 + e^(-x)
2) uを使って、元の式を表記。合成関数の表記になる
f(u) = u^(-1)
合成関数の微分は、2つの関数の微分を掛け合わせたものになる。
④関数uを微分する。
公式: (x^n)' = nx^(n-1)
f(u) = u^(-1) →右辺を公式に従い展開すると微分になる f'(u) = -1 * u^(-1-1) = -u^(-2)
⑤新たに定義した関数uの微分をする。
以下3つの公式を使う
a) (a^x)' = a^x * loge(a)
b) (e^x)' = e^x
c) (ax)' = a
u = 1 + e^(-x) ・1は定数のため微分するとゼロになる ・eはネイピア数 ここでも合成関数の微分を使う -xを関数vとして以下の合成関数にする。 v = -x u = e^v 関数vは、cの公式で微分して以下 (v)' = -1 関数e^vは、bの公式で微分して以下 (e^v)' = e^v よって合成関数の微分は、以下 (u)' = -1 * e^v (u)' = -1 * e^(-x) (u)' = -e^(-x) ⑥これで最初の以下の合成関数の微分をする f'(x) = -u^(-2) * -e^(-x) f'(x) = u^(-2) * e^(-x) uを展開 f'(x) = (1 + e^(-x))^(-2) * e^(-x) ↓ e^(-x) f'(x) = --------------- (1 + e^(-x))^2 ↓ e^(-x) 1 f'(x) = ---------- * ---------- 1 + e^(-x) 1 + e^(-x) ここで左側部分を以下に変形する。 e^(-x) 1 + e^(-x) 1 ---------- = ---------- - ---------- 1 + e^(-x) 1 + e^(-x) 1 + e^(-x) ↓ 1 + e^(-x) 1 1 f'(x) =( ---------- - ---------- ) * ---------- 1 + e^(-x) 1 + e^(-x) 1 + e^(-x) ここで、最初の関数表記を代入すると 1 f(x) = ----------- 1 + e^(-x) ↓ やっとこさ、以下の形になる! f'(x) =(1 - f(x)) * f(x)