Apakah input ke Jaringan Saraf Tiruan harus dalam [-1,1]?

8

Saya ingin membuat ramalan cuaca menggunakan Neural Networks. Semua contoh yang saya lihat hanya menggunakan nilai [-1,1] sebagai input. Apakah mungkin untuk menggunakan nilai yang lebih besar (seperti tekanan udara, derajat calcius beberapa hari terakhir, ...) sebagai input dan mendapatkan angka sebagai output?

Terima kasih

pengguna1406177
sumber
Berbicara secara umum untuk algoritma klasifikasi dan bukan hanya jaringan saraf, variabel apa pun seperti yang Anda sarankan dapat digunakan untuk klasifikasi. Variabel apa pun yang membantu memisahkan kelas harus dimasukkan. Bahkan calssifier pohon biner menggunakan dikotomisasi variabel kontinu dengan menemukan titik split.
Michael R. Chernick

Jawaban:

9

Anda bisa menormalkan nilai-nilai sehingga Anda gunakan, misalnya,

APAP0AP1AP0

di mana adalah tekanan udara saat ini, adalah nilai tekanan udara yang ingin Anda kirim ke , dan adalah nilai tekanan udara yang ingin Anda kirim ke .APAP00AP11

Tidak apa-apa jika input Anda sesekali keluar sedikit .[1,1]

Berbahaya jika input biasanya kecil, tetapi terkadang memiliki beberapa nilai ekstrem. Maka mungkin lebih baik untuk membagi input menjadi lebih dari satu nilai input, atau untuk menghapus outlier dan menerima bahwa jaringan saraf memiliki konteks penerapan yang terbatas. Pengecilan ulang sehingga outlier antara dan tidak akan memperbaiki masalah.11

Douglas Zare
sumber
Jadi AP0 dan AP1 seperti batas saya untuk nilai tekanan udara?
user1406177
1
Mereka tidak harus menjadi batas. Mereka adalah nilai referensi sehingga sebagian besar nilai diskalakan ke kisaran yang Anda inginkan. Jadi, untuk suhu, Anda bisa menggunakan , , meskipun kadang-kadang lebih dari atau di bawah derajat Celcius. Tidak mengerikan jika kisarannya lebih besar dengan faktor , tetapi cobalah untuk tidak turun dengan faktor atau mungkin memperlambat pelatihan. T1=35T0=5355210
Douglas Zare
Secara teoritis, penskalaan data Anda seharusnya tidak membuat perbedaan untuk jaringan saraf. Ini hanya berarti bahwa bobot optimal juga akan diskalakan. Dalam prakteknya itu bisa membuat perbedaan karena representasi floating point tidak tepat, yaitu ketika Anda memiliki input besar, bobot Anda akan sangat kecil dan sedikit perubahan mungkin tidak dapat diwakili. Di sisi lain, Anda biasanya memiliki fungsi aktivasi sigmoid, yang cenderung jenuh untuk input besar dan kemudian hanya akan menyesuaikan secara perlahan selama pelatihan. Itu artinya, penskalaan data Anda sering mempercepat pelatihan.
alfa
1
Metode pelatihan tidak invarian skala, sehingga penskalaan mempengaruhi seberapa cepat Anda melatih bahkan jika Anda tidak menjenuhkan node.
Douglas Zare
1
Penskalaan data TIDAK membuat perbedaan. 1. Bidang dengan nilai yang lebih besar pada awalnya akan memiliki dampak yang lebih besar pada jaringan daripada bidang yang lebih kecil, karena jaringan diinisialisasi dengan angka acak yang digambar secara seragam. Seiring waktu pembaruan berat akan meningkatkan fitur tetapi ini membutuhkan lebih banyak usaha. 2. Keturunan gradien memiliki waktu yang sangat sulit dengan data yang tidak dinormalkan karena squashes kurva kesalahan membuatnya elips dan dengan demikian sangat lambat untuk dinavigasi. Jadi jika Anda menggunakan gradient descent, ini bisa menjadi masalah besar. 3. Fungsi sigmoid memiliki gradien yang sangat kecil untuk input besar (dan yang sangat negatif).
Simon