kerasではあらかじめ様々な活性化関数が用意されています。
正直普段使ってないものもあるのですが、どのようなもがあるのか一通り把握しておきたかったので可視化を試みました。
原論文か何か読んで数式を順番に実装しようかと思ったのですが、
Activationレイヤーだけから構成される超単純なモデルを作るのが手軽だと気付いたのでやってみました。
今回はこちらのページにある、 利用可能な活性化関数 を対象にしました。
(この他にもより高度な活性化関数はいくつか用意されています。)
コードは次のようになります。
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Activation
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(-5, 5, 101).reshape(-1, 1)
# 絶対値の範囲が 有限なもの
activations_0 = [
"sigmoid",
"tanh",
"hard_sigmoid",
"softsign",
]
# 絶対値の範囲に上限がないもの
activations_1 = [
"elu",
"selu",
"softplus",
"relu",
"linear",
]
fig = plt.figure(figsize=(10, 8))
for i, activations in enumerate([activations_0, activations_1]):
ax = fig.add_subplot(2, 1, i+1)
for activation_str in activations:
model = Sequential()
model.add(
Activation(
activation_str,
input_shape=(1, ),
)
)
y = model.predict(x).ravel()
ax.plot(x, y, label=activation_str)
ax.legend()
plt.show()
出力結果はこちら。