LoginSignup
21
24

More than 5 years have passed since last update.

【Python】シグモイド関数 / 複雑な関数定義

Last updated at Posted at 2018-01-02

やりたいこと

  • シグモイド関数がどのように機械学習に利用されているのかを知る
  • シグモイド関数のように複雑な関数の定義をして簡単に呼び出せるようにする

シグモイド関数とは

以下の数式をシグモイド関数と呼ぶ。生物の神経細胞の仕組みを表しています。ニューラルネットワークの概念をこの数式で操作しているようです。

f(x) = \frac{1}{1+e^{-ax}} \ \ (a>0)

グラフで表すと、

スクリーンショット 2018-01-03 1.05.02.png

ここから言える意味は、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などの言語と比べてセミコロンがないので楽ですね。変な癖をつけないように切り替え大事ですね。

21
24
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
21
24