Ketika kita mulai menggunakan jaringan syaraf, kita akan menggunakan fungsi aktivasi secara teratur karena fungsi aktivasi adalah bagian wajib dari jaringan saraf. Tujuan dari fungsi aktivasi adalah untuk menyesuaikan berat dan bias. Di TensorFlow, fungsi aktivasi adalah operasi non-linear yang bekerja pada tensor. Mereka adalah fungsi yang beroperasi dengan cara yang mirip dengan operasi matematika sebelumnya. Fungsi aktivasi melayani banyak tujuan, tetapi beberapa konsep utama adalah bahwa mereka memperkenalkan non-linearitas ke dalam grafik saat menormalkan output. Mulai grafik TensorFlow dengan perintah berikut:
import tensorflow as tf
sess = tf.Session()
Fungsi aktivasi hidup di jaringan neural network (nn) di TensorFlow. Selain menggunakan fungsi aktivasi bawaan, kami juga dapat mendesain sendiri menggunakan operasi TensorFlow. Kita dapat mengimpor fungsi aktivasi yang telah ditentukan (import Tensorflow.nn as nn) atau secara eksplisit dan menulis .nn dalam panggilan fungsi kita. Di sini, kita menggunakan eksplisit dengan setiap fungsi panggilan:
1. Rectified linear unit, yang dikenal sebagai ReLU, adalah cara paling umum dan dasar untuk memperkenalkan non-linearitas ke dalam jaringan saraf. Fungsi ini hanya max (0, x). Ini terus menerus tetapi tidak lancar. Bentuknya sebagai berikut:
print(sess.run(tf.nn.relu([-3., 3., 10.])))
[ 0. 3. 10.]
[ 0. 3. 10.]
2. Akan ada saat-saat ketika kita ingin membatasi bagian yang meningkat secara linear dari fungsi aktivasi ReLU sebelumnya. Kita bisa melakukan ini dengan menumpuk fungsi max (0, x) ke fungsi min (). Implementasi yang TensorFlow miliki disebut fungsi ReLU6. Ini didefinisikan sebagai min (max (0, x), 6). Ini adalah versi dari fungsi hard-sigmoid dan secara komputasi lebih cepat, dan tidak mengalami kehilangan ((infinitesimally near zero)) atau exploding value.
print(sess.run(tf.nn.relu6([-3., 3., 10.])))
[ 0. 3. 6.]
[ 0. 3. 6.]
3. Fungsi sigmoid adalah fungsi aktivasi berkelanjutan dan smooth yang paling umum. Ini juga disebut fungsi logistik dan memiliki bentuk 1 / (1 + exp (-x)). Sigmoid tidak sering digunakan karena kecenderungan untuk menghilangkan istilah backpropagation selama training. Bentuknya seperti dibawah ini :
print(sess.run(tf.nn.sigmoid([-1., 0., 1.])))
[ 0.26894143 0.5 0.7310586 ]
[ 0.26894143 0.5 0.7310586 ]
Kita harus menyadari bahwa beberapa fungsi aktivasi tidak mempunyai nol pusat, seperti sigmoid. Ini akan mengharuskan kita untuk nol, berarti data sebelum menggunakannya di sebagian besar algoritma grafik komputasi.
4. Fungsi aktivasi smooth lainnya adalah hyper tangent. Fungsi hyper tangent sangat mirip dengan sigmoid yang memiliki rentang antara 0 dan 1, hyper tangent memiliki rentang antara -1 dan 1. Fungsi ini memiliki bentuk ((exp (x) -exp (x)) / (exp (x) + exp (-x)). Ini bisa dilihat sebagai berikut:
print(sess.run(tf.nn.tanh([-1., 0., 1.])))
[-0.76159418 0. 0.76159418 ]
[-0.76159418 0. 0.76159418 ]
5. Fungsi softsign juga digunakan sebagai fungsi aktivasi. Bentuk fungsi ini adalah x / (abs (x) + 1). Fungsi softsign seharusnya menjadi pendekatan berkelanjutan untuk fungsi sign. Dapat dilihat sebagai berikut:
print(sess.run(tf.nn.softsign([-1., 0., -1.])))
[-0.5 0. 0.5]
[-0.5 0. 0.5]
6. Fungsi lain, softplus, adalah versi smooth dari fungsi ReLU. Bentuk fungsi ini adalah log (exp (x) + 1). Dapat dilihat sebagai berikut:
print(sess.run(tf.nn.softplus([-1., 0., -1.])))
[ 0.31326166 0.69314718 1.31326163]
[ 0.31326166 0.69314718 1.31326163]
Softplus pergi ke arah tak terbatas(infinity) sebagai input increases sedangkan softsign pergi ke 1. sebagai input smaller, bagaimanapun softplus mendekati nol dan softsign pergi ke -1.
7. The Exponential Linear Unit (ELU) sangat mirip dengan fungsi softplus kecuali bahwa asymptote bawah adalah -1 bukannya 0. Bentuknya (exp (x) +1) jika x <0 else x. Dapat dilihat sebagai berikut:
print(sess.run(tf.nn.elu([-1., 0., -1.])))
[-0.63212055 0. 1. ]
[-0.63212055 0. 1. ]
Fungsi aktivasi ini adalah cara memperkenalkan nonlinier pada jaringan syaraf atau grafik komputasional lainnya di masa depan. Penting untuk dicatat di mana di jaringan, kita menggunakan fungsi aktivasi. Jika fungsi aktivasi memiliki rentang antara 0 dan 1 (sigmoid), maka grafik komputasi hanya dapat menghasilkan nilai antara 0 dan 1.
Jika fungsi aktivasi berada di dalam dan tersembunyi di antara node, maka kita ingin mengetahui efek yang dapat terjadi pada tensor saat kita melewati mereka. Jika tensor kita diskalakan memiliki mean nol, kita ingin menggunakan fungsi aktivasi yang mempertahankan sebanyak mungkin variasi di sekitar nol. Ini berarti kita ingin memilih fungsi aktivasi seperti tangen hiperbolik (tanh) atau softsign. Jika tensor semuanya diskalakan menjadi positif, maka kita idealnya memilih fungsi aktivasi yang mempertahankan varians di domain positif.
Berikut ini dua grafik yang menggambarkan fungsi aktivasi yang berbeda. Gambar berikut menunjukkan fungsi-fungsi berikut ReLU, ReLU6, softplus, exponential LU, sigmoid, softsign, dan tangen hiperbolik:
Pada Gambar diatas, kita dapat melihat empat fungsi aktivasi, softplus, ReLU, ReLU6, dan LU eksponensial. Fungsi-fungsi ini meratakan ke kiri dan meningkat secara linear ke kanan, dengan pengecualian ReLU6, yang memiliki nilai maksimum 6
Pada Gambar diatas, kita memiliki fungsi aktivasi sigmoid, tangen hiperbolik (tanh), dan softsign. Fungsi aktivasi ini semuanya smooth dan memiliki bentuk S n. Perhatikan bahwa ada dua asimtot horizontal untuk fungsi-fungsi ini.
Implementasi Activation Function
Reviewed by Jimmy Pujoseno
on
April 04, 2018
Rating:
No comments: