Siri Belajar AI :Fungsi Pengaktifan (Activation Function)
Ini merupakan salah satu topik yang saya kupas dalam buku AI untuk Pemula. Di mana saya menerangkan apa itu Fungsi Pengaktifan (Activation Function). Kenapa fungsi pengaktifan ini penting? Ini kerana, pada awalnya persamaan yang ada dalam jaringan neural ataupun perceptron merupakan persamaan bersifat linear (garis lurus). Tapi jaringan neural ni dah dikenali sebagai universal approximator (pengagak universal). Jadi macam mana dia nak jadi universal approximator kalau ianya bersifat linear? Sebab itulah kita memerlukan fungsi pengaktifan. Sebab ia membolehkan kita menambahkan bentuk perhubungan yang tidak linear dalam jaringan neural.
Jenis-Jenis Fungsi Pengaktifan

Seperti yang diceritakan di atas, kita ada beberapa jenis fungsi pengaktifan yang sering digunakan dalam model jaringan neural. Kita ada sigmoid, kita ada tanh, kita ReLU dan juga Leaky ReLU. Setiap satu fungsi pengakifan ini mempunyai formula matematik yang berbeza dan juga fungsi dan kegunaan yang berbeza. Di sini, kita akan menceritakan satu demi satu fungsi pengaktifan yang ada dengan lebih jelas, bermula dengan binary step.
Binary Step
Binary step adalah bentuk fungsi pengaktifan yang paling asas sekali. Bagaimana ia befungsi? Ia berfungsi melalui ambang (threshold) yang kita perkenalkan. Ambang ini akan menentukan output yang akan dikeluarkan oleh perceptron kita. Jika ambang itu dilepasi, maka perceptron akan mengeluarkan output ‘1’. Jika ambang itu tidak dilepasi, maka perceptron akan mengeluarkan output ‘0’. Persamaan matematik yang ringkas yang boleh menjelaskan binary step, boleh dilihat seperti di bawah:

I
Oleh sebab binary step ini ringkas, maka ia lebih sesuai digunakan untuk perceptron. Tak sesuai digunakan untuk model jaringan neural. Tapi tak adalah tak boleh pakai lansung. Ada saja keadaan di mana binary step merupakan fungsi pengaktifan yang perlu digunakan ketika latihan.
Rectified Linear Unit (ReLU)
ReLU adalah fungsi pengaktifan yang paling senang digunakan, kerana ianya mudah difahami, ringkas dan sangat efisyen terutamanya ketika latihan. Fungsi ini juga mudah difahami, sebarang input yang dimasukkan, hanya akan diterima bila nilainya lebih dari 0 (nombor yang positif). Nombor-nombor yang negatif akan terus disenyapkan, bermaknan neuronnya akan dipadam, dan tidak akan mengeluarkan sebarang output.
Persamaan matematik untuk fungsi ReLU adalah seperti di bawah:
Jika kita melakar plot menggunakan fungsi ReLU, kita akan dapat melihat graf yang linear seperti di bawah:
Sekejap, sekejap. Bukan tadi kita kata fungsi pengaktifan ni adalah untuk menambahkan perhubungan yang tak linear pada persamaan kita tadi? Jadi kenapa perlu gunakan fungsi yang linear? Ha, itu adalah sesuatu yang kita akan demo nanti.
Walaupun ia fungsi yang efisyen, ReLU mempunyai beberapa masalah. Antara yang paling utama adalah sifatnya yang mematikan neuron yang membawa nilai negatif. Oleh kerana itu, ada kemungkinan latihan yang dilakukan dengan ReLU kehilangan beberapa parameter yang penting.
Leaky ReLU
Disebabkan ReLU mematikan neuron yang membawa nilai negatif, maka perlu ada penambahbaikan pada fungsi ReLU agar ia tak terlalu agresif ketika latihan. Kerana itulah saintis data memperkenalkan fungsi Leaky ReLU. Leaky ReLU menambahkan pemalar di depan nilai x, bagi menggantikan nilai yang negatif. Dengan melakukan penambahbaikan tersebut, kita mampu mengawal jumlah neuron yang mati akibat memproses nilai yang negatif. Fungsi matematik Leaky ReLU boleh dilihat seperti di bawah:

Boleh dilihat di atas, ternyata Leaky ReLU mengambil kira sedikit nilai-nilai yang negatif. Pun begitu, apabila kita mengambil kira nilai-nilai yang negatif, ia akan melambatkan sikit proses latihan.
Fungsi Sigmoid
Fungsi sigmoid merupakan fungsi pengaktifan yang paling meluas digunakan dalam model jaringan neural. Ini kerana sifat fungsi sigmoid yang menukarkan outpun neuron/perceptron kepada bentuk kebarangkalian (probability). Secara mudahnya fungsi sigmoid menukarkan input kepada nilai antara 0 sehinggalah 1. Fungsi matematiknya boleh diperhatikan seperti di bawah:
Lebih besar nilai input, lebih dekat nilainya dengan 1. Lebih kecil nilai input, lebih dekat nilainya dengan 0. Kalau kita letakkan nilai x dan f(x) fungsi pengaktifan ini pada satu graf, kita boleh dapat graf berbentuk seperti di bawah:
Oleh kerana sifatnya yang menukarkan input kepada bentuk kebarangkalian, maka ia sangatlah sesuai untuk digunakan dalam model jaringan neural, terutama sekali yang menggunakan kebarangkalian sebagai asas latihan.
Pun begitu, fungsi sigmoid tetap mempunyai masalahnya yang tersendiri. Cuba perhatikan graf di atas. Graf tersebut akan melandai bila x (nilai input) yang dimasukkan lebih besar dari dan juga lebih kecil dari -5. Ini bermakna, ia tidak akan memberikan sebarang kesan bila input yang dimasukkan terlalu besar, atau terlalu kecil. Ia mewujudkan permasalahan yang dipanggil sebagai ‘vanishing gradient’. Di mana neuron yang memproses input yang besar, akan dipadamkan dan tidak akan berfungsi dalam jaringan neural network yang kita ada.
Fungsi Tanh
Fungsi Tanh seakan-akan sama dengan fungsi sigmoid. Tapi jika fungsi sigmoid menghasilkan output dari 0 ke 1, fungsi tanh mengasilkan output dari -1 ke 1.
Lebih besar nilai input, lebih dekat nilainya dengan 1. Lebih kecil nilai input, lebih dekat nilainya dengan -1. Kalau kita letakkan nilai x dan f(x) fungsi pengaktifan ini pada satu graf, kita boleh dapat graf yang bentuknya hampir sama dengan fungsi sigmoid.
Boleh juga dilihat di atas, fungsi tanh ini mempunyai kecerunan yang lebih tinggi berbanding fungsi sigmoid di atas. Pada masa yang sama, ia juga melandai bila menghampiri nilai -2.5 dan juga 2.5. Ini bermakna, efek ‘vanishing gradient’ dia lebih tinggi berbanding dengan fungsi sigmoid.
Fungsi Softmax
Fungsi softmax merupakan fungsi yang paling saya gemari. Ini kerana namanya dan juga fungsinya yang seakan ReLU (menghapuskan nilai negatif), dan pada masa yang sama ia juga menghasilkan output kebarangkalian (probability), dari 0 sehingga ke 1. Softmax juga biasanya diletakkan dalam lapisan terakhir jaringan neural, memudahkan jaringan neural melakukan pengelasan terutama sekali dalam permasalahan melibatkan pelbagai kelas (multi-class).
Jika kita membuat plot menggunakan fungsi softmax, hasilnya boleh dilihat seperti di bawah:
Boleh dilihat yang fungsi softmax juga boleh mengambil kira input yang lebih tinggi dari 5, tak seperti sigmoid, maka ia secara teorinya boleh menyelesaikan masalah ‘vanishing gradient’.
Bagaimana Fungsi Pengaktifan Mewujudkan Hubungan Tidak Linear
Kita sudahpun mengenal jenis-jenis fungsi pengaktifan. Sekarang kita ingin melihat pula bagaimana fungsi pengaktifan mewujudkan hubungan yang tidak linear. Cuba bayangkan, yang kita hanya ada satu sahaja perceptron, dengan persamaan yang mudah, seperti di bawah:
Jika kita plot persamaan di atas, ia akan menghasilkan garisan yang lurus seperti di bawah:
Sekarang, kita cuba tambah satu lagi lapisan di atas lapisan perceptron kita. Kita letakkan lapisan itu sebagai fungsi pengaktifan kita. Untuk demonstrasi ini Jika kita menambahkan kedua-kedua lapisan tersebut, plot kita akan menghasilkan graf seperti di bawah:
Jika kita tambah satu lagi lapisan fungsi pengaktifan di atasnya, kita boleh melihat graf seperti di bawah:
Dengan meletakkan hanya dua lapisan fungsi pengaktifan, graf kita tak lagi kelihatan linear. Ia mempunyai bentuk yang tak sekata, tak linear yang lebih tepat menggambarkan keadaan banyak perhubungan antara x dan y yang ada ketika latihan.
Rujukan:















