Dalam sebagian besar contoh yang saya lihat sejauh ini dari jaringan saraf, jaringan digunakan untuk klasifikasi dan node ditransformasikan dengan fungsi sigmoid. Namun, saya ingin menggunakan jaringan saraf untuk menampilkan nilai riil kontinu (secara realistis outputnya biasanya berada pada kisaran -5 hingga +5).
Pertanyaan saya adalah:
1. Should I still scale the input features using feature scaling? What range?
2. What transformation function should I use in place of the sigmoid?
Saya awalnya ingin mengimplementasikannya PyBrain yang menjelaskan jenis - jenis lapisan ini .
Jadi saya berpikir bahwa saya harus memiliki 3 layer untuk memulai (input, hidden, dan layer output) yang semuanya adalah layer linear? Apakah itu cara yang masuk akal? Atau sebagai alternatif, bisakah saya "meregangkan" fungsi sigmoid pada rentang -5 hingga 5?
regression
neural-networks
Pengguna
sumber
sumber
Jawaban:
1 . Haruskah saya masih skala fitur input menggunakan penskalaan fitur? Kisaran apa?
Penskalaan tidak memperburuk keadaan. Baca jawaban ini dari jaringan saraf Sarle. FAQ: Subjek: Haruskah saya menormalkan / menskalakan / mengubah skala data? .
2 . Apa fungsi transformasi yang harus saya gunakan sebagai pengganti sigmoid?
Anda bisa menggunakan logistic sigmoid atau tanh sebagai fungsi aktivasi. Itu tidak masalah. Anda tidak perlu mengubah algoritma pembelajaran. Anda hanya perlu mengukur output pelatihan yang Anda setel ke kisaran fungsi aktivasi lapisan output ([ 0 , 1 ] [ - 1 , 1 ] [ - 5 , 5 ]
sumber
Penafian: pendekatan yang disajikan tidak layak untuk nilai kontinu, tetapi saya percaya menanggung beberapa bobot dalam pengambilan keputusan untuk proyek Smarty77 membawa poin yang baik tentang pemanfaatan fungsi sigmoid yang diperbesar ulang. Secara inheren, fungsi sigmoid menghasilkan probabilitas, yang menggambarkan tingkat keberhasilan pengambilan sampel (yaitu 95 dari 100 foto dengan fitur-fitur ini berhasil 'anjing'). Hasil akhir yang dideskripsikan adalah hasil biner, dan pelatihan, menggunakan 'binary cross-entropy' menggambarkan proses pemisahan hasil yang bertentangan secara diametris, yang secara inheren menghambat hasil dalam kisaran menengah. Kontinum dari output hanya ada untuk penskalaan berdasarkan jumlah sampel (yaitu hasil 0,9761 berarti bahwa 9761 dari 10.000 sampel menampilkan mereka atau triat serupa adalah 'anjing'), tetapi setiap hasil itu sendiri harus tetap dianggap biner dan tidak granular semena-mena. Dengan demikian, itu tidak boleh keliru dan diterapkan seperti orang akan bilangan real dan mungkin tidak berlaku di sini. Meskipun saya tidak yakin dengan pemanfaatan jaringan, saya akan menormalkan vektor keluaran wrt itu sendiri. Ini dapat dilakukan dengan softmax. Ini juga akan membutuhkan ada 11 output linear (bin) dari jaringan (satu untuk setiap output -5 hingga +5), satu untuk setiap kelas. Ini akan memberikan nilai jaminan untuk setiap 'bin' menjadi jawaban yang benar. Arsitektur ini akan dapat dilatih dengan pengkodean satu-panas, dengan angka 1 menunjukkan tempat sampah yang benar. Hasilnya dapat ditafsirkan kemudian dengan cara, seperti strategi serakah atau sampling probabilistik. Namun, untuk menyusunnya kembali menjadi variabel kontinu, kepastian setiap indeks dapat digunakan sebagai bobot untuk menempatkan penanda pada garis bilangan (mirip dengan perilaku unit sigmoid), tetapi ini juga menyoroti masalah utama: jika jaringan cukup yakin hasilnya adalah -2 atau +3, tetapi sangat yakin bahwa itu bukan hal lain, apakah +1 merupakan hasil yang layak? Terima kasih atas pertimbangan Anda. Semoga berhasil di proyek Anda.
sumber