Jaringan Syaraf Tiruan: Konsep dan Implementasinya

Artikel ini adalah resume bebas dari kuliah "Artifical Neural Networks" yang diampu oleh Roger Barlow, CERN-Huddersfield Univ., pada Juli 2017 di ICTP, Trieste. Bahasa yang digunakan dibuat sesederhana mungkin, dan mungkin akan menimbulkan kerancuan bagi non-awam, karena artikel ini ditujukan untuk orang awam.

Tentang JST

Apakah tujuan dari penggunaan internet? Penggunaan internet salah satunya adalah untuk mengenali (gambar) kucing ATAU anjing. Otak manusia sangat hebat dalam mengenali kucing dan anjing. Anda pasti bisa! Ketika melihat hewan, kucing atau anjing, anda pasti bisa mengenali hewan tersebut: apakah kucing, atau anjing. Begitu juga gambar unta berpunuk dua (camel) atau unta berpunuk satu (dromedary), kita pasti bisa membedakannya. Bagaimana dengan komputer..?

Gambar Unta berpunuk dua (camel) dan berpunuk satu (dromedary) yang akan dites oleh komputer dengan JST.

Gambar 1. Unta berpunuk dua (camel) dan berpunuk satu (dromedary) yang akan dites oleh komputer dengan JST.

Otak manusia terdiri atas banyak neuron, sekitar 100 milyar neurons, sel dalam saraf manusia. Setiap neuron memiliki banyak input, bisa dari sumber luar (mata, telinga, dll) atau dari neuron lainnya. Setiap neuron memiliki satu output yang terhubung dengan sistem eksternal (otot atau neuron lain). Neuron-neuron tersebut membentuk sistem yang mengorganisir input dan memberikannya pada semua output.

jaringan neuron

Arsitektur jaringan Neuron sebenarnya pada otak manusia, sumber [2]

Jaringan saraf tiruan (JST), adalah sebuah upaya untuk meniru cara kerja otak tersebut pada komputer. Neuron direpresentasikan menjadi node. Sebuah node pada JST, memiliki banyak input, x_i, yang dibebani dengan bobot w_{ij}, sehingga nilai input yang masuk node menjadi, y_i=\Sigma w_{ij} x_i. Output yang dihasilkan,

U_i = F(y_i) = F( \Sigma w_{ij} x_i).

Rumus di atas lebih jelas digambarkan dengan skema di bawah ini.


F adalah fungsi thresholding, dimana kita menginginkan output yang monoton, yakni linear pada daerah tengah, dan saturasi pada daerah ekstrim, batas atas dan batas bawah. Fungsi ini pada tataran implementasi sering disebut sebagai fungsi "aktivasi" karena mengaktifkan y pada dengan mekanisme atau grafik tertentu.

Fungsi F ini biasanya, pada JST tingkat dasar, menggunakan fungsi sigmoid sbb:

 F(y) = \frac{1}{1+e^{-y}}

Atau bisa juga menggunakan fungsi tan hiperbolik.

F(y) = \tanh(y)

Mulai agak rumit. Tentang fungsi sigmoid bisa dibaca disini, fungsi tanh disini, dan setidaknya anda bisa memahami dari plot tanh berikut. Fungsi sigmoid juga mirip dengan plot tersebut.

path22

Gambar 2. Plot fungsi tanh

Jadi terlihat dari gambar diatas, pada daerah atas dan bawah, fungsi F tersaturasi, mendekati -1 pada batas bawah, dan mendekati 1 pada batas atas, sedangkan diantaranya, fungsi F bergerak mendekati linear (monoton).

Node, pada JST, disusun dalam layer. Jadi layer pertama adalah layer input, layer terakhir adalah layer output. Diantara input dan output layer adalah hidden layer.  Contohnya adalah gambar di bawah, satu input layer yang terdiri dari lima nodes, dua hidden layer, masing-masing 8 node dan 5 node serta satu node output layer. Output layer idealnya berupa biner, 1 atau 0. Satu untuk sinyal (output) yang dicari, nol untuk background/noise yang tidak diinginkan. Arsitektur ini dinamakan multilayer perceptron.

 

Contoh arsitektur JST dengan 5 node input, dua hidden layer (@ 8 dan 5 node) dan 1 node output.

Gambar 3. Contoh arsitektur JST dengan 5 node input, dua hidden layer (@ 8 dan 5 node) dan 1 node output.

 

Kembali pada contoh kasus diatas, jika kita memiliki input, yakni gambar-gambar unta berpunuk dua atau berpunuk satu, yang telah kita 'baca' dan kita konversi dalam bentuk matriks, kemudian kita ingin komputer bisa menentukan apakah gambar tersebut camel atau dromedary ketika kita beri gambarsalah satu diantara dua hewan tersebut.

JST pada dasarnya adalah mencari bobot terbaik agar system dapat mengenali output sebaik mungkin berdasarkan data training. Pada contoh kasus diatas, misal kita punya 1000 gambar beserta outpunya. Maka, 80% data kita gunakan untuk training (pelatihan) dan sisanya, 20%, yakni 200 data kita gunakan untuk mengetes (testing). Selama pelatihan dengan 800 data tersebut, JST akan meng-adjust nilai bobot (lihat gambar diatas, nilai diatas garis dari node ko node), agar hasil trainingnya sesuai dengan output yang telah diketahui, yakni pada 80% data. Misal outputnya adalah nilai 1 untuk camel, dan 0 untuk dromedary, inputnya adalah matriks dari gambar hewan tsb tampak samping.

Dengan teknik ini, maka sisa 200 data akan dengan mudah ditebak oleh komputer untuk menghasilkan output yang presisi. Artinya, dari 800 data komputer belajar menentukan apakah input gambar (dalam bentuk matriks) itu merupakan gambar camel atau dromedary. Sisanya, 200 data akan bisa ditebak dengan komputer untuk menentukan gambar tersebut camel atau dromedary.

Bersambung ke artikel selanjutnya: Komputasi dengan Python

Referensi:

[1] Artificial Neural Networks (Roger Barlow)

[2] https://rstudio-pubs-static.s3.amazonaws.com/146706_0754aef7cdab424ebe0ac4e0e5aa362e.html

[3] https://leonardoaraujosantos.gitbooks.io/artificial-inteligence/neural_networks.html

Avatar

Bagus Tris Atmaja

Menyelesaikan sarjana (2009) dan magister (2012) di Teknik Fisika ITS. Gelar PhD diperoleh di bidang "Information Science" dari Japan Advanced Institute of Science and Technology (JAIST). Saat ini bekerja sebagai peneliti di Artificial Intelligence Research Center, AIST Tsukuba.

You may also like...

Leave a Reply

Your email address will not be published. Required fields are marked *

CAPTCHA Image

*