Melatih Jaringan Neural

Sekarang kita akan belajar bagaimana melatih jaringan saraf. Kita juga akan mempelajari algoritma propagasi mundur dan backward pass dalam Python Deep Learning.

Kita harus menemukan nilai bobot yang optimal dari jaringan neural untuk mendapatkan keluaran yang diinginkan. Untuk melatih jaringan neural, kami menggunakan metode penurunan gradien berulang. Kami mulai awalnya dengan inisialisasi acak bobot. Setelah inisialisasi acak, kami membuat prediksi pada beberapa subset data dengan proses propagasi maju, menghitung fungsi biaya C yang sesuai, dan memperbarui setiap bobot w dengan jumlah yang sebanding dengan dC / dw, yaitu turunan dari fungsi biaya wrt bobot. Konstanta proporsionalitas dikenal sebagai kecepatan pembelajaran.

Gradien dapat dihitung secara efisien menggunakan algoritma propagasi balik. Pengamatan kunci dari propagasi mundur atau prop mundur adalah bahwa karena aturan rantai diferensiasi, gradien pada setiap neuron dalam jaringan saraf dapat dihitung dengan menggunakan gradien pada neuron, yang memiliki tepi keluar. Karenanya, kami menghitung gradien secara terbalik, yaitu, pertama-tama hitung gradien dari lapisan keluaran, kemudian lapisan paling atas yang tersembunyi, diikuti oleh lapisan tersembunyi sebelumnya, dan seterusnya, diakhiri pada lapisan masukan.

Algoritme propagasi balik sebagian besar diimplementasikan menggunakan gagasan grafik komputasi, di mana setiap neuron diperluas ke banyak node dalam grafik komputasi dan melakukan operasi matematika sederhana seperti penjumlahan, perkalian. Grafik komputasi tidak memiliki bobot di tepinya; semua bobot ditetapkan ke node, sehingga bobot menjadi node mereka sendiri. Algoritma propagasi mundur kemudian dijalankan pada grafik komputasi. Setelah penghitungan selesai, hanya gradien dari node bobot yang diperlukan untuk pembaruan. Gradien lainnya dapat dibuang.

Teknik Pengoptimalan Penurunan Gradien

Satu fungsi pengoptimalan yang umum digunakan untuk menyesuaikan bobot sesuai dengan error yang ditimbulkannya disebut "penurunan gradien".

Gradien adalah nama lain untuk kemiringan, dan kemiringan, pada grafik xy, menunjukkan bagaimana dua variabel terkait satu sama lain: kenaikan selama proses, perubahan jarak selama perubahan waktu, dll. Dalam hal ini, kemiringan adalah rasio antara kesalahan jaringan dan bobot tunggal; yaitu, bagaimana kesalahan berubah karena bobotnya bervariasi.

Lebih tepatnya, kami ingin menemukan bobot mana yang menghasilkan kesalahan paling kecil. Kami ingin menemukan bobot yang dengan benar mewakili sinyal yang terkandung dalam data masukan, dan menerjemahkannya ke klasifikasi yang benar.

Saat jaringan neural belajar, ia secara perlahan menyesuaikan banyak bobot sehingga mereka dapat memetakan sinyal ke makna dengan benar. Rasio antara Kesalahan jaringan dan masing-masing bobot tersebut adalah turunan, dE / dw yang menghitung sejauh mana sedikit perubahan dalam bobot menyebabkan sedikit perubahan pada kesalahan.

Setiap bobot hanyalah satu faktor dalam jaringan dalam yang melibatkan banyak transformasi; sinyal bobot melewati aktivasi dan penjumlahan di beberapa lapisan, jadi kita menggunakan aturan rantai kalkulus untuk bekerja kembali melalui aktivasi dan keluaran jaringan. Ini membawa kita ke bobot yang dimaksud, dan hubungannya dengan kesalahan keseluruhan.

Diberikan dua variabel, kesalahan dan bobot, dimediasi oleh variabel ketiga, activation, yang dilalui beban. Kita dapat menghitung bagaimana perubahan bobot memengaruhi perubahan kesalahan dengan terlebih dahulu menghitung bagaimana perubahan aktivasi memengaruhi perubahan Kesalahan, dan bagaimana perubahan bobot memengaruhi perubahan aktivasi.

Ide dasar dalam pembelajaran mendalam tidak lebih dari itu: menyesuaikan bobot model sebagai respons atas kesalahan yang dihasilkannya, hingga Anda tidak dapat mengurangi kesalahan itu lagi.

Jaring dalam berlatih perlahan jika nilai gradien kecil dan cepat jika nilainya tinggi. Setiap ketidakakuratan dalam pelatihan menyebabkan keluaran yang tidak akurat. Proses melatih jaring dari keluaran kembali ke masukan disebut propagasi balik atau back prop. Kita tahu bahwa propagasi maju dimulai dengan input dan bekerja ke depan. Back prop melakukan kebalikan / kebalikannya menghitung gradien dari kanan ke kiri.

Setiap kali kami menghitung gradien, kami menggunakan semua gradien sebelumnya hingga titik itu.

Mari kita mulai dari sebuah simpul di lapisan keluaran. Tepi menggunakan gradien pada simpul itu. Saat kita kembali ke lapisan tersembunyi, itu menjadi lebih kompleks. Hasil perkalian dua angka antara 0 dan 1 menghasilkan angka yang lebih kecil. Nilai gradien semakin kecil dan akibatnya alat penyangga belakang membutuhkan banyak waktu untuk dilatih dan akurasi berkurang.

Tantangan dalam Algoritma Pembelajaran Mendalam

Ada tantangan tertentu untuk jaringan neural dangkal dan jaringan neural dalam, seperti overfitting dan waktu komputasi. DNN dipengaruhi oleh overfitting karena penggunaan lapisan abstraksi tambahan yang memungkinkan mereka membuat model dependensi yang jarang ada dalam data pelatihan.

Regularizationmetode seperti drop out, penghentian awal, augmentasi data, pembelajaran transfer diterapkan selama pelatihan untuk memerangi overfitting. Regularisasi pelepasan secara acak menghilangkan unit dari lapisan tersembunyi selama pelatihan yang membantu dalam menghindari ketergantungan yang jarang terjadi. DNN mempertimbangkan beberapa parameter pelatihan seperti ukuran, yaitu jumlah lapisan dan jumlah unit per lapisan, kecepatan pembelajaran, dan bobot awal. Menemukan parameter yang optimal tidak selalu praktis karena tingginya biaya waktu dan sumber daya komputasi. Beberapa peretasan seperti batching dapat mempercepat komputasi. Daya pemrosesan GPU yang besar telah secara signifikan membantu proses pelatihan, karena matriks dan komputasi vektor yang diperlukan dijalankan dengan baik di GPU.

Keluar

Putus sekolah adalah teknik regularisasi yang populer untuk jaringan saraf. Jaringan saraf dalam sangat rentan terhadap overfitting.

Sekarang mari kita lihat apa itu dropout dan bagaimana cara kerjanya.

Menurut Geoffrey Hinton, salah satu pelopor Deep Learning, 'Jika Anda memiliki jaringan saraf yang dalam dan tidak terlalu pas, Anda mungkin harus menggunakan yang lebih besar dan menggunakan putus sekolah'.

Dropout adalah teknik di mana selama setiap iterasi penurunan gradien, kami menjatuhkan satu set node yang dipilih secara acak. Ini berarti bahwa kami mengabaikan beberapa node secara acak seolah-olah tidak ada.

Setiap neuron disimpan dengan probabilitas q dan dijatuhkan secara acak dengan probabilitas 1-q. Nilai q mungkin berbeda untuk setiap lapisan di jaringan saraf. Nilai 0,5 untuk lapisan tersembunyi, dan 0 untuk lapisan masukan berfungsi dengan baik pada berbagai tugas.

Selama evaluasi dan prediksi, tidak ada dropout yang digunakan. Keluaran tiap neuron dikalikan dengan q sehingga masukan ke lapisan berikutnya memiliki nilai yang diharapkan sama.

Ide di balik Dropout adalah sebagai berikut - Dalam jaringan saraf tanpa regularisasi dropout, neuron mengembangkan ketergantungan satu sama lain yang menyebabkan overfitting.

Trik implementasi

Pelepasan diterapkan di pustaka seperti TensorFlow dan Pytorch dengan menjaga keluaran neuron yang dipilih secara acak sebagai 0. Artinya, meskipun neuron tersebut ada, keluarannya ditimpa sebagai 0.

Penghentian Awal

Kami melatih jaringan saraf menggunakan algoritme berulang yang disebut penurunan gradien.

Ide di balik penghentian awal bersifat intuitif; kami menghentikan pelatihan ketika kesalahan mulai meningkat. Di sini, dengan kesalahan, yang kami maksud adalah kesalahan yang diukur pada data validasi, yang merupakan bagian dari data pelatihan yang digunakan untuk menyetel hyper-parameter. Dalam kasus ini, hyper-parameternya adalah kriteria stop.

Augmentasi Data

Proses di mana kita meningkatkan kuantum data yang kita miliki atau menambahnya dengan menggunakan data yang ada dan menerapkan beberapa transformasi padanya. Transformasi yang tepat digunakan bergantung pada tugas yang ingin kita capai. Selain itu, transformasi yang membantu jaringan saraf bergantung pada arsitekturnya.

Misalnya, dalam banyak tugas computer vision seperti klasifikasi objek, teknik augmentasi data yang efektif adalah menambahkan titik data baru yang dipotong atau diterjemahkan dari data asli.

Ketika komputer menerima gambar sebagai input, itu mengambil larik nilai piksel. Katakanlah seluruh gambar bergeser ke kiri sebesar 15 piksel. Kami menerapkan banyak perubahan berbeda ke arah yang berbeda, menghasilkan kumpulan data yang diperbesar berkali-kali lipat ukuran kumpulan data asli.

Transfer Pembelajaran

Proses mengambil model terlatih dan "menyempurnakan" model dengan kumpulan data kita sendiri disebut pembelajaran transfer. Ada beberapa cara untuk melakukan ini. Beberapa cara dijelaskan di bawah ini -

  • Kami melatih model terlatih pada set data yang besar. Kemudian, kami menghapus lapisan terakhir jaringan dan menggantinya dengan lapisan baru dengan bobot acak.

  • Kami kemudian membekukan bobot semua lapisan lainnya dan melatih jaringan secara normal. Di sini, membekukan lapisan tidak mengubah bobot selama penurunan gradien atau pengoptimalan.

Konsep di balik ini adalah bahwa model terlatih akan bertindak sebagai ekstraktor fitur, dan hanya lapisan terakhir yang akan dilatih untuk tugas saat ini.