RG-Computational Science & Engineering (CSE) (Wiharto, 2021)
Deep Learning
Outline
Artificial Neural Network Multilayer Perceptron
BackPropagation Algorithm
Deep Learning Framework Introduction (TensorFlow
& Keras)
Deep Autoencoder
Convolutional Neural Network (CNN)
Artificial Neural Network
Deep learning merupakan bagian dari machine learning (ML), dan juga bagian kecil dari Artificial Intelligence (AI)
Deep learning merupakan cabang ilmu bagian dari machine learning yang menggunakan deep neural network, untuk menyelesaikan permasalahan pada domain ML
Outline
Neural network adalah model yang terinspirasi oleh bagaimana neuron dalam otak manusia bekerja.
Tiap neuron pada otak manusia saling berhubungan dan informasi mengalir dari setiap neuron tersebut.
Artificial Neural Network
Artificial Neural Network
Tiap neuron menerima input dan melakukan operasi dot dengan sebuah weight, menjumlahkannya (weighted
sum) dan menambahkan bias.
Hasil dari operasi ini akan dijadikan parameter dari activation function yang akan dijadikan output dari neuron tersebut.
Fungsi Activasi
Apakah activation function?
Sesuai dengan namanya, activation function befungsi untuk menentukan apakah neuron tersebut harus “aktif”
atau tidak berdasarkan dari weighted sum dari input.
Secara umum terdapat 2 jenis activation function, Linear dan Non-Linear Activation function.
Linier Activation Function
Bisa dikatakan secara “default” activation function dari sebuah neuron adalah Linear.
Jika sebuah neuron menggunakan linear function, maka keluaran dari neuron tersebut adalah weighted sum dari input + bias.
Sigmoid and Tanh Function (Non- Linear)
Sigmoid function mempunyai rentang antara 0 hingga 1
sedangkan rentang dari Tanh adalah -1 hingga 1.
Kedua fungsi ini biasanya digunakan untuk klasifikasi 2 class atau kelompok data.
Kelemahan dari kedua fungsi ini, nanti akan coba saya
jelaskan di part berikutnya.
ReLU (Non-Linear)
Pada dasarnya ReLU melakukan
“treshold” dari 0 hingga infinity.
ReLU juga dapat menutupi kelemahan yang dimiliki oleh Sigmoid dan Tanh
Neural Network Architectures
Artificial Neural Network
Arsitektur diatas biasa disebut sebagai Multi Layer Perceptron (MLP) atau Fully-Connected Layer.
Arsitektur pertama mempunyai 3 buah neuron pada Input Layer dan 2 buah node Output Layer.
Diantara Input dan Output, terdapat 1 Hidden Layer dengan 4 buah neuron.
Sedangkan spesifikasi Weight dan Activation function adalah sebagai berikut:
Weight and Bias
Setiap neuron pada MLP saling berhubungan yang ditandai dengan tanda panah pada gambar diatas.
Tiap koneksi memiliki weight yang nantinya nilai dari tiap weight akan berbeda-beda.
Hidden layer dan output layer memiliki tambahan “input” yang biasa disebut dengan bias (Tidak disebutkan pada gambar diatas).
Sehingga pada arsitektur pertama terdapat 3x4 weight + 4 bias dan 4x2 weight + 2 bias.
Total adalah 26 parameter yang pada proses training akan mengalami perubahan untuk mendapatkan hasil yang terbaik.
Sedangkan pada arsitektur kedua terdapat 41 parameter.
Activation Function
Neuron pada input layer tidak memiliki activation function
Sedangkan neuron pada hidden layer dan output layer memiliki activation function yang kadang berbeda
tergantung daripada data atau problem yang kita miliki.
Training a Neural Network
Pada Supervised Learning menggunakan Neural Network, pada umumnya Learning terdiri dari 2 tahap, yaitu training dan evaluation.
Namun kadang terdapat tahap tambahan yaitu testing, namun sifatnya tidak wajib.
Pada tahap training setiap weight dan bias pada tiap neuron akan diupdate terus menerus hingga output yang dihasilkan sesuai dengan harapan.
Pada tiap iterasi akan dilakukan proses evaluation yang biasanya digunakan untuk menentukan kapan harus menghentikan proses training (stopping point)
Pada part selanjutnya, akan saya bahas bagaimana proses training pada neural network lebih mendalam.
Proses training terdiri dari 2 tahap :
Forward Pass
Backward Pass
Forward Pass
Forward pass atau biasa juga disebut forward propagation adalah proses dimana kita
membawa data pada input melewati tiap neuron pada hidden layer sampai kepada output layer yang nanti akan dihitung errornya.
Persamaan diatas adalah contoh forward pass pada arsitektur pertama (lihat gambar
arsitektur diatas) yang menggunakan ReLU sebagai activation function.
Dimana i adalah node pada input layer (3 node input), j adalah node pada hidden layer sedangkan h adalah output dari node pada hidden layer.
Backward Pass
Error yang kita dapat pada forward pass akan digunakan untuk mengupdate setiap weight dan bias dengan
learning rate tertentu.
Kedua proses diatas akan dilakukan berulang-ulang sampai didapatkan nilai weight dan bias yang dapat
memberikan nilai error sekecil mungkin pada output layer (pada saat forward pass)
Backpropagation
Backpropagasi merupakan algoritma pembelajaran yang terawasi (supervised Trainning)
Arsitektur jaringan yang digunakan biasanya multi- layer (multi layer perceptron)
Algoritma backpropagasi menggunakan error output untuk mengubah nilai bobot-bobotnya dalam arah mundur (propagasi balik)
Untuk mendaptkan error ini, tahapan yang pertama dilakukan adalah tahap perambatan maju (forward propagation).
Fungsi aktivasi yang biasa digunakan adalah fungsi sigmoid.
ANN 19
Fungsi Aktivasi/Transfer
Bipolar sigmoid
ANN 20
Fungsi activasi untuk target output binary
Fungsi activasi untuk target output bipolar
ANN 21
Arsitektur BPNN
ANN 22
Arsitektur Backpropagasi satu hidden layer
ANN 23
X1
X3 X2
Z2 Z1
Y3 Y2 V11 Y1
V12
V32 V31 V21 V22
W23 W13
W12 W11
W21
W22
Algoritma Training Backpropagasi
Inisialisasi bobot (ambil bobot awal dengan nilai random yang cukup kecil)
Kerjakan langkah-langkah berikut selama kondisi berhenti bernilai FALSE.
Step 1 : Untuk setiap pasangan elemen yang akan dilakukan pembelajaran, kerjakan :
Feedforward :
◦Tiap-tiap unit input (Xi, i=1,2,3, ..., n) menerima sinyal Xi dan meneruskan sinyal tersebut ke semua unit pada
lapisan yang ada diatasnya (hidden layer)
ANN 24
◦Tiap-tiap unit yang tersembunyi (Zj,
j=1,2,3,...,n)menjumlahkan sinyal-sinyal input berbobot : Z_inj = Voj + ∑Xi*Vij
Gunakan fungsi aktivasi untuk menghitung outputnya : Zj = f(Z_inj)
dan kirimkan sinyal terebut ke semua unit dilapisan atasnya (unit-unit output)
◦Tiap-tiap unit output (Yk, k=1,2,3,....n) menjumlahkan sinyal- sinyal input bobot :
Y_ink = Wok + ∑Zj*Wjk
Gunakan pula fungsi aktivasi untuk menghotung output unit Yk = f(Y_ink)
ANN 25
Backpropagasi :
◦Tiap-tiap unit output (Yk, k=1,2,3,...n) menerima target pola yang berhubungan dengan pola input pembelajaran, hitung informasi errornya :
∂k = (Tk-Yk)*f’(Y_ink)
kemudian hitung koreksi bobot (yang nantinya akan digunakan untuk memperbaiki nilai Wjk) :
∆Wjk = α* ∂k*Zj
Hitung juga kireksi bias (yang nantinya akan digunakan untuk memperbaiki nilai Wok) :
∆Wok = α* ∂k
Kirimkan ∂k ini ke unit-unit yang di layer bawahnya
ANN 26
◦ Tiap-tiap unit yang tersembunyi (Zj, j=1,2,3..n) menjumlahkan delta inputnya (dari unit-unit yang ada di layer atasnya) :
∂_inj = ∑ ∂k*Wjk untuk k = 1,2, ….m (jum output)
kalikan nilai ini dengan turunan dari fungsi aktivasinya untuk menghitung informasi error :
∂j = ∂_inj * f’(Z_inj)
Kemudian hitung koreksi bobot (yang nantinya akan digunakan untuk memperbaiki nilai Vij) :
∆Vij =α* ∂j*Xi
Hitung juga koreksi terhadap bias
∆Voj =α* ∂j
ANN 27
◦Tiap-tiap unit output (Yk, k=1,2,3, ...n) memperbaiki bias dan bobotnya (j=0,1,2,3....m) adalah
Wjk (baru) = Wjk(lama) + ∆Wjk
Tiap-tiap unit tersembunyi (Zj, j=1,2,3, ...p) memperbaiiki bias dan bobotnya (i=0,1,2,3, ...., n)
Vij (baru) = Vij(lama) + ∆Vij
Test kondisi berhenti (jika bobot sudah tidak terjadi perubahan maka selesai, tetapi bisa juga ada pembatas lain, misal jumlah epoh, atau MSE-nya)
ANN 28
Standart backpropagation
Koneksi bobot hidden ke output layer
ANN 29
Koneksi input ke hidden layer
ANN 30
Procedure Aplikasi
Jaringan syaraf tiruan untuk bisa digunakan menyelesaikan masalah/kasus, salah satu tahapannya adalah
trainning/pelatihan
Setelah dilakukan trainning/pelatihan selesai, maka jaringan syaraf tiruan terebut baru bisa dilakukan uji coba/digunakan untuk menyelesaikan masalah tersebut.
Procedure aplikasi setelah dilakukan trainning untuk multi- layer perceptron dengan trainning menggunakan algoritma backpropagasi adalah :
ANN 31
Step 0 :
◦Setting bobot (diperoleh berdasarkan trainning/pelatihan)
Step 1 : Untuk setiap pola input uji lakukan langkah berikut
◦Step 2 : untuk i=1, 2….,n set nilai input unit xi
◦Step 3 : hitung
◦Step 4 :
ANN 32
Perhatikan contoh
Menggunakan algoritma backpropagasi dengan 1 buah layer tersembunyi untuk mengenali fungsi logika XOR dengan 2 masukkan x1 dan x2. Buatlah iterasi unutk menghitung bobot jaringan unutk pola pertama (x1=1, x2=1 dan t=0) dengan learning ratenya = 0,2
ANN 33
Langkah ke-0
ANN 34
ANN 35
Tahapan Maju
ANN 36
Langkah ke-5
ANN 37
Backward
ANN 38
Langkah ke-7
ANN 39
ANN 40
ANN 41
ANN 42
Method Nguyen-Widrow
Untuk inisialisasi bobot dan bias dalam trainning JST Backpropagasi dapat dilakuakn secara random/acak.
Inisiaslisasi dengan random memakan waktu yang relative lama untuk mencapai konvergen, alternative lain adalah dengan methode Nguyen-Widrow.
Method ini bertujuan untuk mengoptimasi jaringan backpropagasi sehingga lebih mudah untuk mencapai konvergensi.
Pada inisialisasi NW, inisialisasi acak tetap dipakai, tetapi
digunakan untuk menginisialisasi bias dan bobot dari unit tersembunyi ke unit output.
43
Bias dan bobot dari unit input ke unit tersembunyi digunakan bias dan bobot yang di skalakan agar jatuh pada range tertentu.
Faktor skala Nguyen-Widrow (β) didefiniskan sebagai berikut :
Dimana :
n = banyaknya unit input
p = banyaknya unit tersembunyi β = Faktor skala
44
Prosedur Nguyen-Widrow
Untuk setiap unit tersembunyi dari unit ke-1 sampai unit ke-p Step 1 : Inisiaslisasi vektor bobot dari unit input ke unit
tersembunyi (j=1,2, ...,p) dengan cara :
◦Menentukan bobot-bobot antara unit input ke unit tersembunyi (Vij) :
◦Vij(lama) = bilangan acak antara -0.5 dan 0.5 dengan i=1,2,...,n
◦Menghitung
◦Menginisialisasi kembali Vij dengan :
45
Step 2 :
◦Menentukan bias antara input ke unit tersembunyi (j=1,2,3....,p) dengan Voj di set bilangan acak yang terletak pada skala antara –β dan β
Analisis NW didasarkan atas fungsi activasi tangen hiperbolik
46
tanh ( x )= e x −e − x e x + e − x
Optimasi dengan Momentum
Penambahan parameter momentum dalam
mengupdate bobot seringkali bisa mempercepat proses pelatihan konvergensi
Momentum memaksa proses perubahan bobot
untuk terus bergerak sehingga tidak terperangkap dalam minimum lokal.
47
Untuk mendapatkan proses konvergen yang
lebih cepata maka persamaan perubahan bobot untuk output layernya adalah :
Dimana α adalah learning rate dengan nilai 0< α<1, sedangkan µ adalah parameter momentum 0 < µ < 1
48
Mempercepat Konvergen
Perubahan bobot untuk hidden layernya ditunjukkan oleh persamaan berikut :
Dimana α adalah learning rate dengan nilai 0< α<1, sedangkan µ adalah parameter
momentum 0 < µ < 1
49
Mempercepat Konvergen
Hasil riset
50
Alternatif fungsi activasi
Fungsi activasi untuk target output binary
Fungsi activasi untuk target output bipolar
ANN 51
Fungsi sigmoid dengan parameter slope
Dimana σ adalah suatu konstanta
52
Adaptive Learning Rate
Backpropagation dengan Gradient Descent
(standart) selama proses trainning learning rate akan terus bernilai konstant.
Jika learning rate terlalu tinggi maka algoritma menjadi tidak stabile
Jika leaning rate terlalu kecil maka akan menyebabkan untuk mencapai konvergensi membutuhkan waktu yang sangat lama
53
Kita akan mengalami kesulitan dalam menentukan berapa besar learning rate yang optimal sebelum trainning berlangsung.
Kenyataanya learning rate akan selalu berubah
selama proses trainning berlangsung seiring dengan berubahnya nilai fungsi kerjanilai maksimum
kenaikan error yang diperbolehkan dalam MATLAB defaultnya 1.04.
Maka perlu dibuat learning rate juga berubah selama proses trainning supaya selalu stabil ADAPTIVE LEARNING RATE
54
Algoritma GD (standart) dengan adaptive learning rate pada dasarnya sama dengan algoritma BP GD/standart dengan beberapa perbuhan berikut langkah-langkahnya :
◦Hitung nilai output jaringan dan error pelatihan (ingat perbedaan output dengan target)
◦Pada setiap epoh bobot baru dihitung dengan menggunakan learning rate yang ada.
◦Kemudian hitung kembali output jaringan dan error
pelatihan, JIKA perbandingan antara error pelatihan yang baru dengan yang lama melebihi maksimum kenaikan kinerja, maka bobot-bobot tersebut akan
diabaikankemudian menurunkan nilai learning ratenya dengan cara mengalikannya dengan suatu konstanta lr_dec lr(new) = lr(old)*lr_dec
55
◦Jika sebaliknya error pelatihan baru dengan error pelatihan lama kurang dari nilai maksimum kinerja
maka bobot akan dipertahankan sekaligus nilai learning rate akan dinaikkan dengan cara
mengalikannya dengan suatu konstantalr(new)
= lr(old)* lr_inc.
56
Dengan menggunakan adaptive learning rate maka :
◦Jika learning rate terlalu tinggi dan mengarah ke ketidakstabilan maka learning rate akan
diturunkan
◦Sebaliknya jika learning rate terlalu kecil untuk
menuju kekonvergenan maka learning rate akan dinaikkan.
◦Dengan hal terebut maka algoritma pembelajaran akan tetap terjaga kestabilannya.
57