ニューラルネットワーク周りの関数
具体的には活性関数と呼ばれる連中。
これは入力を受けて結果を応答する関数。
調べてみると結構いっぱいある。
ステップ関数
0 基準で 0 か 1 かという単純なもの。
in python
import numpy as np import matplotlib as mpl import matplotlib.pyplot as plt %matplotlib inline def step_func(x): return np.where(x <= 0, 0, 1) x = np.linspace(-5, 5) y = step_func(x) plt.plot(x, y) plt.show()
シグモイド関数
もう一つの関数がシグモイド関数。
まぁこっちの方が定義が単純
def sigmoid(x): return 1 / (1 + np.exp(-x)) y = sigmoid(x) plt.plot(x, y) plt.show()
ハイパボリックタンジェント
シグモイドに近い特性がありますが、こいつは -1 から 1 までの値域を持ってる。
Tex 書式で書きづらいw
def tanh(x): return np.tanh(x) y = tanh(x) plt.plot(x, y) plt.show()
ReLU
ReLU 関数というと、0 から線形に伸びる関数
def relu(x): return np.where(x <= 0, 0, x) y = relu(x) plt.plot(x, y) plt.show()
LeakyReLU
マイナスの際にちょっとだけマイナスに伸びてる ReLU 関数。
0 でボーダーしやすい。
def leakey_relu(x): return np.where(x <= 0, 0.01*x, x) y = leakey_relu(x) plt.plot(x, y) plt.show()
ソフトマックス関数
def soft_max_function(x): return np.exp(x) / np.sum(np.exp(x)) y = soft_max_function(x) plt.plot(x, y) plt.show()