Mengapa kita harus menormalkan input untuk jaringan saraf tiruan?

151

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?

karla
sumber
1
Saya memberikan suara untuk menutup pertanyaan ini sebagai di luar topik karena itu milik Stats SE atau AI SE.
nbro

Jawaban:

101

Ini dijelaskan dengan baik di sini .

Jika variabel input digabungkan secara linier, seperti dalam MLP [multilayer perceptron], maka jarang diperlukan standar untuk input, setidaknya secara teori. Alasannya adalah bahwa setiap skala ulang vektor input dapat dibatalkan secara efektif dengan mengubah bobot dan bias yang sesuai, membuat Anda dengan output yang sama persis seperti yang Anda miliki sebelumnya. Namun, ada berbagai alasan praktis mengapa standardisasi input dapat membuat pelatihan lebih cepat dan mengurangi kemungkinan terjebak dalam optima lokal. Juga, pembusukan berat dan estimasi Bayesian dapat dilakukan dengan lebih mudah dengan input standar.

menemukan
sumber
2
Hai, Dalam MLP, tidak dapat menstandarkan fitur saat menggunakan tingkat pembelajaran konstan menyebabkan kelebihan / kekurangan kompensasi dalam koreksi backpropagation untuk dimensi yang berbeda? Saya bertanya-tanya dari posting berikut apakah ini eksklusif untuk CNN, atau apakah MLP mungkin berbagi masalah ini: stats.stackexchange.com/questions/185853/…
Austin
Masalah: Memilih Gradient Descent. proses mungkin memakan waktu lebih lama. Mengapa? Ketika fitur memiliki skala yang berbeda (x1 = 0-1 dan x2 = 0..1000), permukaan fungsi kesalahan dapat menjadi memanjang. Artinya: skala yang berbeda untuk dims yang berbeda (w1, w2). Tetapi tingkat belajar adalah SAMA untuk semua dims -> langkah dalam memanjang dim (w2) sangat kecil sampai mencapai min lokal. Masalah: Tidak dapat memasukkan LR, karena akan melewatkan min lokal di redup lainnya (w1). Lihat demo di youtube.com/watch?reload=9&v=UIp2CMI0748
Dekel
Berikut ini adalah contoh linear, di mana semuanya sangat buruk tanpa penskalaan: stackoverflow.com/q/59319643 . Ada yang tahu kenapa?
AlwaysLearning
62

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: permukaan kesalahan sebelum dan sesudah normalisasi

permukaan kesalahan sebelum dan sesudah penskalaan

Gambar diambil dari kursus tentang jaringan saraf. Penulis kursus adalah Geoffrey Hinton.

Yuriy Zaletskyy
sumber
14
Pasti menyenangkan bagi Anda untuk memberi penghargaan pada penulis grafik yang Anda pasang. Grafiknya jelas diambil dari kursus coursera Geoffrey Hinton .
Ricardo Cruz
5
Saya menemukan video ini sangat membantu dalam menjelaskan diagram di atas, yang dengan sendirinya tidak jelas bagi saya.
chris838
21

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.

Mchl
sumber
Petunjuk yang bagus tentang normalisasi pada set input sebelumnya. Ini membebaskan pengguna dari mendefinisikan faktor normalisasi sewenang-wenang. Namun saya menduga jaring akan melatih lebih akurat jika faktor normalisasi adalah konstanta global yang diterapkan pada setiap vektor input.
davide
11

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.

Oswald
sumber
16
Jika Anda mengambil fungsi aktivasi yang biasa (ReLu atau Sigmoid), domain selalu menjadi seluruh ruang R ^ n. Jadi ini bukan alasan untuk menormalkan data.
Joker123
1
Ini juga tidak menjelaskan mengapa gambar dinormalisasi, karena mereka sudah memiliki domain 0-255
DollarAkshay
4

Ada 2 Alasan mengapa kita harus Menormalkan Fitur Input sebelum diumpankan ke Neural Network:

Alasan 1 : Jika a Featuredalam Datasetskala 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:

  1. K-Means
  2. K-Nearest-Neighbors
  3. Analisis Komponen Utama (PCA)
  4. Keturunan Gradien
Dukungan Tensorflow
sumber
2

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 ).

seharusnya lihat
sumber
2

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.

crypdick
sumber
1

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

William W. Armstrong
sumber
-9

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.

Basant Bhardwaj
sumber