Python

【Python】シグモイド関数を調べてみる / 微分

やりたいこと

  • シグモイド関数の傾きを調べて、どんな動きをしているのかを知る
  • Pythonのlabelを使ってみる

シグモイド関数の傾きを調べて、どんな動きをしているのかを知る

以下のコードで傾きをグラフ化

math_training.py
# coding=utf-8

import matplotlib.pyplot as plt
import numpy as np
import math

def sigmoid(a):
    s = 1 / (1 + e**-a)
    return s

dx = 0.1
x = np.arange(-10, 10, dx)
e = math.e

y = sigmoid(x)

# 微小の量を移動した時の傾き
y_delta = (sigmoid(x+dx) - sigmoid(x)) / dx

plt.plot(x, y, label="sigmoid")
plt.plot(x, y_delta, label="sigmoid_delta")

# labelを有効にする
plt.legend()
plt.show()
  • 日本語のコメントアウトをするためには、# coding=utf-8を挿入する。
  • labelを有効にするためにはplt.legend()を呼び出す。

グラフはこんな感じ
スクリーンショット 2018-01-03 1.31.45.png

ここから読み取れるのは、

・x=0の時に傾きが最大値をとる
・xが無限大に近づくと、傾きは0に収束する。逆も然り。

よって、機械学習におけるシグモイド関数は、学習を重ねることで傾き(判断を下すスピード)が0に収束する→より早く正確な判断ができるようになる。という事だと思う。