Senin, 15 April 2019

Deep Learning

Deep Learning merupakan topik yang sedang nge-trend dikalangan akademisi ataupun professional. Apa sih Deep Learning itu? Deep Learning adalah salah satu cabang Machine Learning(ML) yang menggunakan Deep Neural Network untuk menyelesaikan permasalahan pada domain ML.
Mungkin nanti akan saya bagi dalam beberapa part. Untuk Part I, kita akan sama-sama belajar tentang apa itu Neural Network yang merupakan bagian yang paling penting dari Deep Learning.

Artificial Neural Network

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. Gambar di bawah adalah ilustrasi neuron dengan model matematisnya.
Credits : Stanford Course
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.

Activation Function

Nah, mungkin banyak yang bingung apa dan untuk apa 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.

Linear Function

Linear Function ; f(x) = x
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. Namun terdapat kelemahan dari kedua fungsi ini, nanti akan coba saya jelaskan di part berikutnya.

ReLU (Non-Linear)

ReLU Function
Pada dasarnya ReLU melakukan “treshold” dari 0 hingga infinity. ReLU juga dapat menutupi kelemahan yang dimiliki oleh Sigmoid dan Tanh yang nanti akan saya coba jelaskan di part berikutnya.. :D

Sebenarnya masih banyak activation function yang lain, namun beberapa fungsi yang saya sebutkan diatas merupakan fungsi yang sering digunakan. Sebenarnya masih ada satu lagi Softmax Function, tapi nanti akan saya jelaskan pada part Multiclass Classification. Untuk referensi lengkap tentang activation function bisa dibaca di page wikipedia.

Neural Network Architectures

Credits : Stanford Course
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. Namun pada part ini akan dijelaskan garis besarnya saja. 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)

Let’s Code

Pada bagian ini kita mau mencoba implementasi forward pass menggunakan Python dan Numpy dulu saja tanpa framework biar lebih jelas. Nanti pada part-part selanjutnya akan kita coba dengan Tensorflow dan Keras.
Untuk contoh kasusnya adalah kita akan melakukan regresi untuk data yang sebenarnya adalah sebuah fungsi linear sebagai berikut:
f(x) = 3x + 2
Sedangkan arsitektur neural networknya terdiri dari :
  • 1 node pada input layer => (x)
  • 1 node pada output layer => f(x)
Neural network diatas sudah saya train dan nanti kita akan melakukan forward pass terhadap weight dan bias yang sudah didapat pada saat training.

Forward Propagation

Method forwardPass dibawah ini sangat simple sekali, operasi dot akan dilakukan pada setiap elemen pada input dan tiap weight yang terhubung dengan input dan ditambahkan dengan bias. Hasil dari operasi ini akan dimasukkan ke dalam activation function.

Pre-Trained Weight

Untuk weight dan bias yang akan kita coba, nilai keduanya sudah didapatkan pada proses training yang telah saya lakukan sebelumnya. Bagaimana cara mendapatkan kedua nilai tersebut akan dijelaskan pada part-part berikutnya.
Kalau dilihat dari weight dan bias diatas, nilai keduanya identik dengan fungsi linear kita tadi :
f(x) = 3x + 2 ≈ f(x) = 2.99999928x + 1.99999976

Complete Code

Pada percobaan kali ini kita akan melakukan perdiksi nilai dari 7, 8, 9 dan 10. Output yang dihasilkan seharusnya adalah 23, 26, 29, 32 dan hasil prediksi adalah 22.99999472, 25.999994, 28.99999328 dan 31.99999256. Jika dilihat dari hasil prediksi, masih terdapat error tapi dengan nilai yang sangat kecil.

Senin, 08 April 2019

Representasi Pengetahuan


REPRESENTASI PENGETAHUAN

·       Representasi Pengetahuan (Knowledge Repre-sentation) dimaksudkan untuk menangkap sifat-sifat penting masalah dan membuat infomasi dapat diakses oleh prosedur pemecahan masalah.

·       Bahasa representasi harus dapat membuat seorang programmer mampu mengekspresikan pengetahuan untuk mendapatkan solusi suatu masalah.
·       Secara singkat Mylopoulos dan Levesque mengklasifikasikan susunan atau pola represen-tasi menjadi empat katagori :

1.   Representasi Logika
Representasi ini menggunakan ekspresi-ekspresi dalam logika formal untuk merepresentasikan basis pengetahuan.

2.Representasi Prosedural
Menggambarkan pengetahuan sebagai sekumpulan instruksi untuk memecahkan suatu masalah. Dalam sistem yang berbasis aturan, aturan if-then dapat ditafsirkan sebagai sebuah prosedur untuk mencapai tujuan pemecahan masalah.

3.Representasi Network
Menyatakan pengetahuan sebagai sebuah graf dimana simpul-simpulnya menggambarkan obyek atau konsep dalam masalah yang dihadapi, sedangkan lengkungannya menggambarkan hubungan antar mereka. Contohnya adalah jaringan semantik.

4.Representasi Terstruktur
Memperluas network dengan cara membuat setiap simpulnya menjadi sebuah struktur data kompleks yang berisi tempat-tempat bernama slot dengan nilai-nilai tertentu. Nilai-nilai ini dapat merupakan data numerik atau simbolik sederhana, pointer ke bingkai (frame) lain, atau bahkan merupakan prosedur untuk mengerja kan tugas tertentu. Contoh : skrip (script), bingkai (frame) dan obyek (object).

 

REPRESENTASI LOGIKA

Representasi logika terdiri dari dua jenis yaitu Kalkulus proposisional (Propositional logic) dan Kalkulus predikatif (Predicate logic).

Kalkulus Proposisional (Propositional Logic)
·       Proposisi adalah suatu model untuk   mendeklarasikan suatu fakta. Lambang-lambang proposisional menunjukkan proposisi atau pernyataan tentang segala sesuatu yang dapat benar atau salah.

Lambang-lambang kalkulus proposisional :
1.  Lambang pernyataan proposisional
    P,Q,R,S,T,... (disebut sebagai atom-atom)
2. Lambang kebenaran
    benar (True) , salah (False)
3. Lambang penghubung
 Ù (konjungsi), Ú (disjungsi), ~ (negasi),
 ® (implikasi), « (Bi-implikasi),
 º (equivalen)
 
Berikut ini adalah tabel kebenaran (truth value) lambang penghubung :

P
Q

PÙQ

PÚQ
P®Q
 P«Q
T
T
T
T
T
T
T
F
F
T
F
F
F
T
F
T
T
F
F
F
F
F
T
T

 

Equivalen

Suatu kalimat (formula) P dianggap equivalen dengan formula Q jika dan hanya jika ‘truth value’ dari P sama dengan ‘truth value’ dari G untuk setiap interpretasinya.  (ditulis sbg. P º Q)



Contoh:
    P®Q º ~PÚQ    
P
Q
~P
P®Q
~PÚQ
T
T
F
T
T
T
F
F
F
F
F
T
T
T
T
F
F
T
T
T
·       Kalimat-kalimat atau formula dalam kalkulus proposisional dibentuk dari lambang-lambang dasar tersebut.

·       Nilai-nilai kebenaran yang dikandung oleh kalimat-kalimat proposisional disebut interpretasi.

·       Secara formal, interpretasi diartikan sebagai pemetaan dari lambang-lambang proposisional menuju ke himpunan {T,F} yakni himpunan ‘benar-salah’.
·    Suatu formula (kalimat) yang mempunyai n lambang (atom) yang berbeda, mempunyai 2n interpretasi.

·    Interpreatsi yang menyebabkan suatu formula bernilai benar dikatakan satisfy the formula.

·    Suatu formula dikatakan tautology jika dan hanya jika bernilai benar untuk setiap interpretasinya.
   Contoh : ( A Ú ~A).

·    Suatu formula dikatakan inconsistency jika dan hanya jika bernilai salah untuk setiap interpretasinya.
   Contoh : (A Ù ~A).

·    Suatu formula dikatakan consistent jika tidak inconsistent. Dengan kata lain, suatu formula yang consistent, paling tidak ada satu interpretasi yang benar. Contoh (((B Ú C) Ù ~C) Ú D).

·    Jika suatu formla tautology maka consistent, tetapi tidak berlaku sebaliknya.

·    Tautology disebut juga valid formula
·    Inconsistency disebut juga unsatisfiable formula
·    Consistency disebut juga satisfiable formula

Hukum yang berlaku untuk ekspresi proposisional P,Q dan R adalah :
1.Hukum de Morgan  : ~(PÚQ) º (~PÙ~Q)
2.Hukum de Morgan  : ~(PÙQ) º (~PÚ~Q)
3.Hukum distributif  :
                 PÚ(QÙR) º (PÚQ) Ù  (PÚR)
4.Hukum distributif:
               PÙ(QÚR) º (PÙQ) Ú(PÚR)
5.Hukum komutatif    : (PÙQ) º (QÙP)
6.Hukum komutatif    : (PÚQ) º (QÚP)
7.Hukum asosiatif     :
              ((PÙQ) ÙR) º (PÙ (QÙR))
8.Hukum asosiatif     :
               ((PÚQ) ÚR) º (PÚ (QÚR))
9.Hukum kontrapositif  :
            (P®Q) º (Q® ~P)

Prosedur Pembuktian Teorema


·       Suatu formula G dikatakan sebagai sebuah konsekuensi logis dari formula F1, F2, … , Fn jika dan hanya jika setiap interpretasi yang memenuhi (F1ÙF2ÙÙFn ) juga memenuhi G.
F1, F2, … , Fn      disebut premis
G                         disebut Goal dari
                           formula

·       Dengan kata lain, formula G adalah konsekuensi logis dari premis F1, F2, … , Fn jika dan hanya jika ((F1ÙF2ÙÙFn) à G) adalah Tautology.
·       Karena negasi dari suatu Tautology adalah Inconsistency, maka ~((F1ÙF2 ÙÙFn) à G) adalah Inconsistency.

·       Kita tahu bahwa
~((F1ÙF2ÙÙFn)àG) º 
~(~(F1ÙF2ÙÙFn) Ú G) º
(F1ÙF2ÙÙFn) Ù~G)

·       Dua Metode Pembuktian Teorema:
1.   Metode Langsung (Direct Method) membuktikan bahwa ((F1ÙF2ÙÙFn) àG) adalah Tautology.
2. Metode Refutasi membuktikan bahwa : 
(F1ÙF2ÙÙFn)Ù~G) adalah
Inconsistency.

Contoh soal:
Buktikan bahwa Q adalah konsekensi logis dari premis P dan (P à Q) !

Solusi:
1.   Metode Langsung, membuktikan bahwa
((PÙ(P à Q) ) à Q) adalah Tautology.

P
Q
PàQ
P Ù (PàQ)
(PÙ (PàQ)) àQ
T
T
T
T
T
T
F
F
F
T
F
T
T
F
T
F
F
T
F
T

2. Metode Refutasi, membuktikan bahwa
    (PÙ(PàQ)Ù~Q) adalah Inconsistency.
      
P
Q
~Q
PàQ
PÙ(PàQ)
PÙ(PàQ)Ù~Q
T
T
F
T
T
F
T
F
T
F
F
F
F
T
F
T
F
F
F
F
T
T
F
F


Rules of Inference (Aturan-aturan Inferensi)

·       Pendekatan lain untuk membuktikan teorema yang menggunakan aturan/rule (dinamakan Rules of inference), adalah dengan cara mendeduksi konsekeunsi logis dari premis-premis yang diketahui atau diberikan.

·       Beberapa contoh Rules of Inference adalah:
1.    Introducing Conjunction
If F and G then (FÙG)
2.  Eliminating Conjunction
If (FÙG ) then F
If (FÙG) then G
3.  Introducing Disjunction
If F then (FÚG)
If G then (FÚG)
4. Modus Ponens
If F and (F à G) then G


5.   Modus Tollens
If ~G and (F à G) then ~F
6.   Chaining
If (FàG) and (GàH) then (FàH)
7.   Equivalen
If F and (F º G) then G
If G and (F º G) then F

Contoh soal:
Bila diberikan premis-premis sebagai berikut:
(i)                John awakens
(ii)              John brings a mop
(iii)           Mother is deligthed, if john awakens and cleans his room
(iv)            If John brings a mop, then he cleans his room.
Buktikan dengan Rules of Inference (deduksi), dimana goal-nya adalah : Mother is deligthed !



Solusi :
Tuliskan premis tersebut sebagai simbol (atom):
       A = John awakens
       B = John brings a mop
       C = John cleans his room
       D = Mother is delighted
Goal yang ingin dibuktikan adalah D

Tuliskan premis tersebut sebagai formula:
(1)       A
(2)     B
(3)     AÙC à D
(4)     B à C
Deduksi dengan Rules of Inference
(5)  C        (dng. Modus Ponens (2) dan (4))
(6)  AÙC  (dng. Intro. Conjunction (1) dan (5))
(7)  D        (dng. Modus Ponens (3) dan (6))




JARINGAN SEMANTIK
ü Sering disebut proportional net
ü Bentuk dari pengetahuan deklaratif krn proporsi trb menunjukan fakta
ü Proporsi selalu benar atau salah disebut juga “atomic”
ü Merupakan gambaran grafis yg menunjukkan hubungan antar berbagai objek. Yaitu dlm bentuk “nodes” dan “arcs” yg menghubungkannya
ü                à Nodes disebut juga dgn objek, digunakan untuk menunjukkan objek phisik, konsep, situasi
ü




            : Links atau edges atau arcs, untuk mengekspesikan suatu relasi    
ü Contoh route pesawat terbang (directed graph)            




             
ü Disebut juga associative nets, krn node dihubungkan dg yang alin.
ü Bentuk links IS-A, HAS-A,A-KIND-OF (AKO)
ü IS-A menunjukkan hubungan kelas, pada gbr diatas menunjukkan “jarak dari”
ü HAS-A digunakan untuk mengidentifikasi karakteristik atau atribut objek noda.
ü AKO digunakan untuk menghubungkan satu jenis ke jenis yg lain
ü Salah satu masalah pd jaringan semantik adalah tidak adanya standar definisi nama link

ü Object-attribute-value triple (OAV) atau triplet digunakan untuk memberi karakter semua pengetahuan dlm jaringan semantik
-        Object dapat berupa fisik atau konsepsi
-        Attribute adalah karakteristik dari object
-       




Values adalah ukuran spesifik dari attribute dalam situasi tertentu.


Contoh: O-A-V item

Object

Attribute

Values

Rumah

Kamar tidur
2, 3, 4 dst.
Rumah

Warna

Putih, Biru,dst.
Kamar tidur

Ukuran

2x3, 3x3, 3x4, dst
Diterima di universitas
Nilai ujian masuk
A, B, C, atau D
Bahasa PROLOG
ü Model : Pemrograman Logika
ü Jenis data : Simbolik dan numerik, predikat, list
Kalkulus Predikatif
PROLOG
Arti
Ç
È
¬
+
,
;
:-
not
dan
atau
menyebabkan
tidak,bukan

ü Variabel dinyatakan sebagai string karakter alfanumerik dimulai dengan huruf besar :
likes(X,ana)
  ü  Contoh :
likes(doni,tina),likes(doni,ana)
likes(doni,ana) :- likes(doni,tina)
not(likes(tina,ana))

ü Contoh :
Proposisi : Mobil berada didalam garasi
Kalkulus predikat : didalam (mobil,garasi)

ü Contoh lain :
1.           red is a color
2.         Tom is the father of John
3.         Tom and Susan are the parents of John

Jawab :
1.           color (red)
2.         father_of (Tom,John)
parents (Tom,Susan<John)