活性化関数について


はじめに

Deeplearningでは,活性化関数というものが用いられます.基本的な活性化関数(Tanh, Sigmoid, Relu)の特徴,及びそれら関数のpythonコードをメモしました.

Tanh

出力は、-1.0 ~ 1.0の間。

$$
o = \tanh (i) = \frac{e^{x} - e^{-x}}{e^{x} + e^{-x}}
$$

Sigmoid

出力は、0.0 ~ 1.0の間(確率)。

$$
o = sigmoid (i) = \frac{1}{1 + e^{-x}}
$$

Relu(Rectified Linear Unit)

入力 < 0の時、出力 = 0
入力 > 0の時、出力 = 入力

Reluは画像データと相性が良い。
画像データはuint(負がない)なので、画像を処理してマイナスになったものは「ノイズ」とみなして切り捨てる(=0にする)。

$$
o = max(0, i)
$$

pythonコード

import numpy as np

def sigmoid(x):
    return 1 / (1 + np.exp(-x))

def tanh(x):
    return (np.exp(x) - np.exp(-x)) / (np.exp(x) + np.exp(-x))

def relu(x):
    return np.maximum(0, x) 

補足

一つのモデルの中で、relu, sigmoid, tanhなどを混在して使う場合あり。