Ini adalah pertanyaan utama, berkenaan dengan teori jaringan saraf:
Mengapa kita harus menormalkan input untuk jaringan saraf?
Saya mengerti bahwa kadang-kadang, ketika misalnya nilai input non-numerik transformasi tertentu harus dilakukan, tetapi ketika kita memiliki input numerik? Mengapa angkanya harus dalam interval tertentu?
Apa yang akan terjadi jika data tidak dinormalisasi?
Jawaban:
Ini dijelaskan dengan baik di sini .
sumber
Dalam jaringan saraf, sebaiknya tidak hanya menormalkan data tetapi juga untuk menskalakannya. Ini dimaksudkan untuk lebih cepat mendekati ke minimum global pada permukaan kesalahan. Lihat gambar-gambar berikut:
Gambar diambil dari kursus tentang jaringan saraf. Penulis kursus adalah Geoffrey Hinton.
sumber
Beberapa input ke NN mungkin tidak memiliki rentang nilai yang 'didefinisikan secara alami'. Sebagai contoh, nilai rata-rata mungkin lambat, tetapi terus meningkat dari waktu ke waktu (misalnya sejumlah catatan dalam database).
Dalam hal demikian, memasukkan nilai mentah ini ke jaringan Anda tidak akan bekerja dengan baik. Anda akan mengajarkan jaringan Anda tentang nilai-nilai dari bagian bawah rentang, sementara input aktual akan dari bagian yang lebih tinggi dari kisaran ini (dan sangat mungkin di atas rentang, bahwa jaringan telah belajar untuk bekerja dengannya).
Anda harus menormalkan nilai ini. Misalnya Anda bisa memberi tahu jaringan berapa nilai telah berubah sejak input sebelumnya. Peningkatan ini biasanya dapat didefinisikan dengan probabilitas tinggi dalam rentang tertentu, yang membuatnya menjadi input yang baik untuk jaringan.
sumber
Melihat jaringan saraf dari luar, itu hanya fungsi yang mengambil beberapa argumen dan menghasilkan hasil. Seperti semua fungsi, ia memiliki domain (yaitu serangkaian argumen hukum). Anda harus menormalkan nilai yang ingin Anda sampaikan ke jaringan syaraf untuk memastikannya ada di domain. Seperti semua fungsi, jika argumen tidak ada dalam domain, hasilnya tidak dijamin sesuai.
Perilaku yang tepat dari neural net pada argumen di luar domain tergantung pada implementasi neural net. Namun secara keseluruhan, hasilnya tidak berguna jika argumen tidak ada dalam domain.
sumber
Ada 2 Alasan mengapa kita harus Menormalkan Fitur Input sebelum diumpankan ke Neural Network:
Alasan 1 : Jika a
Feature
dalamDataset
skala besar dibandingkan dengan yang lain maka fitur berskala besar ini menjadi mendominasi dan sebagai akibatnya, Prediksi Jaringan Saraf tidak akan Akurat.Contoh : Dalam hal Data Karyawan, jika kita mempertimbangkan Umur dan Gaji, Usia akan menjadi Angka Dua Digit sedangkan Gaji bisa 7 atau 8 Digit (1 Juta, dll.). Dalam Kasus itu, Gaji akan Mendominasi Prediksi Jaringan Saraf Tiruan. Tetapi jika kita Menormalkan Fitur-fitur tersebut, Nilai dari kedua Fitur tersebut akan berada dalam Rentang dari (0 hingga 1).
Alasan 2 : Propagasi Depan Jaringan Saraf Tiruan melibatkan Produk Dot Berat dengan Fitur Input. Jadi, jika Nilai-nilainya sangat tinggi (untuk Data Gambar dan Non-Gambar), Penghitungan Output membutuhkan banyak Waktu Perhitungan serta Memori. Sama halnya dengan Back Propagation. Akibatnya, Model Converges lambat, jika Input tidak dinormalisasi.
Contoh : Jika kita melakukan Klasifikasi Gambar, Ukuran Gambar akan sangat besar, karena Nilai setiap Pixel berkisar dari 0 hingga 255. Normalisasi dalam kasus ini sangat penting.
Disebutkan di bawah ini adalah contoh di mana Normalisasi sangat penting:
sumber
Saya percaya jawabannya tergantung pada skenario.
Anggap NN (neural network) sebagai operator F, sehingga F (input) = output . Dalam kasus di mana hubungan ini linier sehingga F (A * input) = A * output , maka Anda dapat memilih untuk membiarkan input / output tidak normal dalam bentuk mentah, atau menormalkan keduanya untuk menghilangkan A. Jelas asumsi linearitas ini adalah dilanggar dalam tugas klasifikasi, atau hampir semua tugas yang menghasilkan probabilitas, di mana F (input A *) = output 1 *
Dalam praktiknya, normalisasi memungkinkan jaringan yang tidak cocok untuk menjadi layak, yang sangat penting bagi para eksperimen / programmer. Namun demikian, dampak tepat normalisasi akan tergantung tidak hanya pada arsitektur jaringan / algoritma, tetapi juga pada statistik sebelum input dan output.
Terlebih lagi, NN sering diterapkan untuk memecahkan masalah yang sangat sulit dengan cara kotak hitam, yang berarti masalah yang mendasari mungkin memiliki formulasi statistik yang sangat buruk, sehingga sulit untuk mengevaluasi dampak normalisasi, menyebabkan keuntungan teknis (menjadi fittable) untuk mendominasi dampaknya pada statistik.
Dalam pengertian statistik, normalisasi menghilangkan variasi yang diyakini non-kausal dalam memprediksi output, sehingga untuk mencegah NN mempelajari variasi ini sebagai prediktor ( NN tidak melihat variasi ini, maka tidak dapat menggunakannya ).
sumber
Saat Anda menggunakan fitur input yang tidak dinormalisasi, fungsi loss cenderung memiliki lembah yang sangat panjang. Ketika mengoptimalkan dengan gradient descent, ini menjadi masalah karena gradien akan curam dengan menghormati beberapa parameter. Itu mengarah ke osilasi besar di ruang pencarian, saat Anda memantul di antara lereng yang curam. Untuk mengimbanginya, Anda harus menstabilkan optimasi dengan tingkat pembelajaran yang kecil.
Pertimbangkan fitur x1 dan x2, di mana masing-masing berkisar dari 0 hingga 1 dan 0 hingga 1 juta. Ternyata rasio untuk parameter yang sesuai (katakanlah, w1 dan w2) juga akan besar.
Normalisasi cenderung membuat fungsi kerugian lebih simetris / bulat. Ini lebih mudah untuk dioptimalkan karena gradien cenderung mengarah ke minimum global dan Anda dapat mengambil langkah-langkah yang lebih besar.
sumber
Alasan normalisasi diperlukan adalah karena jika Anda melihat bagaimana langkah adaptif berlangsung di satu tempat dalam domain fungsi, dan Anda cukup mengangkut masalahnya ke langkah yang sama yang diterjemahkan oleh beberapa nilai besar ke beberapa arah dalam domain, maka Anda mendapatkan hasil yang berbeda. Itu bermuara pada pertanyaan mengadaptasi sepotong linear ke titik data. Seberapa banyak benda harus bergerak tanpa berputar dan berapa banyak yang harus diputar sebagai tanggapan terhadap satu titik pelatihan itu? Tidak masuk akal untuk memiliki prosedur adaptasi yang berubah di berbagai bagian domain! Jadi diperlukan normalisasi untuk mengurangi perbedaan dalam hasil pelatihan. Saya belum menulis ini, tetapi Anda bisa melihat matematika untuk fungsi linier sederhana dan bagaimana itu dilatih oleh satu titik pelatihan di dua tempat yang berbeda. Masalah ini mungkin telah diperbaiki di beberapa tempat, tetapi saya tidak terbiasa dengan mereka. Di ALNs, masalahnya telah diperbaiki dan saya dapat mengirimi Anda makalah jika Anda menulis ke wwarmstrong AT shaw.ca
sumber
Lapisan tersembunyi digunakan sesuai dengan kompleksitas data kami. Jika kita memiliki data input yang dapat dipisahkan secara linier maka kita tidak perlu menggunakan lapisan tersembunyi misalnya gerbang ATAU tetapi jika kita memiliki data yang tidak dapat dipisahkan secara linier maka kita perlu menggunakan lapisan tersembunyi misalnya gerbang logika ExOR. Jumlah node yang diambil pada setiap layer tergantung pada tingkat validasi silang dari output kami.
sumber