Materi
Fungsi aktivasi dikenakan pada z setiap neuron. Dive into Deep Learning §5.1 menunjukkan kenapa ia wajib nonlinear: dua lapisan yang masing-masing hanya mengalikan bobot dan menambah bias bisa digabung menjadi satu lapisan linear, karena fungsi linear dari fungsi linear tetap linear. Menumpuk sepuluh lapisan linear tidak menambah kemampuan apa pun. Aktivasi nonlinear yang memutus rantai itu.
Tiga aktivasi yang disediakan MLPClassifier scikit-learn di parameter activation: logistic (sigmoid) σ(z) = 1 / (1 + e^(−z)) yang menekan bilangan berapa pun ke rentang 0 sampai 1; tanh yang keluarannya di rentang −1 sampai 1; dan relu, ReLU(z) = max(0, z), yang membuang bagian negatif dan meneruskan bagian positif apa adanya. Nilai bawaannya relu. Step tidak tersedia, karena turunannya nol hampir di mana-mana sehingga tidak bisa dilatih dengan gradien; sigmoid adalah pengganti halusnya.
Di numpy, keduanya bekerja elemen demi elemen pada seluruh array: np.exp untuk sigmoid dan np.maximum(0, z) untuk ReLU. Turunan ReLU adalah 1 untuk z positif dan 0 untuk z negatif; turunan sigmoid adalah σ(z)(1 − σ(z)), yang mendekati nol untuk z yang sangat besar atau sangat kecil.
import numpy as np
z = np.array([-3.0, 0.0, 2.0])
print(np.tanh(z)) # [-0.995 0. 0.964]
print(np.maximum(0, z)) # [0. 0. 2.]