Arsitektur Neural Network

Neural Network

Referensi : 1. Pengenalan Konsep Pembelajaran Mesin dan Deep Learning (Jan Wira Gotama Putra)
                   2. Deep Learning: Convolutional Neural Networks (Mega Bagus Herlambang)
                   3. Deep Learning: Recurrent Neural Networks (Mega Bagus Herlambang)
 
                   




                1. Tujuan [back]
1. Memahami algoritma machine learning Convolutional Neural Network
2. Mengetahui cara kerja Supervised Learning

                2. Alat dan Bahan [back]
Alat yang digunakan pada pembelajaran ini adalah python pada percobaan ini kita menggunakan spyder sebagai platform open sourcenya

                3. Dasar Teori [back]


Python


python dibuat pertama kali oleh Guido van Rossum di tahun 1991. Saat ini ada 2 versi, yaitu python 2 dan python 3. Versi yang terbaru adalah versi yang ketiga.

Python dapat digunakan sebagai berikut :

  1. Pengembangan aplikasi web dan seluler back end (atau sisi server)
  2. Pengembangan aplikasi atau perangkat lunak untuk dekstop
  3. Memproses data besar dan melakukan perhitungan matematis
  4. Menulis skrip sistem (membuat instruksi yang memberitahu sistem komputer untuk “melakukan” sesuatu)


Neural Network

Neural networks/Jaringan syaraf tiruan merupakan salah satu representasi buatan dari otak manusia yang selalu mencoba untuk mensimulasikan proses pembelajaran pada otak manusia tersebut, di implementasikan dengan program computer
Arsitektur sebuah neural networks


sebuah neural network (NN) terbagi menjadi tiga bagian, yaitu input, neuron (hidden layer) dan output.


Convolutional Neural Network

Convolutional Neural Network (CNN) yang  adalah salah satu jenis neural network yang biasa digunakan pada data image atau video. CNN bisa digunakan untuk mendeteksi dan mengenali object pada sebuah image atau video. CNN adalah sebuah teknik yang terinspirasi dari cara manusia, menghasilkan persepsi visual

Tahapan pada CNN 



  1. Convolution
    Convolusi merupakan proses pengalian matriks input dengan feature detector yang akan menghasilkan feature map, konvolusi layer adalah gabungan dari beberaoa feature map




  2. Max Pooling
    Teknik ini melakukan proses pencarian fitur yang sudah didapat di tahap sebelumnya, yaitu convolution. Dari hasil convolutional layer ini, teknik max pooling mencari fitur dengan tetap mempertahankan fleksibilitas yang tinggi. Ia tidak peduli apakah gambarnya miring ke kiri, kanan, diputar, dikecilkan, dibesarkan, berbeda teksturnya, warnanya dan lain sebagainya. Ia hanya peduli dengan fitur yang ia cari.




  3. Flattening

    Tahapan flattening adalah merubah dari matriks yang ada di pooling layer menjadi satu kolom saja (sebuah vektor tunggal). 



Full Connection
Full Conection adalah tahap dimana semua nodes harus terhubung dengan nodes di depan dan belakangnya


Recurrent Neural Network 

Merupakan sebuah teknik tipe supervised learning yang lebih advance dari teknik sebelumnya, hal ini dikarenakan teknik RNN adalah teknik deep learning yang memiliki sebuah ingatan(memory).
Ibarat manusia yang memiliki 2 jenis ingatan, yaitu  ingatan jangka pendek (short-term memory, disingkat STM) dan jangka panjang (long-term memory, disingkat LTM). Kita mampu mengingat perkataan teman kita saat sedang berdiskusi beberapa detik yang lalu misalnya, yang merupakan contoh dari STM. Kita juga mampu mengingat kenangan beberapa tahun bahkan puluhan tahun yang lalu, yang merupakan contoh nyata dari LTM. Sehingga dari hal tersebut terciptalah sebuah cara agar mesin dapat melakukan hal tersebut yaitu dengan teknik RNN dimana pada desain (arsitektur) dari RNN, ia memiliki looping (diagram balik) yang berada di hidden layer-nya, yang menarik disini arsitektur pada RNN memiliki desain yang berbeda dengan arsitektur umum Neural Network tapi pada dasarnya memiliki prinsip yang sama.
berikut merupakan arsitektur pada RNN, dimana memiliki loop di tengahnya
Terlihat bahwa di lingkaran berwarna biru (yang merepresentasikan hidden layer) terlihat ada garis looping yang kembali ke lingkaran itu sendiri. Pola looping ini memungkinkan RNN untuk menyimpan ingatan sementara (mengakses informasi yang melewati NN), yang tidak mampu dilakukan oleh ANN maupun CNN.

Walaupun teknik ini handal, teknik RNN memiliki masalah yang krusial, Masalah ini dikenal dengan istilah vanishing gradient problem, atau jika diterjemahkan artinya ‘permasalahan luruhnya/hilangnya efektivitas gradien’.

Pada gambar di atas bisa dilihat ada beberapa simbol. Simbol W merepresentasikan bobot yang dimiliki oleh setiap neuron (perceptron) nya. Wout artinya bobot yang dimiliki oleh output layer, sementara Win adalah bobot yang dimiliki oleh input layer. Tentunya Wout satu dengan lainnya berbeda angkanya. Kita tuliskan sama hanya untuk memudahkan saja. Begitu pula dengan Win satu dengan Win lainnya yang juga berbeda.

Wrec (weight of reccurent) merupakan bobot yang dimiliki oleh jalur looping ke perceptron lain yang ada di sampingnya. Wrec satu dengan Wrec yang lain juga berbeda nilainnya. Penulisan dibuat sama hanya untuk memudahkan ilustrasi saja.

Simbol yang paling atas merupkan epsilon (Et) yang mewakili nilai error sebuah perceptron di output layer pada waktu t. Nilai error ini adalah selisih (perbedaan) antara nilai di prediksi (yt) dengan nilai sesungguhnya (y).

Dalam proses meminimasi nilai error ini, maka sebuah neural networks harus melakukan proses backpropagation, di mana ia akan mundur ke belakang untuk mengupdate nilai w yang dimiliki setiap perceptron dengan cara menghitung nilai turunannya (derivative). Berbeda dengan neural networks versi standar, di RNN maka ia juga akan mundur ke belakang termasuk ke cabang-cabang recurrent-nya. Ilustrasinya sebagai berikut.


Sekarang mulailah muncul masalah, dan ini terjadi ketika kita menggunakan fungsi aktivasi sigmoid (sigmoid activation function). Karena nilai fungsi sigmoid berkisar antara 0 hingga 1, artinya nilai w semakin lama akan semakin kecil. Semakin panjang layer nya maka semakin cepat penurunan nilai W, apalagi jika proses epoch nya dilakukan berulang-ulang (sampai ratusan bahkan ribuan kali).


Dengan demikian, lama kelamaan nilai gradiennya (delta W) akan mendekati nol, dan penyesuaian nilai W tidak akan signifikan lagi. Jika penyesuaian nilai W sudah tidak signifikan, maka penurunan nilai epsilon (error) akan stagnan, padahal sebenarnya solusinya belum converge.

Solusi masalah Vanishing Gradient

Ada beberapa hal yang bisa dilakukan, antara lain:

  1. Menggunakan fungsi aktivasi rectifier (ReLu). Walau demikian, perlu diperhatikan, penggunaan ReLu dalam RNN bisa menyebabkan masalah lain yang disebut dengan exploding gradient problem, di mana nilai gradiennya semakin lama semakin membesar. Tapi ini bisa disiasati dengan menggunakan ukuran batch yang kecil. Ini juga yang menjadi alasan mengapa penggunaan ReLu menjadi populer.
  2. Solusi lain adalah dengan menggunakan gradient clipping. Artinya kita mengunci agar nilai gradiennya tetap di rentang tertentu. Caranya adalah dengan me-rescale gradiennya sehingga nilainya berada di rentang tertentu.
  3. Menggunakan arsitektur ResNet (Residual Network), di mana sebuah neuron melewati (skip) beberapa neuron di depannya. Berikut adalah tampilan dari arsitektur ResNet.


    Pada RNN terdapat desain tambahan yang membuat RNN istimewa yaitu LSTM Dengan adanya penambahan LSTM, maka RNN terbukti dapat diaplikasikan ke dalam berbagai aspek, antara lain speech recognition (mengenali suara manusia), image captioning (menamai gambar dan memberinya judul hanya dengan melihatnya saja), translation (menerjemahkan kalimat dari bahas satu ke bahasa lainnya, seperti google translate), dan masih banyak lagi. Ringkasnya, LSTM menambakan sebuah proses seleksi di dalam cell (kotak kontrol) nya sehingga bisa menyeleksi informasi mana yang layak untuk diteruskan, sekaligus menjadi solusi bagi permasalahan vanishing gradient.


                  4. Percobaan (Contoh) [back]

Kasus CNN : Mendeteksi gambar anjing atau kucing

Dataset terbagi menjadi data latih dan data uji. Masing-masing terbagi menjadi kategori data gambar kucing dan anjing, yang memiliki ukuran berbeda-beda yang akan diubah resolusinya menjadi 64x64. Dataset yang kita miliki semuanya adalah gambar dengan format jpg. Kita memiliki 4000 gambar kucing dan 4000 gambar anjing untuk training set, dan 1000 gambar kucing dan 1000 gambar anjing untuk test set. Jadi secara ringkas kita memiiki 8000 data untuk training set dan 2000 data untuk test set Berikut merupakan beberapa gambar dataset kucing dan anjing







Hasil :




                5. Video Pembelajaran [back]

Video CNN



Video RNN




  
                  6. Link Download [back]

Dowload Code Python CNN : download
Download Data Set CNN   : download




No comments:

Post a Comment