##やりたいこと
- シグモイド関数がどのように機械学習に利用されているのかを知る
- シグモイド関数のように複雑な関数の定義をして簡単に呼び出せるようにする
##シグモイド関数とは
以下の数式をシグモイド関数と呼ぶ。生物の神経細胞の仕組みを表しています。ニューラルネットワークの概念をこの数式で操作しているようです。
f(x) = \frac{1}{1+e^{-ax}} \ \ (a>0)
グラフで表すと、
ここから言える意味は、x=0, x=1,...と増やして行くと、ゆっくりと正確な結果(確率1 = 100%)に近ずいて行くということです。逆も然りですね。
学習して正確な値だったかを学習し、それを繰り返すことで人間のように正確な判断をしているのだと思います。
よって、このxに入る値が学習内容そのものであって、yが結果の整合性を示していると考えられます。
(機械学習めっちゃやっている人いたら、ここら辺突っ込んでください)
##グラフ出力をするためのコード
math_training.py
import matplotlib.pyplot as plt
import numpy as np
import math
x = np.arange(-10, 10, 0.1)
e = math.e
y = 1 / (1 + e**-x)
plt.plot(x, y)
plt.show()
aは定数なので一旦抜いておきます。
##いちいち複雑な関数を書くのは面倒なので定義しちゃう
math_training.py
import matplotlib.pyplot as plt
import numpy as np
import math
def sigmoid(a):
s = 1 / (1 + e**-a)
return s
x = np.arange(-10, 10, 0.1)
e = math.e
y = sigmoid(x)
plt.plot(x, y)
plt.show()
pythonはphpなどの言語と比べてセミコロンがないので楽ですね。変な癖をつけないように切り替え大事ですね。