Sekilas tentang Jaringan Saraf Tiruan dan Deep Learning

Jaringan Saraf Tiruan (JST) adalah sebuah model pada bidang machine learning yang dibuat (dengan asumsi) menyerupai cara kerja otak manusia.

Secara ringkas pada jaringan saraf tiruan terdapat tiga nilai atau variabel utama:

  • Nilai Input $X$: nilai yang diinputkan pengguna
  • Nilai Target $T$: nilai yang diharapkan pengguna
  • Nilai Prediksi $Y$: nilai yang dihasilkan JST

Jaringan saraf tiruan akan menerima input $X$ dan akan menghasilkan suatu nilai prediksi $Y$ melalui proses matematis. Awalnya nilai $Y$ ini akan bernilai acak. Dengan proses pembelajaran, jaringan saraf tiruan akan terus memperbaiki diri agar dapat menghasilkan nilai prediksi $Y$ yang sedekat (semirip) mungkin dengan nilai target $T$.

Suatu “proses pembelajaran” di sini berarti pada awalnya model JST ketika menerima input $X$ akan menebak nilai $Y$ secara acak (tanpa knowledge), dan seiring berjalannya waktu, kita akan melatih model JST (dengan memberi contoh lain misalnya) sehingga dapat memperbaiki diri dan menebak nilai $Y$ dengan lebih baik (mendekati nilai target $T$).

Neuron

jaringan saraf tiruan neuron

Di atas adalah contoh sebuah neuron (elemen pada jaringan saraf tiruan) yang menerima input X dan menghasilkan nilai Y. Sebuah neuron adalah visualisasi dari perhitungan sederhana berikut:

$$ Y = \sigma ( X . W+ b) $$

Dengan $W$ adalah suatu nilai “bobot” (weight) yang awalnya bernilai random. Setiap kali melakukan proses pelatihan, nilai $W$ ini akan diubah sehingga JST dapat menghasilkan nilai $Y$ yang lebih baik (mendekati nilai $T$). Variabel $b$ biasa disebut dengan bias, konsepnya sama seperti $W$ dengan nilai awal yang bernilai random.

Notasi $\sigma$ (sigma) menunjukkan suatu fungsi aktivasi. Ada banyak fungsi aktivasi yang dapat dipilih, salah satunya fungsi aktivasi “sigmoid” yang bentuknya seperti ini:

$$ \sigma(x) = \frac{1}{1 + e^{-x}} $$

Contoh

Misalnya diketahui kita punya 2 data nilai $X$ dan target $T$ sebagai berikut:

Nilai Input $X$Nilai Target $T$
Data #110
Data #2-11

Dan karena nilai $W$ dan $b$ awalnya bernilai random, kita misalkan saja awalnya nilai $W$ adalah 2 dan nilai $b$ adalah 0 dan kita akan menggunakan fungsi aktivasi sigmoid di atas. Maka hasil prediksi awal kita adalah:

Nilai Input $X$Nilai Target $T$$ Y = \sigma ( X . W+ b) $
Data #110$Y = \sigma(1.2 + 0) = 0.88$
Data #2-11$Y = \sigma(-1.2 + 0) = 0.11$

Dapat dilihat hasil nilai $Y$ masih tidak sesuai dengan nilai $T$. Pada Data #1 nilai yang diharapkan (nilai $T$) adalah 0 tetapi nilai yang dihasilkan JST (nilai $Y$) adalah 0.88. Nantinya, dengan menggunakan suatu algoritma optimasi yang disebut Backpropagation / Gradient Descent, nilai W dan b akan diubah seiring berjalannya waktu sehingga hasilnya akan membaik.

Contohnya seperti berikut, nilai $Y_1$ menunjukkan hasil setelah dilakukan backpropagation sebanyak 1x, $Y_2$ berarti backpropagation sebanyak 2x, dan seterusnya. Tampak hasil nilai $Y$ semakin mendekati nilai $T$. Inilah yang disebut proses pembelajaran.

$X$$T$$Y_0$
W=2
b=0
$Y_1$
W=1
b=0.5
$Y_2$
W=0.1
b=0.8
$Y_3$
W=-0.7
b=0.2
Data #1100.880.810.590.37
Data #2010.110.370.540.71

Sekilas Backpropagation
Backpropagation adalah suatu metode untuk memperbaiki nilai pada bobot $W$ dan bias $b$ pada JST agar menghasikan nilai yang lebih baik pada setiap iterasinya. Saya tidak membahas detail bagaimana cara kerjanya di sini, bagi yang penasaran bisa mengunjungi artikel sebelumnya tentang backpropagation.

Arsitektur yang lebih kompleks

Arsitektur di atas sangatlah sederhana. Di kasus nyata kita akan menggunakan arsitektur yang lebih kompleks seperti ini misalnya

backpropagation illustration

Pada gambar di atas, jaringan saraf tiruan ditampilkan dalam bentuk 2 layer atau lapisan, yakni layer input (warna hijau) dan layer output (warna biru). Layer input bukanlah sebuah neuron seperti yang dijelaskan sebelumnya (ada proses perhitungan), layer input hanyalah lapisan yang berisikan nilai input. Sedangkan layer output merupakan lapisan yang berisikan neuron-neuron yang menerima input dari layer input.

Dalam kasus ini nilai input sedikit berbeda dengan sebelumnya, nilai input akan terdiri dari empat buat nilai berbeda $x_1$ sampai $x_4$. Selain itu tampak juga pada gambar target ataupun prediksi yang dihasilkan terdiri dari 3 nilai, $y_1$ sampai $y_3$.

Jika dimisalkan menggunakan data (menyesuikan tabel sebelumnya), gambaran nilai $X$ dan $T$ pada arsitektur di atas akan tampak seperti tabel di bawah. Setiap data harus menginputkan 4 nilai (pada contoh keempat nilai ditampilkan dalam kurung siku dan dipisahkan dengan koma), hal inibeda dengan sebelumnya yang setiap data hanya menginputkan 1 nilai. Begitu juga nilai target harus menghasilkan 3 nilai, bukan hanya 1 nilai seperti sebelumnya.

Nilai Input $X$Nilai Target $T$
Data #1[1, 0, 0.4, 2][1, 0, 0]
Data #2[0, 0.5, 1, 1][0, 0, 1]

Setiap neuron $y$ menerima input dari seluruh neuron dibelakangnya, yakni neuron-neuron $x$. Sehingga rumusnya akan sedikit berbeda, untuk mendapatkan nilai $y_1$, $y_2$, dan $y_3$ masing-masing dihitung menggunakan rumus berikut:

$$ \begin{eqnarray}
y_1 & = \sigma \left ( w_{11}x_{1} + w_{21}x_{2} + w_{31}x_{3} + w_{41}x_{4} + b_1 \right) \nonumber \
y_2 & = \sigma \left ( w_{12}x_{1} + w_{22}x_{2} + w_{32}x_{3} + w_{42}x_{4} + b_2 \right) \nonumber \
y_3 & = \sigma \left ( w_{13}x_{1} + w_{23}x_{2} + w_{33}x_{3} + w_{43}x_{4} + b_3 \right ) \nonumber \end{eqnarray}$$

Sama dengan rumus sebelumnya nilai $w$ dan $b$ semuanya akan bernilai awal random dan akan diperbarui nilainya dengan proses backpropagation untuk meningkatkan kualitas model.

Penggunaan Jaringan Saraf Tiruan

Diketahui beberapa data ikan yang terdiri dari panjang (dalam cm) dan berat (dalam kg). Masing-masing ikan adalah salah satu dari 3 jenis ikan (jenis 1, jenis 2, atau jenis 3). Tabelnya sebagai berikut:

PanjangBeratJenis
Ikan #167.53.21
Ikan #244.21.52
Ikan #36531
Ikan #4572.53

Pada kasus klasifikasi di atas, kita akan mengklasifikasikan keempat ikan tersebut menggunakan jaringan saraf tiruan. Setiap ikan memiliki 2 ciri (atau disebut fitur) yang menjadi input, yakni panjang dan berat. Dan setiap ikan termasuk dari salah satu dari tiga jenis (atau disebut kelas), yakni jenis 1, 2, atau 3. Karena input terdiri dari dua jenis dan terdapat satu nilai output, maka arsitektur JST yang dapat kita gunakan adalah sebagai berikut:

jaringan saraf tiruan 2-1

Tapi sebenarnya, kasus di atas bisa juga direpresentasikan dalam bentuk lain, yakni dengan mengubah bentuk kelasnya menjadi nilai 1 atau 0 (disebut one-hot-encoding). Sehingga tabel di atas berubah seperti di bawah:

PanjangBeratJenis
Ikan #167.53.2[1, 0, 0]
Ikan #244.21.5[0, 1, 0]
Ikan #3653[1, 0, 0]
Ikan #4572.5[0, 0, 1]

Dengan begitu, maka input dari JST adalah 2 nilai dan outputnya menjadi 3 nilai, sehingga arsitektur JST yang digunakan menjadi sebagai berikut:

jaringan saraf tiruan 2-3

Multi Layer Perceptron

Multi layer perceptron (MLP) adalah jenis jaringan saraf tiruan yang memiliki satu atau lebih hidden layer. Hidden layer adalah sebuah layer yang berisikan neuron-neuron yang berada di antara layer input dan layer output, seperti ilustrasi di bawah:

multi layer jaringan saraf tiruan

Secara perhitungan sebenarnya tidak berbeda banyak, hanya saja kini input dari neuron-neuron $y$ bukanlah $x$ melainkan output dari neuron-neuron $z$.

Deep Learning

Secara sederhana deep learning adalah istilah yang digunakan untuk proses pelatihan jaringan saraf tiruan yang memiliki banyak hidden layer, seperti diilustrasikan di bawah.

Ketika sebuah jaringan saraf tiruan memilki banyak hidden layer, sebenarnya akan muncul banyak “plus minus” dalam proses pelatihannya. Nah, Deep Learning berfokus pada studi dalam menangani “plus minus” tersebut.

About the author

Rian Adam

View all posts

Leave a Reply