17 November 2014

Radial Basis Function - Contoh Soal



Diketahui sebuah Table Kebenaran dan Struktur Jaringan untuk XOR sbb:
Gambar 1. Tabel kebenaran dan Struktur Jaringan XOR
Tahap 1 : Menentukan Center secara acak

Misalnya ditentukan 2 center (menyatakan jumlah hidden) secara acak sbb :

T1 = [1 1]
T2 = [0 0]

Maka jumlah hidden yang harus dibuat sebanyak 2 buah.
Nilai spread diasumsikan : s = 1

Kalau tabelnya seperti telihat di atas, maka :
Matriknya adalah :


Tahap 2 : Pembaharuan Bobot
Langkah 1. Meneruskan sinyal ke hidden layer dan menghitung nilai fungsi aktifasi dengan fungsi Gaussian.



Langkah 2. Membentuk Matrik Gaussian

















Langkah 4. Mencoba mengetahui output dari jaringan
Rumus Output Jaringan : Y = W1 * φ1  + W2 * φ2









Jika dilihat dari table di atas, RBFN telah mengeluarkan output yg sesuai dengan target, sehingga TRAINING BERHASIL

11 November 2014

Analisis Semantik

ANALISIS SEMANTIK, KODE ANTARA, DAN PEMBANGKITAN KODE



Analisis Semantik

Analisis semantik ini memanfaatkan pohon sintaks yang dihasilkan pada proses parsing (analisa sintaks).
Fungsi dari analisa semantik adalah untuk menentukan makna dari serangkaian instruksi yang terdapat dalam program sumber.

Untuk mengetahui makna, maka rutin analisa semantik akan memeriksa :
  • Apakah variabel yang ada telah didefinisikan sebelumnya 
  • Apakah variabel–variabel tersebut tipenya sama 
  • Apakah operan yang akan dioperasikan tersebut ada nilainya dan seterusnya. (A+B; dimana A dan B adalah operand dan + adalah operator) 
Untuk dapat menjalankan fungsi tersebut dengan baik, semantic analyzer seringkali menggunakan tabel simbol. Pemeriksaan bisa dilakukan pada tabel identifier, tabel display dan tabel blok, misal pada field link.

Pengecekan yang dilakukan oleh analisis semantik adalah :
  • Memeriksa keberlakuan nama–nama meliputi pemeriksaan : 
  1. Duplikasi : Pengecekan apakah sebuah nama terjadi pendefinisian lebih dari satu kali. Pengecekan dilakukan pada bagian pengelola blok. 
  2. Terdefinisi : Pengecekan apakah sebuah nama yang dipakai pada tubuh program sudah terdefinisi atau belum. Pengecekan dilakukan pada semua tempat kecuali blok 
Contoh Duplikasi Variabel
package matematika;
public class Matematika {
public static void main(String[] args) {
double xA = Math.cos(30);
double xB = Math.sin(30);
int A=4, B=5;
double C,D;
Int C;                                    C adalah duplikasinya
    C=A+B;
    D=A*B;
   System.out.println(C);
   System.out.println(D);
   System.out.println(xA);
   System.out.println(xB);
    }
}
  • Memeriksa tipe : Melakukan pemeriksaan terhadap kesesuaian tipe dalam statemen–statemen yang ada.   Misal; bila ada operasi antara dua operan maka tipe operan pertama harus bisa dioperasikan dengan operan kedua.
KODE ANTARA

Kegunaan dari Kode Antara / intermediate code :
  • Untuk memperkecil usaha dalam membangun kompilator dari sejumlah bahasa ke sejumlah mesin 
  • Proses optimasi lebih mudah. (dibandingkan pada program sumber atau kode assembly dan kode mesin) 
  • Bisa melihat program internal yang gampang dimengerti.
2 macam Kode Antara yang biasa digunakan adalah Notasi Postfix dan N-Tuple


Notasi Postfix

Pada Notasi Postfix operator diletakkan paling akhir.

Sintaks Notasi Postfix:

<operan><operan><operator>

Misalkan ekspresi :

          (a+b)*(c+d)

dapat dinyatakan dalam bentuk Notasi Postfix :

           ab+cd+*

Kontrol program yang ada dapat diubah kedalam bentuk notasi postfix, misalnya:

IF THEN ELSE

diubah kedalam Notasi Postfix :

BZ BR

                        label1                          label2

Keterangan :
BZ : branch if zero (zero = salah) {bercabang jika kondisi yang dites salah}
BR : branch {bercabang tanpa ada kondisi yang dites}

Arti dari notasi Postfix diatas adalah :

“ Jika kondisi ekspresi salah, maka instruksi akan meloncat ke Label1 dan menjalankan statement2. Bila kondisi ekspresi benar, maka statement1 akan dijalankan lalu meloncat ke Label2. Label1 dan Label2 sendiri menunjukkan posisi tujuan loncatan, untuk Label1 posisinya tepat sebelum statement2 dan Label2 setelah statement2.”

Contoh lain :

WHILE DO

diubah ke postfix :

BZBR

                     label1                   label2


Notasi N-Tuple

Pada notasi N-Tuple setiap baris bisa terdiri dari beberapa tupel.
Format umum dari notasi N-Tuple adalah :

         operator ………….N-1 operan

Notasi N-Tuple yang biasa digunakan adalah notasi 3 tupel dan 4 tupel.


Triples Notation

Memiliki format : <operator><operand><operand>

Contoh, instruksi :

         A:=D*C+B/E

Bila dibuat Kode Antara tripel :

  1. *,D,C 
  2. /,B,E 
  3. +,(1),(2)
  4. :=,A,(3)
Kekurangan dari notasi tripel adalah sulit pada saat melakukan optimasi, maka dikembangkan Indirect Triples yang memiliki dua list (senarai), yaitu list instruksi dan list eksekusi. List instruksi berisi notasi tripel, sedangkan list eksekusi mengatur urutan eksekusinya. Misalnya terdapat urutan instruksi :

A := B+C*D/E
F := C*D


Quadruples Notation

Format instruksi Quadruples

<operator><operan><operan><hasil>

hasil adalah temporary yang bisa ditempatkan pada memory atau register
Contoh instruksi :        

             A:= D*C + B/E
Bila dibuat dalam Kode Antara :
  1. *,D,C,T1
  2. /,B,E,T2
  3. +,T1,T2,A

PEMBANGKITAN KODE

Kode Antara dari program biasanya ditranslasikan ke bahasa assembly atau bahasa mesin.
Contoh :

            (A+B)*(C+D)

Dalam kode antaranya dalam bentuk notasi Quadruples
  1. +, A, B, T1 
  2. +, C, D, T2 
  3. *, T1, T2, T3 
Dapat ditranslasikan ke dalam bahasa assembly dengan akumulator tunggal :

LDA A {muat isi A ke akumulator}
ADD B {tambahkan isi akumulator dengan B}
STO T1 {simpan isi akumulator ke T1}
LDA C
ADD D
STO T2
LDA T1
MUL T2
STO T3

Catatan Tambahan :
Untuk materi presentasi bisa didownload pada link di bawah ini :

Radial Basis Function



TOPOLOGI JARINGAN
Seperti halnya jaringan syaraf tiruan yang lain, Radial Basis Function Network (RBFN), juga memiliki jaringan.

Topologi RBFN terdiri dari layer :
  • Input unit
  • Hidden unit
  • Output unit
Gambar 1. JST RBFN


Sifat Khusus RBFN adalah sebagai berikut :
  • Pemrosesan dari Input ke hidden bersifat non-linier
  • Pemrosesan dari hidden ke output bersifat linier
  • Pada hidden layer digunakan fungsi aktivasi yang berbasis radial, misalnya fungsi Gaussian
  • Pada output unit , sinyal dijumlahkan seperti biasa
  • Sifat jaringannya adalah feed forward
Fungsi Gaussian
             Dimana : σ -->  nilai spread
  • Nilai spread menentukan bagaimana data tersebar. Jika nilai spread makin besar, sensitivitas antar data semakin berkurang. 
  • Centers adalah pusat cluster data
Gambar 2. Center of Cluster


Hubungan nilai spread dg grafiknya pada fungsi Gaussian

Gambar 3. Perbandingan Nilai Spread

Nilai spread makin besar (sebaran datanya berjauhan), sensitivitas antar data semakin berkurang.

Fungsi Aktivasi selain Fungsi Gaussian
  • Multi-Quadric Functions
         
  • Generalized Multi-Quadric Functions
         
  • Inverse Multi-Quadric Functions
         
  • Generalized Inverse Multi-Quadric Functions
         
  • Thin Plate Spline Function
         
  • Cubic Function
         
  • Linear Function
         

RBFN
  • Biasa digunakan untuk menyelesaikan 2 jenis permasalahan, yaitu : 
  1. Pattern Classification 
  2. Time series modelling 
  • Untuk Pattern Classification menggunakan fungsi aktivasi Gaussian 
  • Time Series Modelling menggunakan fungsi aktivasi thin-plate spline
Algoritma Pelatihan Jaringan
  • Berguna atau tidaknya suatu JST ditentukan dari hasil pelatihan (bobot neuron-nya) 
  • RBFN mempunyai algoritma pelatihan yang agak unik, karena terdiri dari cara Supervised dan unsupervised sekaligus. 
  • Pelatihan RBFN terdiri dari 2 tahap, yaitu : 
  1. Tahap Clustering Data 
  2. Pembaharuan Bobot
Tahap 1 : Clustering Data
  • Data di cluster / dikelompokkan berdasarkan kedekatan tertentu (misalnya kedekatan 2 warna pixel, kedekatan jarak 2 titik, dll) 
  • Penentuan cluster akan memunculkan center / pusat cluster dari kelompok data 
  • Jumlah cluster menentukan jumlah hidden unit yg dipakai 
  • Cara menentukan center ada 2, yaitu : 
  1. Menentukan center secara acak dari sekelompok data (paling mudah) 
  2. Menggunakan algoritma clustering. Algoritma yang paling mudah adalah K-Means. Dengan Algoritma ini, JST mampu mencari sendiri center yg terbaik. 
  • Melihat cara tersebut, maka jelas tahap 1 ini adalah unsupervised

Tahap 2 : Pembaharuan Bobot
  • JST menyimpan pengetahuannya dalam bobot neuron-neuronnya. 
  • Bobot diperbaharui melalui serangkaian perhitungan. 
  • Dibutuhkan data training dan target (supervised)
  • Meneruskan sinyal input ke hidden & menghitung nilai aktivasi pada tiap hidden layer

Dimana :
m = 1,2,3….sesuai dg jumlah training pattern
j = 1,2,3…. Sesuai dengan jumlah hidden unit
x =  vector input
t =  vector data yg dianggap sebagai center 
  • Menyusun matriks Gaussian dari hasil perhitungan langkah 1 

    Dimana :
    m = vector input ke-m
    c = hidden unit ke-c

  • Menghitung bobot baru (w) dengan mengalikan pseudoinvers dari matrik G, dengan vector target (d) dari data training. 

          Rumus : W = G^+d
                            = (G^tG)^-1 G^T.d
  • Menghitung nilai output JST : 
             

           Dimana b =  nilai bobot bias
           G(x) pada rumus ini artinya sama dengan j(x)
Catatan Tambahan :
Apabila memerlukan presentasi berikut saya buatkan link presentasinya :

31 October 2014

Animasi dengan Warna

Animasi adalah suatu bentuk gambar bergerak, dari satu lokasi ke lokasi lain.  Ada banyak cara untuk
 Latihan Animasi dengan Photoshop
membuat animasi, misalnya dengan menggunakan program yang sudah jadi seperti Macromedia Flash, Photoshop dan lain sebagainya.
Tetapi ada juga yang menggunakan pemrograman sebagai sarana pengembangan animasi, misalnya dengan  pemrograman java.
Karena kemudahan penggunaannya dan multiplatform, menyebabkan java mudah berinteraksi dengan siapapun.
Nah kali ini saya akan mengajak pembaca untuk membuat animasi dengan permainan warna dengan menggunakan java.

Algoritma yang dipakai adalah :
  1. Buatlah gambar dengan warna merah (terserah pilihan), pada lokasi tertentu dilayar
  2. Tampilkan gambar tersebut
  3. Tunggu beberapa saat (idle).
  4. Buatlah gambar yang sama dengan lokasi yang sama tetapi dengan warna yang sama dengan background.
  5. Ulangi langkah 1 s/d 4.
Maka hasilnya adalah sebuah gambar yang berkedip-kedip (muncul hilang).

Untuk menggerakan animasi, maka cukup menggeser gambar ulangannya ke tempat lain, maka proses itu akan mengakibatkan gambar bergerak.

Contoh penggalan program javanya adalah sebagai berikut :

int jumlah = 1;                  // nilai awal dari loop
while (jumlah <=20){       // loop akan dilakukan sebanyak 20 kali
    g.setColor(Color.red);   //menulis
    g.drawString("STIKOM AB", 10*jumlah, 270); //menulis tulisan STIKOM AB pada lokasi 10*jumlah, 270
                                                                               
     int tunggu = 1;                                             // ini adalah waktu tunggunya
    while (tunggu <=100000000){
        tunggu++; }
 
    g.setColor(Color.white);  //menghapus tulisan STIKOM AB
    g.drawString("STIKOM AB", 10*jumlah, 270);  //menuliskan tulisan yang sama dengan lokasi
                                                                          // yang sama dengan warna yg sama dg background
 
    jumlah++;           // counter
   }}

Hasilnya adalah :  silahkan dijalankan sendiri, saya belum berhasil capture animasinya.

Ini listing lengkapnya.  --> Listing program Animasi dengan Warna


17 October 2014

Pencerminan - Grafika Komputer

Pencerminan/Mirroring



Gambar 1.

Dari gambar tampak bahwa:
  • Pencerminan titik A(a, b) terhadap sumbu x menghasilkan bayangan titik B(a', b')dengan a' = a dan b' = b

  • Pencerminan titik A(a, b) terhadap sumbu y menghasilkan bayangan titik C(a', b')dengan a' = -a dan b' = b.


  • Pencerminan titik A(a, b) terhadap garis y = x menghasilkan bayangan titik D(a', b') dengan a' = b dan b' = a 


  • Pencerminan titik A(a, b) terhadap garis y = -x menghasilkan bayangan titik E(a', b') dengan a' = -b dan b' = -a .

  • Pencerminan titik A(a, b) terhadap titik asal menghasilkan bayangan titik F(a', b')dengan a' = -a dan b' = -b.

  • Pencerminan titik A(a, b) terhadap garis x = h menghasilkan bayangan titik G(a', b') dengan a' = 2h - a dan b' = -b.


Bagaimana jika dua refleksi dikomposisikan?

Misalnya, titik A(a, b) dicerminkan terhadap garis x = h. Kemudian, dilanjutkan dengan pencerminan terhadap garis x = k.

Untuk mengetahui pencerminan ini, amatilah gambar berikut!

  • Pencerminan titik A(a, b) terhadap garis y = k menghasilkan bayangan titik H(a', b') dengan a' = a dan b' = 2k - b.



Dari gambar, tampak bahwa:




Dengan cara yang sama, kita dapat menentukan bayangan titik A(a, b) yang dicerminkan terhadap garis y = m, dilanjutkan dengan pencerminan terhadap garis y = n sebagai berikut:





Sekarang, jika titik A(a, b) dicerminkan terhadap dua garis yang saling berpotongan tegak lurus, misalnya pencerminan terhadap garis x = h, dilanjutkan dengan pencerminan terhadap garis y = mDiperoleh bayangan A'' sebagai berikut:



Materi Pencerminan dapat diperoleh disini.