Bagaimana cara mendapatkan output berkesinambungan yang bernilai nyata dari Neural Network?


13

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?


1
Tentu Anda dapat menggunakan sigmoid . Misalnya mulai dari fungsi logistik, kalikan dengan 10, kurangi 5 ...[-,][-5,5]
cbeleites mendukung Monica

Apakah ada alasan tertentu Anda menghindari menggunakan dua lapisan tersembunyi? Itu tampaknya menjadi cara termudah untuk mencapai mendapatkan output berkesinambungan yang bernilai nyata dari jaringan saraf. "Setiap fungsi dapat diperkirakan dengan akurasi sewenang-wenang oleh jaringan dengan dua lapisan tersembunyi" (disebutkan dalam catatan dari slide teks pembelajaran mesin Mitchell 26: cs.cmu.edu/afs/cs.cmu.edu/project/theo-20/ www / mlbook / ch4.pdf )
Chris Simokat

@ ChrisSimokat: Tidak, tapi sebagian besar dari apa yang saya baca sejauh ini menyarankan satu lapisan tersembunyi sebagai titik awal yang masuk akal. Bisakah satu jaringan lapisan tersembunyi tidak memperkirakan fungsi apa pun?
Pengguna

1
@ ChrisSimokat: Mungkin saya kehilangan sesuatu tapi saya pikir satu layer tersembunyi tidak sama dengan "single layer perceptron", bukan?
Pengguna

1
Tidak, Anda tidak melewatkan apa pun. Saya hanya tampaknya tidak membaca dengan cukup teliti tentang hal itu.
Chris Simokat

Jawaban:


12

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]


Apa cara yang benar untuk skala output jaringan saraf ke kisaran [-5,5]?
Pengguna

3
Untuk skala elemen e[Sebuah,b][c,d]e-Sebuahb-Sebuah(d-c)+c

2
Tetapi karena sigmoid adalah non-linear, dengan distribusi sampel yang seragam nilai sigmoid kita mungkin akan mendapatkan sesuatu yang mendekati 1 atau mendekati 0. Yang artinya kita harus mempelajari jaringan kita untuk memilih nilai di tengah dengan lebih hati-hati. Apakah penskalaan sigmoid + benar-benar pilihan yang tepat?
Smarty77

0

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.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.