ニューラルネットワークの活性化関数

ニューラルネットワークの活性化関数のメモです。

目次

  1. ニューラルネットワークにおける活性化関数とは
  2. シグモイド関数
  3. ステップ関数
  4. ReLU(Rectified Linear Unit)関数
  5. 恒等関数
  6. ソフトマックス関数

ニューラルネットワークにおける活性化関数とは

ニューラルネットワークにおける活性化関数(activation function)とは、ニューロンへの入力の総和に対してそのニューロンがどのように活性化(発火)するかを決める関数です。

いくつか種類があります。

シグモイド関数

入力xに対して、下記のような出力をします。コードと図は標準シグモイド関数の例です。

シグモイド関数の数式
import matplotlib.pyplot as plt
import numpy as np

x = np.arange(-5.0, 5.0, 0.1)
y = 1 / (1 + np.exp(-x))

plt.plot(x, y)
plt.ylim(-0.1,1.1)
plt.show()
シグモイド関数のグラフ

ステップ関数

入力が0を超えたら1を出力し、それ以外は0を出力します。

import matplotlib.pyplot as plt
import numpy as np

x = np.arange(-5.0, 5.0, 0.1)
y = np.array(x > 0, dtype=np.int)

plt.plot(x, y)
plt.ylim(-0.1,1.1)
plt.show()
ステップ関数のグラフ

ReLU(Rectified Linear Unit)関数

入力が0を超えたらその値を出力し、0以下ならば0を出力します。

import matplotlib.pyplot as plt
import numpy as np

x = np.arange(-5.0, 5.0, 0.1)
y = np.maximum(0, x)

plt.plot(x, y)
plt.ylim(-0.1,5.1)
plt.show()
ReLU関数のグラフ

恒等関数

入力をそのまま出力します。

import matplotlib.pyplot as plt
import numpy as np

x = np.arange(-5.0, 5.0, 0.1)
y = x

plt.plot(x, y)
plt.ylim(-5.1,5.1)
plt.show()
恒等関数のグラフ

ソフトマックス関数

その層の全てのニューロンの出力の総和が1になるようにして出力します。

ソフトマックス関数の式
import matplotlib.pyplot as plt
import numpy as np

x = np.arange(-5.0, 5.0, 0.1)
c = np.max(x)
upper = np.exp(x + c)
lower = np.sum(upper)
y = upper / lower

plt.plot(x, y)
plt.ylim(-0.1,0.2)
plt.show()
print(np.sum(y))
ソフトマックス関数のグラフ

公開日

広告