Skip to main content

Posts

Showing posts from May, 2017

Neural Network - Bagian 3: Implementasi Multilayer Neural Network

Setelah membuat rancangan multilayer neural network pada post sebelumnya , kali ini akan dijabarkan mengenai implementasi menggunakan bahasa pemrograman Python dan package  numpy untuk membantu perhitungan matematika. Untuk mengingat kembali, spesifikasi  multilayer neural network yang akan diimplementasikan adalah sebagai berikut: Terdiri dari 3 layer: 1 input layer, 1 hidden layer, 1 output layer Fungsi aktivasi tanh untuk hidden layer Fungsi aktivasi softmax(x) untuk output layer Implementasi Fungsi Bantuan Fungsi bantuan yang dibutuhkan adalah fungsi softmax dan fungsi yang mengubah target dari array N*1 menjadi array N*C di mana N adalah banyaknya records dan C adalah banyaknya kelas berbeda.  Fungsi Softmax softmax(x_j) = exp(x_j)/(exp(x_1) + exp(x_2) + ... + exp(x_k)) Pertama-tama, definisikan fungsi softmax sebagai berikut. Nantinya akan dipakai untuk fungsi aktivasi layer output.  def softmax(z): z_ex...

Neural Network - Bagian 2: Multilayer Feed-forward Neural Network

Post ini akan membahas pemahaman mengenai multilayer feed-forward neural network sederhana.  Pemahaman Pada post kali ini, multilayer neural network yang akan diimplementasikan adalah feed-forward network  terdiri dari input layer, 1 hidden layer, dan output layer untuk permasalahan klasifikasi. Permasalahan klasfikasi merupakan sebagai berikut: Diberikan data training = {( x1 , t1), ( x2 , t2), ... ( xn , tn)} , akan dipelajari fungsi y = h(x) yang akan mempelajari pemetaan xi ke target ti . xi merupakan vektor input sedangkan target ti adalah kelas atau label yang sesuai dengan input xi . Banyaknya node pada input layer tergantung dengan panjang vektor input. Misalkan kita mempunyai vektor input terdiri dari 2 elemen, maka banyak node = 2. Selanjutnya, pada contoh kali ini, akan dibuat 5 node pada hidden layer . Banyaknya node pada hidden layer dapat divariasikan, tetapi semakin banyak node akan semakin besar cost perhitungannya. Sementara itu, banyaknya...

Neural Network - Bagian 1: Pendahuluan

Artificial neural network  (jaringan saraf tiruan) merupakan salah satu algoritme Machine Learning berdasarkan cara kerja  neuron  atau saraf pada otak manusia. Sebuah  neural network  sederhana terdiri bagian-bagian yang saling terhubung. Secara garis besar, komponen  neural network  adalah sebagai berikut: Input: ai Bias: a0*w0,j atau bisa juga b Bobot input:  wi,j Fungsi input: input = ∑wi,j * ai Fungsi aktivasi: f(input) Output: hasil dari fungsi aktivasi Gambar 1. Model untuk sebuah neuron dalam neural networks (Sumber: [1]) Fungsi aktivasi g dapat berupa macam-macam fungsi, contohnya fungsi threshold,   fungsi logistik (sigmoid), atau fungsi tanh. Fungsi threshold selalu menghasilkan nilai 0 atau 1 sedangkan fungsi logistik didefinisikan sebagai f(z) = 1/(1+exp(-z)). Fungsi tanh(z) = (exp(z) - exp(-z))/(exp(z) + exp(-z)). Perhatikan bahwa exp(x) = e^x di mana e adalah bilangan Euler bernilai kira-kira 2.718...

Stochastic Gradient Descent

Setelah membahas Gradient Descent, kali ini akan dibahas mengenai Stochastic Gradient Descent (SGD). SGD sering dimanfaatkan dalam Neural Networks untuk meminimalkan error dalam mempelajari parameter.  Perbedaan SGD dengan Gradient Descent Secara Penggunaan Gradient Descent dalam mencari optimum lokal dapat memboroskan waktu yang lama karena menggunakan semua data training . Sementara itu, SGD tidak menggunakan semua data training untuk menghitung gradien pada setiap iterasi. SGD hanya menggunakan satu atau beberapa bagian saja dari data training yang dipilih secara acak. Keuntungan dari SGD adalah tidak menggunakan memory sebanyak Gradient Descent sehingga bisa konvergen lebih cepat daripada Gradient Descent tradisional. Kenapa demikian? Misalkan kita memiliki data training berisi pasangan (xi, yi). Diberikan sebuah fungsi h: X -> Y untuk memprediksi xi sehingga dihasilkan h(x) sebagai berikut h( x ) = θ0 + θ1x1 + θ2x2 + ... + θnxn     ...

Gradient Descent

Dulu saat di Matematika SMA, diajarkan bahwa untuk mencari nilai maksimum atau nilai minimum dari sebuah fungsi f(x), dicari x yang membuat turunan pertama f'(x) = 0. Jika turunan kedua f''(x) < 0, kurva cekung ke bawah. Artinya titik (x, f(x)) adalah titik maksimum. Jika f''(x) > 0, kurva cekung ke atas dan titik (x, f(x)) adalah titik minimum.  Dalam kasus itu, x adalah anggota himpunan bilangan Real, sehingga dimensinya adalah 1.  Sementara itu, Gradient Descent , atau juga bisa disebut Steepest Descent , digunakan untuk mencari nilai minimum dari sebuah fungsi multi-variabel F  : Rn -> R . Artinya dimensi input untuk fungsi F(x) adalah suatu vektor x. Output dari fungsi f adalah bilangan real y. Jika yang dicari adalah nilai maksimum fungsi, maka namanya Gradient Ascent . Yah, descent dalam bahasa Inggris berarti "turun" sedangkan ascent berarti "naik." Cara kerja Gradient Descent adalah  Memberi tebakan awal θ .  T...