Keras - Ringkasan Deep learning
Pembelajaran mendalam adalah subbidang pembelajaran mesin yang berkembang. Pembelajaran mendalam melibatkan analisis masukan secara lapis demi lapis, di mana setiap lapisan secara progresif mengekstrak informasi tingkat yang lebih tinggi tentang masukan tersebut.
Mari kita ambil skenario sederhana untuk menganalisis gambar. Mari kita asumsikan bahwa gambar input Anda dibagi menjadi kotak piksel persegi panjang. Sekarang, lapisan pertama mengabstraksi piksel. Lapisan kedua memahami tepi pada gambar. Lapisan Berikutnya membangun simpul dari tepi. Kemudian, selanjutnya akan menemukan cabang dari node. Terakhir, lapisan keluaran akan mendeteksi objek secara penuh. Di sini, proses ekstraksi fitur beralih dari keluaran satu lapisan menjadi masukan dari lapisan berikutnya.
Dengan menggunakan pendekatan ini, kami dapat memproses sejumlah besar fitur, yang menjadikan pembelajaran mendalam sebagai alat yang sangat berguna. Algoritme pembelajaran mendalam juga berguna untuk analisis data tidak terstruktur. Mari kita bahas dasar-dasar pembelajaran mendalam di bab ini.
Jaringan Syaraf Tiruan
Pendekatan yang paling populer dan utama dalam pembelajaran mendalam adalah menggunakan "Jaringan saraf tiruan" (JST). Mereka terinspirasi dari model otak manusia, yang merupakan organ paling kompleks di tubuh kita. Otak manusia terdiri dari lebih dari 90 miliar sel kecil yang disebut "Neuron". Neuron saling terhubung melalui serabut saraf yang disebut "akson" dan "Dendrit". Peran utama akson adalah mengirimkan informasi dari satu neuron ke neuron lain yang terhubung dengannya.
Demikian pula, peran utama dendrit adalah menerima informasi yang dikirimkan oleh akson neuron lain yang terhubung dengannya. Setiap neuron memproses informasi kecil dan kemudian meneruskan hasilnya ke neuron lain dan proses ini berlanjut. Ini adalah metode dasar yang digunakan oleh otak manusia kita untuk memproses banyak sekali informasi seperti ucapan, visual, dll., Dan mengekstrak informasi yang berguna darinya.
Berdasarkan model ini, Jaringan Syaraf Tiruan (JST) pertama ditemukan oleh psikolog Frank Rosenblatt, pada tahun 1958. JST terdiri dari beberapa node yang mirip dengan neuron. Node saling berhubungan erat dan diatur ke dalam lapisan tersembunyi yang berbeda. Lapisan masukan menerima data masukan dan data melewati satu atau lebih lapisan tersembunyi secara berurutan dan akhirnya lapisan keluaran memprediksi sesuatu yang berguna tentang data masukan. Misalnya, masukan mungkin berupa gambar dan keluaran mungkin hal yang diidentifikasi dalam gambar, katakan "Kucing".
Sebuah neuron tunggal (disebut perceptron di JST) dapat direpresentasikan seperti di bawah ini -
Sini,
Beberapa masukan bersama dengan bobot mewakili dendrit.
Jumlah input bersama dengan fungsi aktivasi mewakili neuron. Sum sebenarnya berarti nilai yang dihitung dari semua input dan fungsi aktivasi mewakili fungsi, yang memodifikasi file Sum nilai menjadi 0, 1 atau 0 hingga 1.
Keluaran aktual merupakan akson dan keluaran tersebut akan diterima oleh neuron pada lapisan selanjutnya.
Mari kita pahami berbagai jenis jaringan saraf tiruan di bagian ini.
Perceptron Multi-Lapisan
Multi-Layer perceptron adalah bentuk JST yang paling sederhana. Ini terdiri dari satu lapisan masukan, satu atau lebih lapisan tersembunyi dan terakhir lapisan keluaran. Sebuah lapisan terdiri dari kumpulan perceptron. Lapisan masukan pada dasarnya adalah satu atau lebih fitur dari data masukan. Setiap lapisan tersembunyi terdiri dari satu atau lebih neuron dan memproses aspek tertentu dari fitur dan mengirimkan informasi yang telah diproses ke lapisan tersembunyi berikutnya. Proses lapisan keluaran menerima data dari lapisan tersembunyi terakhir dan akhirnya mengeluarkan hasilnya.
Jaringan Neural Konvolusional (CNN)
Jaringan saraf konvolusional adalah salah satu JST paling populer. Ini banyak digunakan di bidang pengenalan gambar dan video. Ini didasarkan pada konsep konvolusi, konsep matematika. Ini hampir mirip dengan multi-layer perceptron kecuali itu berisi rangkaian lapisan konvolusi dan lapisan penyatuan sebelum lapisan neuron tersembunyi yang terhubung sepenuhnya. Ini memiliki tiga lapisan penting -
Convolution layer - Ini adalah blok pembangun utama dan melakukan tugas komputasi berdasarkan fungsi konvolusi.
Pooling layer - Ini diatur di sebelah lapisan konvolusi dan digunakan untuk mengurangi ukuran input dengan menghilangkan informasi yang tidak perlu sehingga komputasi dapat dilakukan lebih cepat.
Fully connected layer - Ini diatur di sebelah rangkaian konvolusi dan lapisan penyatuan dan mengklasifikasikan input ke dalam berbagai kategori.
CNN sederhana dapat direpresentasikan seperti di bawah ini -
Sini,
2 seri Convolution dan pooling layer digunakan dan menerima serta memproses input (mis. Gambar).
Satu lapisan yang sepenuhnya terhubung digunakan dan digunakan untuk mengeluarkan data (misalnya klasifikasi gambar)
Jaringan Neural Berulang (RNN)
Recurrent Neural Networks (RNN) berguna untuk mengatasi kekurangan pada model ANN lainnya. Sebagian besar JST tidak mengingat langkah-langkah dari situasi sebelumnya dan belajar membuat keputusan berdasarkan konteks dalam pelatihan. Sementara itu, RNN menyimpan informasi masa lalu dan semua keputusannya diambil dari apa yang telah dipelajari dari masa lalu.
Pendekatan ini terutama berguna dalam klasifikasi gambar. Terkadang, kita mungkin perlu melihat ke masa depan untuk memperbaiki masa lalu. Dalam hal ini RNN dua arah berguna untuk belajar dari masa lalu dan memprediksi masa depan. Misalnya, kami memiliki contoh tulisan tangan dalam beberapa masukan. Misalkan kita mengalami kebingungan dalam satu masukan maka kita perlu memeriksa kembali masukan lainnya untuk mengenali konteks yang benar yang mengambil keputusan dari masa lalu.
Alur kerja ANN
Pertama-tama, mari kita pahami berbagai fase deep learning, lalu pelajari bagaimana Keras membantu dalam proses deep learning.
Kumpulkan data yang dibutuhkan
Pembelajaran mendalam membutuhkan banyak data masukan untuk berhasil mempelajari dan memprediksi hasilnya. Jadi, kumpulkan dulu data sebanyak mungkin.
Menganalisis data
Analisis data dan dapatkan pemahaman yang baik tentang data. Pemahaman yang lebih baik tentang data diperlukan untuk memilih algoritma JST yang benar.
Pilih algoritma (model)
Pilih algoritme, yang paling sesuai untuk jenis proses pembelajaran (misalnya klasifikasi gambar, pemrosesan teks, dll.) Dan data input yang tersedia. Algoritma diwakili olehModeldi Keras. Algoritma mencakup satu atau lebih lapisan. Setiap lapisan di ANN dapat diwakili olehKeras Layer di Keras.
Prepare data - Proses, filter, dan pilih hanya informasi yang diperlukan dari data.
Split data- Pisahkan data menjadi kumpulan data pelatihan dan pengujian. Data uji akan digunakan untuk mengevaluasi prediksi algoritma / Model (setelah pembelajaran mesin) dan untuk memeriksa ulang efisiensi proses pembelajaran.
Compile the model- Menyusun algoritma / model, sehingga dapat digunakan lebih lanjut untuk belajar dengan melatih dan terakhir melakukan prediksi. Langkah ini mengharuskan kita untuk memilih fungsi kerugian dan Pengoptimal. Fungsi loss dan Optimizer digunakan pada tahap pembelajaran untuk mencari error (deviasi dari output aktual) dan melakukan optimasi sehingga error tersebut dapat diminimalisir.
Fit the model - Proses pembelajaran yang sebenarnya akan dilakukan pada tahap ini menggunakan kumpulan data pelatihan.
Predict result for unknown value - Memprediksi keluaran untuk data masukan yang tidak diketahui (selain data pelatihan dan pengujian yang ada)
Evaluate model - Mengevaluasi model dengan memprediksi output untuk data pengujian dan membandingkan prediksi dengan hasil aktual dari data pengujian.
Freeze, Modify or choose new algorithm- Periksa apakah evaluasi model berhasil. Jika ya, simpan algoritme untuk tujuan prediksi di masa mendatang. Jika tidak, maka ubah atau pilih algoritme / model baru dan terakhir, latih lagi, prediksi, dan evaluasi model. Ulangi proses tersebut hingga algoritma (model) terbaik ditemukan.
Langkah-langkah di atas dapat direpresentasikan menggunakan diagram alir di bawah ini -