Deep Learning untuk mengenali Gambar
Deep Learning atau sering dikenal dengan istilah
Pembelajaran Struktural Mendalam (Deep Structured Learning) atau Pembelajaran
Hierarki (Hierarchical learning) adalah salah satu cabang dari ilmu
pembelajaran mesin (Machine Learning) yang terdiri algoritma pemodelan
abstraksi tingkat tinggi pada data menggunakan sekumpulan fungsi transformasi
non-linear yang ditata berlapis-lapis dan mendalam. Teknik dan algoritma dalam
Pembelaran dalam dapat digunakan baik untuk kebutuhan pembelajaran terarah
(supervised learning), pembelajaran tak terarah (unsupervised learning) dan
semi-terarah (semi-supervised learning) dalam berbagai aplikasi seperti
pengenalan citra, pengenalan suara, klasifikasi teks, dan sebagainya[4]. Deep
Learning disebut sebagai Deep (dalam) karena struktur dan jumlah jaringan saraf
pada algoritmanya sangat banyak bisa mencapai hingga ratusan lapisan.
Deep Learning adalah salah satu jenis algoritma jaringan saraf tiruan yang
menggunakan metadata sebagai input dan mengolahnya menggunakan sejumlah lapisan
tersembunyi (hidden layer) transformasi non linier dari data masukan untuk
menghitung nilai output. Algortima pada Deep Learning memiliki fitur yang unik
yaitu sebuah fitur yang mampu mengekstraksi secara otomatis. Hal ini berarti
algoritma yang dimilikinya secara otomatis dapat menangkap fitur yang relevan
sebagai keperluan dalam pemecahan suatu masalah. Algortima semacam ini sangat
penting dalam sebuah kecerdasan buatan karena mampu mengurangi beban
pemrograman dalam memilih fitur yang eksplisit. Dan, algortima ini dapat
digunakan untuk memecahkan permasalahan yang perlu pengawasan (supervised),
tanpa pengawasan (unsupervised), dan semi terawasi (semi supervised).
Dalam jaringan saraf tiruan tipe Deep Learning setiap lapisan tersembunyi
bertanggung jawab untuk melatih serangkaian fitur unik berdasarkan output dari
jaringan sebelumnya. Algortima ini akan menjadi semakin komplek dan bersifat
abstrak ketika jumlah lapisan tersembunyi (hidden layer) semakin bertambah
banyak. Jaringan saraf yang dimiliki oleh Deep Learning terbentuk dari hirarki
sederhana dengan beberapa lapisan hingga tingkat tinggi atau banyak lapisan
(multi layer). Berdasarkan hal itulah Deep Learning dapat digunakan untuk
memecahkan masalah kompleks yang lebih rumit dan terdiri dari sejumlah besar
lapisan transformasi non linier.
Jenis
Deep Learning
·
Deep
Learning untuk Pembelajaran Tanpa Pengawasan (Unsupervised Learning): Deep
Learning tipe ini digunakan pada saat label dari variabel target tidak tersedia
dan korelasi nilai yang lebih tinggi harus dihitung dari unit yang diamati
untuk menganalisis polanya.
·
Hybrid
Deep Networks (Deep Learning gabungan): Pendekatan tipe ini bertujuan agar
dapat dicapai hasil yang baik dengan menggunakan pembelajaran yang diawasi
untuk melakukan analisis pola atau dapat juga dengan menggunakan pembelajaran
tanpa pengawasan.
Seberapa banyak jumlah lapisan tersembunyi (Hidden Layer) yang harus
dipakai pada Deep Learning?
Ketika dalam proses perancangan, apabila jumlah saraf yang ditambahkan
sangat banyak, hal tersebut tidak akan pernah cocok untuk menyelesaikan setiap
masalah. Persoalan terpenting dalam Deep Learning adalah jaringan sarafnya
dilatih dengan cara penurunan gradien secara sederhana. Pada saat kita
menambahkan lapisan jaringan yang semakin banyak, maka sebaliknya penurunan
dari gradien semakin berkurang sehingga dapat mempengaruhi nilai outpunya.
Perbedaan yang dimiliki oleh Jaringan Saraf Tiruan biasa dengan Deep
Learning
Jaringan Saraf Tiruan adalah jaringan saraf yang biasanya menggunakan
jaringan seperti umpan maju (feed forward) atau recurrent network yang hanya
memiliki 1 atau 2 lapisan tersembunyi. Tetapi, jika lapisan jaringan sarafnya
lebih dari 2 layer ke atas atau bahkan mencapai ratusan lapisan itulah yang
disebut sebagai Deep Learning. Pada Jaringan Syaraf Tiruan arsitektur jaringan
yang dimilikinya kurang kompleks dan membutuhkan lebih banyak informasi tentang
data input sehingga dapat menentukan algortima mana yang dapat digunakan. Dalam
Jaringan Saraf Tiruan terdiri dari beberapa algoritma yaitu Model Hebb,
Perceptron, Adaline, Propagasi Maju, dll. Sedangkan pada algortima jaringan
saraf Deep Learning tidak memerlukan informasi apapun terhadap data yang akan
dipelajarinya, dan algoritmanya dapat secara mandiri melakuan tuning
(penyetelan) dan pemilihan model yang paling optimal.
Neural Network
Unit dasar untuk komputasi dalam otak adalan neuron. Terdapat sekitar 86
juta neuron yang ada pada sistem syaraf manusia dan semuanya terhubung dengan
1014 sampai 1015 sinapsis. Tiap neuron
menerima input dari dendrit dan output yang dihasilkan dikirim melalui axon.
Lalu, masing-masing axon akan terhubung dengan dendrit dari neuron lain.
Dalam model komputasi neuron, sinyal yang melewati axon berinteraksi
beberapa kali dengan dendrit milik neuron lain berdasarkan kekuatan sinapsis.
Dengan kata lain, sinapsis dapat belajar dan mempengaruhi neuron satu atau yang
lainnya.
Dari struktur neuron pada otak manusia, maka konsep dasar pembangunan
neural network buatan (Artificial Neural Network) terbentuk. Ide dasar dari
artificial neural network (ANN) adalah mengadopsi cara berpikir sebuah sistem
yang menyerupai otak manusia, baik dalam memroses berbagai sinyal elemen yang
diterima dan toleransi terhadap kesalahan.
Karakteristik dari ANN dilihat dari pola hubungan antar neuron, metode
penentuan kekuatan sinapsis (bobot) dari tiap koneksi, dan perhitungan pada
sinapsis (aktivasi).
ANN dibangun dari banyak neuron (unit) yang dihubungkan dengan sinapsis
(link) secara langsung. Link tersebut digunakan untuk melakukan propagasi
aktivasi dari unit pertama ke unit selanjutnya. Setiap link memiliki bobot
numerik. Bobot ini merupakan kekuatan hubungan antar unit. Proses pada ANN
dimulai dari input yang diterima neuron beserta dengan nilai bobot dari tiap
input yang ada.
Setelah masuk ke dalam neuron, nilai input akan dijumlahakan oleh suatu
fungsi perambatan dan hasilnya akan diporses oleh fungsi aktivasi untuk
mengaktifkan unit. Setelah aktif, unit akan mengirim nilai output ke seluruh
unit yang terhubung dengannya. Proses ini akan terus berulang pada input selanjutnya.
Tiap unit pada ANN dikelompokkan ke dalam beberapa lapisan (layer). Unit
yang terdapat pada tiap layer dihubungkan dengan unit pada layer lainnya.
Informasi yang diterima di layer input dilanjutkan ke layer selanjutnya satu
persatu hingga mencapai layer output. Layer yang terletak di antara layer input
dan output disebut sebagai hidden layer. Namun, tidak semua ANN memiliki hidden
layer, ada juga yang hanya terdapat layer input dan output saja.
Tensorflow
Tensorflow merupakan framework machine learning yang dikembangan oleh
Google. Pada tahun 2015, Google membuat Tensorflow open-source di bawah lisensi
Apache 2.0. Sebelumnya, Tensorflow adalah hak milik Google dan digunakan oleh
Google untuk mengembangkan speech recognition, Search, Photos dan Gmail.
Library ini diimplementasikan menggunakan C++ dan memiliki API Python yang
mudah digunakan. Dikarenakan ketergantungan yang sederhana, Tensorflow dapat
dengan cepat diterapkan untuk arsitektur yang beragam.
Komputasi pada Tensorflow dideskripsikan menggunakan flowchart, ini
memisahkan desain dari implementasi. Hal
ini membuat desain yang sama dapat diimplementasi pada sistem berskala besar,
tetapi juga pada perangkat mobile.
Salah satu keunggulan yang dimiliki Tensorflow adalah kemampuan automatic
differentiation. Automatic differentiation membuat komputasi yang membutuhkan
perhitungan besar menjadi lebih mudah diterapkan.
Pembuatan prototype pada Tensorflow pun lebih mudah dan cepat karena
library sudah pre-compiled. Ini membuat seluruh komputasi dapat digunakan tanpa
melakukan perhitungan ulang.
Tensorflow juga terdokumentasi dengan baik dan didukung oleh Google.
Sehingga, untuk mengembangkan aplikasi machine learning yang cenderung sulit
Tensorflow menjadi lebih nyaman.
Contoh studi kasus
Contoh kasus yang akan dipahami adalah penggunaan tensorflow untuk
mengenali gambar.
Metode yang
digunakan adalah Pengolahan data, membangun strutur neural network, melakukan
optimasi pada neutal network, kemudian melakukan visualisasi.
·
Pengolahan
data
Karena machine learning membutuhkan data untuk
menyelesaikan suatu masalah, data tersebut perlu diolah terlebih dahulu agar
ciri-ciri yang dimiliki dapat dipelajari dengan baik. Data yang digunakan adalah
citra huruf latin, hiragana dan hangul. Pada modul ini hanya dijelaskan
penggunaan data citra huruf latin. Untuk penerapan menggunakan citra huruf
lainnya, tidak jauh berbeda.
Citra huruf latin diambil dari dataset Chars74K.
Dataset ini terdiri atas 26 kelas huruf kapital dan huruf kecil, serta 10 kelas
angka. Tiap kelas terdiri atas 27 citra PNG berukuran 1200x900 pixel.
Pengolahan data yang dilakukan hanya pengubahan
ukuran citra (scaling) menjadi 30x30 dan konversi citra RGB ke grayscale.
Proses ini menggunakan modul opencv-python.
Selanjutnya adalah memanggil fungsi tersebut untuk
mendapatkan citra dan label dari direktori yang sudah ditentukan
Potongan program di atas merupakan fungsi
load_data dengan parameter data_directory. Kemudian fungsi tersebut akan
mencari direktori di dalam data_directory dan disimpan ke dalam array
directories. Lalu, inisiasi dua buah array kosong yaitu labels dan images.
Selanjutnya, fungsi akan melakukan perulangan sebanyak jumlah direktori pada
array directories untuk mencari file PNG. Kemudian, seluruh file PNG yang ditemui dibaca
dengan fungsi imread pada modul cv2 dan hasilnya disimpan ke dalam array
images, serta nama direktori pun disimpan ke dalam array labels. Setelah semua
proses dilakukan, fungsi akan mengembalikan nilai array images dan labels.
citra-citra tersebut perlu dilakukan proses
scaling dan konversi ke grayscale. Berikut adalah potongan kodenya.
·
Membangun
Neural Network
Kemudian, placeholder dibutuhkan agar data yang
sudah diload dapat diproses oleh mesin Tensorflow. Ada dua placeholder yang
dibutuhkan, yaitu placeholder untuk input citra dan input label.
Setelah placeholder dibuat, kemudian dibuatlah
neural network yang terdiri dari 2 layer, yaitu layer input dan layer output.
Berikut adalah potongan program untuk membuat neural network.
images_flat merupakan layer input. Pada layer
tersebut, citra yang diinput akan diubah menjadi vektor atau matriks satu
dimensi. Hal tersebut dilakukan karena neuron pada tiap layer disusun menjadi
vektor. Layer images_flat menerima input dari placeholder x.
Layer selanjutnya adalah logits. Layer ini
merupakan layer output dengan jenis fully connected. Maksudnya adalah, seluruh
neuron terkoneksi secara penuh pada layer ini. Layer ini menerima input dari
layer images_flat, kemudian terdapat 26 neuron, dan neuron diaktifkan
menggunakan Rectified Linear Unit (ReLU). Fungsi aktivasi ini akan menghasilkan
nilai 0 jika input bernilai negatif. Jika input bernilai positif, fungsi akan
menghasilkan nilai input tersebut.
Kemudian, untuk mengetahui apakah neural network
yang dibangun dapat mempelajari data yang diinput, perlu ditambahkan fungsi
error atau fungsi loss. Fungsi loss menunjukan tingkat error network yang
dibangun. Semakin kecil nilai yang dihasilkan fungsi loss, semakin bagus
network tersebut belajar. Maka dari itu, fungsi loss harus diminimalkan. Salah
satu caranya adalah menggunakan algoritma Stochastic Gradient Descent. Berikut
adalah implementasinya dalam program.
Pada potongan kode di atas, fungsi loss yang
digunakan adalah softmax. Fungsi ini akan menghasilkan nilai probabilitas
terhadap label dari citra input. Fungsi ini menerima dua parameter, yaitu
logits dan labels.
Lalu, baris berikutnya adalah implementasi
algoritma Stochastic Gradient Descent. Algoritma tersebut menerima parameter
learning rate. Learning rate adalah tingkat kecepatan algoritma dalam
meminimalisir nilai fungsi loss. Semakin tinggi nilai learning rate, semakin
cepat algoritma dalam meminimalisir nilai fungsi loss.
Terakhir adalah implementasi perhitungan tingkat
akurasi neural network dalam mengenali huruf. Berikut potongan programnya.
correct_pred akan digunakan untuk menyimpan
prediksi benar. Kemudian, dari nilai yang ada di dalam correct_pred, dihitung
reratanya dan hasilnya disimpan ke variabel accuracy.
Terakhir adalah mencetak semua variabel Tensorflow
untuk melihat apakah variabel tersebut sudah benar diinisiasi. Berikut adalah
potongan kodenya.
·
Optimasi
pada Neural Network
Algoritma optimasi digunakan untuk melakukan
training pada neural network yang kita miliki dari cara algoritma optimasi yang
tradisional hingga cara-cara lainnya. Algoritma optimasi untuk training pada
neural network biasanya mencakup beberapa spesialisasi pada struktur spesifik
dari fungsi dan tujuan machine learning tersebut. Berikut ini ada beberapa
algoritma optimasi, di antaranya:
Stochastic Gradient Descent, Momentum Nesterov, Adam.
·
Visualisasi
Kita akan mencoba memberikan visualisasi data set
yang kita miliki dengan manampilkan 10 data set yang kita miliki dan kita ambil
secara acak.
Comments
Post a Comment